3 ウェイ TCP ハンドシェイクでクライアントから送信された ACK が必要なのはなぜですか? 3 番目のステップでデータの送信を開始できないのはなぜですか? サーバーはいずれかの方法で、データを受信すると、クライアントが生きているかどうかを知るようになります。 .
2 に答える
1
クライアントが ACK を含むセグメントにデータを含めることを禁止するものは何もありません。
ただし、クライアントは、アプリケーションがデータを送信するのを待つためにこの ACK の送信を遅らせるべきではありません。サーバーの RTT 推定に影響を与える可能性があるためです。また、SYN Cookie を使用するサーバーは、ACK をすぐに取得しないと、タイムアウトになる可能性があります。
于 2013-10-04T00:05:20.543 に答える
1
典型的なソケット プログラミング API は、ホストから syn+ack を受信するまで「open」メソッドでブロックします。クライアントが「オープン」メソッドに座っているため、送信するデータがない場合でも、通信レイヤーはそれを受信するとすぐに再確認を送信する必要があります。
ソケット API に「openAndSend」メソッドが含まれている場合、このメソッドはソケットを開き、試行が成功した場合にデータを送信します。ホストから syn+ack を受信するとすぐにデータを送信する準備ができている可能性があります。アプリケーションが多くの短期間の接続を使用する場合、そのようなことは価値があるかもしれませんが、私はそのような機能を使用したことがなく、どの程度サポートされているかわかりません.
于 2013-10-04T00:12:08.963 に答える