web-dev-qa-db-ja.com

TCPハンドシェイク中のパケット損失

ファイル転送につながる疑似TCPハンドシェイクを実装する必要があります。ファイル転送を行うのに問題はありません:単純な送信確認。頭を包むことができないのは、 3つのステップのいずれかでパケット損失が発生すると想定して、3ウェイハンドシェイクを実行します。

例:私のクライアントはSYNパケットを送信します。 SYN-ACKの待機がタイムアウトした場合(パケット損失または単に遅い場合)、再送信します。サーバーはSYN-ACKを送信します。 ACKの待機がタイムアウトした場合は、SYN-ACKを再送信します。 ACKが受信された今、クライアントはどのようになっていますか?

3
user111658

クライアントは自分のACKが受信されたことを知りませんが、なぜ気にするのですか? ACKを受信したかどうかに関係なく接続が確立されます。送信された最後のパケットが受信されたことを確実に知ることはできないため、それを必要としないプロトコルを設計する必要があります。

4
David Schwartz