Je viens de lire l'article. Merci pour la reference.
La plupart du temps, ce genre d'article s'attarde sur l'optimisation du cote "client" pour optimiser l'utilisation des ressources internet (download par exemple).
Dans mon cas, la question se pose cote serveur. Je vais tacher d'etre plus clair. Imaginons le scenario simple suivant, d'une requete HTTP, vu au niveau TCP
1. Client --> [SYN] --> Server
2. Client <-- [SYN|ACK] <-- Server
3. Client --> [ACK] --> Server
Jusque la, triple handshake TCP classique. Ensuite:
4. Client --> GET /index.html [PSH|ACK] --> Server
5. Client <-- [ACK] <-- Server
6. Client <-- HTTP1/0 200 OK [ACK] <-- Server
Puis fin de la connexion, je passe les details.
Toute ma question repose sur l'etape 5:
CAS 1: Quand je mets le TcpDelAckTicks a 0, cet ACK du server est immediat, juste apres le GET du client. Les donnees en elles meme (le fichier index.html) arrivent quelques ms apres.
CAS 2: Quand je mets le TcpDelAckTicks a 2 (valeur par defaut), les etapes 5 et 6 n'en font plus qu'une, c'est a dire que le serveur va avoir le temps d'ACKnowledger la requete tout en lui renvoyant les donnees.
Pour moi, il n'y a pas eu optimisation a envoyer un ACK de maniere immmediate apres le GET (CAS 1), le temps de reponse global pour la requete, vu du client, n'est en rien ameliore.
La question qui se trouve derriere est la suivante:
Les donnees de l'etape 4 (le GET) sont-elles traitees par la couche applicative (le serveur web) immediatement a la reception, ou la stack IP ne remonte-t-elle ces donnees a la couche applicative qu'une fois qu'elle les a ACKnowledger (auquel cas il y a potentiellement un delai de 200ms) ?
Tout ca est assez technique, mais tres interessant.