je passer au crible quelques traces de réseau et remarqué sur ma propre machine que lorsque je me connecte sur HTTP, les paquets ressemblent à:charge utile de données dans un environnement TCP ack
client --> server: GET
server --> client: tcp ack
server --> client: HTTP response
client --> server: tcp ack
Cependant, je regardais un peu CIFS (SMB) traces que j'ai sauvées il y a quelques années. Je vois des choses comme:
client --> server: Create Request
server --> client: Create response (This packet also acks the request)
À un niveau élevé, je me demande pourquoi la différence - ce qui est à l'origine des comportements différents? Qu'est-ce qui détermine si la réponse de l'application est placée sur la requête ack ou un autre paquet: l'application ou le système d'exploitation?
pouvez-vous spécifier le retardateur dans les paramètres d'initialisation TCP? – NHDaly
Vous pouvez le désactiver avec l'option TCP_QUICKACK avec setsockopt sous IPPROTO_TCP (btw non portable). Mais changer la valeur peut ne pas être possible car je crois que c'est codé en dur à moins qu'il y ait un sysctl nouvellement ajouté pour cela (ou quelque chose de similaire). – Milan
Après avoir défini l'option de socket TCP pour désactiver TCP Quick ACK, je n'ai toujours pas reçu le paquet combiné répondu: opt = 0; setsockopt (sockfd, IPPROTO_TCP, TCP_QUICKACK, (char *) & opt, sizeof (opt)); –