web-dev-qa-db-ja.com

TCP再送vs. TCP高速再送

Wiresharkでは、「TCP再送信」および「TCP高速再送信」と言うものが表示されます。違いは何ですか? Wiresharkはどのように違いを見分けることができますか?

9
tony_sid

パケットがTCPを使用して送信される場合、パケットにはシーケンス番号が送信されます。受信者がパケットを受信すると、そのパケットが受信されたことを示すシーケンス番号を含む確認応答を送信者に送信します。 あなたがあなたの質問をした方法に基づいて、私はあなたがこれを知っていると思います。他の読者のために入れたかったのです。

TCP再送信は、タイムアウト内に確認応答しないパケットです。

TCP Fast Retransmissionは、パケットが受信されなかったことをソースが確認したときです... Fast retransmitからの引用-ウィキペディア、無料​​の百科事典

TCP送信者が同じ確認番号を持つ3つの重複した確認応答(つまり、同じ確認応答番号を持つ合計4つの確認応答)を受信した場合、送信者は次のセグメントがより高いシーケンス番号が削除されました

8
Theo

私はこれを Microsoft から要約しました:

TCPは、各送信セグメントがインターネットプロトコル(IP)層に渡されると、再送信タイマーを開始します。タイマーが切れる前にTCPが特定のセグメント内のデータの確認応答を受信しない場合、セグメントは再送信されます。

再送信のタイムアウトは、ACM SIGCOMM会議の議事録のVan JacobsonとMike Karelsのペーパー「輻輳回避と制御」で説明されているSmoothed Round Trip Time(SRTT)計算を使用して、接続の特性に合わせてオンザフライで調整されます。この文書は、Association for Computing MachineryのACM Digital Libraryにあります。 SRTT計算の詳細については、 RFC 793:伝送制御プロトコルDARPAインターネットプログラムプロトコル仕様 を参照してください。特定のセグメントの再送信タイムアウトは、そのセグメントの各再送信後に2倍になります。

このアルゴリズムを使用すると、TCPは、接続の通常の遅延に自身を調整します。TCP高遅延リンクを介した接続は、低遅延を介した接続よりもタイムアウトに時間がかかります-接続が存在しないのではなく単に遅いときに誤ってタイムアウトになるのを防ぐために、リンクを遅延させます。

状況によっては、TCP特定のセグメントの再送信タイマーが期限切れになる前にデータを再送信します。最も一般的なこのような状況は、高速再送信と呼ばれる機能が原因で発生します。

高速再送信をサポートするレシーバーが、現在予期されているものよりも大きいシーケンス番号のパケットを受信すると、データがドロップされたかのように処理を進めます。見かけ上ドロップされたデータを送信者にできるだけ早く知らせるために、受信者はすぐに確認応答(ACK)を送信します。ACK番号は欠落していると思われるシーケンス番号に設定されています。受信側は、欠落しているシーケンス番号よりも大きいシーケンス番号で到着する着信ストリーム内の追加のTCPセグメントごとに、そのシーケンス番号に対して別のACKを送信します。

送信者が同じシーケンス番号を確認する重複したACKのストリームを受信し、示されたシーケンス番号が送信されている現在のセグメントのシーケンス番号よりも早い場合、送信者は、以前に送信した1つ以上のセグメントが削除されたと推測できます。一定数の重複ACKを受信した後、高速再送信アルゴリズムをサポートする送信側は、欠落しているセグメントの再送信タイマーが期限切れになるのを待たずに、受信側がデータのギャップを埋めるように要求しているセグメントを再送信します。この最適化により、ビジーなネットワーク環境でのパフォーマンスが大幅に向上します。

高速再送信では、送信者は、欠落しているTCPセグメントを再送信タイマーが期限切れになる前に再送信します。欠落しているTCPセグメントでは、再送信タイマーが満了しなかったため、欠落セグメントは、宛先で受信され、高速再送信がない場合よりも速く受信者によって確認され、送信者は後のセグメントを受信者にすばやく送信できます。このプロセスは高速リカバリと呼ばれます。高速再送信と高速リカバリについては、 RFC 2581:TCP輻輳制御

6
Majenko

再送信は、本質的に自動再送要求(ARQ)と同じですが、破損または失われたパケットの再送信です。信頼できる通信を提供するために、パケット交換コンピュータネットワーク上で動作するプロトコルによって使用される基本的なメカニズムの1つを指す用語です。しかし、高速再送信はTCPの拡張であり、失われたセグメントを再送信する前に送信者が待機する時間を短縮します。高速再送信の拡張は次のように機能します。もしTCP送信者は、指定された数の確認応答を受け取ります。これは通常、同じ確認応答番号を持つ3つの重複確認応答(つまり、同じ確認応答番号を持つ合計4つの確認応答)に設定されます。送信者は、次に高いシーケンスのセグメントがあることを合理的に確信できます。番号は破棄されたため、順序どおりに到着しません。送信者は、破棄されると推定されたパケットを再送信してから、タイムアウトを待機します。詳細とアルゴリズムについては、このリンクを確認してください http://www.isi.edu /nsnam/DIRECTED_RESEARCH/DR_WANIDA/DR/JavisInActionFastRetransmitFrame.html

2
Hanna

簡単に言えば、TCP再送信はほとんどの場合、パケットのタイムアウトに依存してミスを検出しますが、TCP高速再送信では、特定のパケットに対する確認応答の重複がそのミスを示します。

パケットの3つの重複した確認応答は、パケットミスとして推定されます。送信元は、NACKがトリガーされたパケットのシーケンス番号を確認できます。これは、欠落しているパケットのシーケンス番号であり、受信側に送信できます。

TCP高速再送信の利点は、名前からもわかるように、パケットタイムアウトが送信を開始するのを待たないため、パケットの再送信が高速になることです。

1
Rubal