2016-05-20 11 views
0

RAWソケットを使ったhttpクライアントのトラフィックをシミュレートします。 私はSYNパケットを送り、次にサーバーからSYN-ACKを得ます。 最後に、ACK +要求パケットを送信し、応答を待ちます。 wgetまたはcurlを使用すると、 最初のACKと要求が2つの異なるパケットで送信されることがわかりました。 それはなぜですか、それは何にも関係していますか?最初のackパケットの後にHTTP要求要求が送信されるのはなぜですか?

+0

私はあなたの質問が回答されていると思います[こちら](http://stackoverflow.com/questions/3761276/when-should-i-y-tcp-nodelay-and-when-tcp-cork) – DaSourcerer

+0

それは彼らが働く方法であり、それは何にも関係しません。 – EJP

答えて

0

TCPソケットを使用するクライアントアプリケーションでは、通常socket()を呼び出してからconnect()とsend()を呼び出します。 connect()関数はTCP接続を確立します。これを行うには、TCPプロトコルにSYN、SYN + ACK、ACKという3つのパケットが必要です。その後、send()コールは最初のデータを送信します。したがって、ACKとデータは別々に送信されます。

パケットフローがおそらくTCPプロトコル(https://tools.ietf.org/html/rfc793を参照)を満たしていると思いますが、これは珍しいことです。

関連する問題