2016-05-20 11 views
0

Ich simuliere HTTP-Client-Verkehr mit RAW-Socket. Ich sende ein SYN-Paket und hole das SYN-ACK vom Server. Schließlich sende ich ein ACK + Anfragepaket und warte auf die Antwort. Ich bemerkte, dass bei der Verwendung von wget oder curl der erste ACK und die Anfrage in zwei verschiedenen Paketen gesendet werden. Warum ist das und ist das relevant für irgendetwas?Warum wird eine HTTP-Anfrage nach dem ersten Paket gesendet?

+0

Ich denke, Ihre Frage wird beantwortet [hier] (http://stackoverflow.com/questions/3761276/when-should-i-use-tcp-nodelay-and-when-tcp-cork) – DaSourcerer

+0

Es ist weil das ist die Art, wie sie arbeiten, und nein, es ist für nichts relevant. – EJP

Antwort

0

Eine Clientanwendung, die einen TCP-Socket verwendet, ruft in der Regel socket() auf, dann connect() und send(). Die Funktion connect() stellt die TCP-Verbindung her, und dazu benötigt das TCP-Protokoll 3 Pakete: SYN, SYN + ACK, ACK. Danach sendet der Aufruf send() die ersten Daten. Daher werden die ACK und Daten getrennt gesendet.

Ich denke, Ihr Paketfluss erfüllt wahrscheinlich das TCP-Protokoll (siehe https://tools.ietf.org/html/rfc793), aber es ist ungewöhnlich.

Verwandte Themen