0

3 ウェイ TCP ハンドシェイクでクライアントから送信された ACK が必要なのはなぜですか? 3 番目のステップでデータの送信を開始できないのはなぜですか? サーバーはいずれかの方法で、データを受信すると、クライアントが生きているかどうかを知るようになります。 .

4

2 に答える 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 に答える