2017-08-10 3 views
0

私は現在、最初のTCP実装の内部の一部を踏み込んで、次を読んでいます:70sへのフラッシュバック:Cerf、Kahn、Tomlinsonの最初のtcp実装 - なぜ再送フラグビットは決して考慮されませんでしたか?

  • 1974 - サーフ、カーン - パケットネットワーク相互通信
  • 1975のためのプロトコル - トムリンソン - シーケンス番号
  • を選択

しかし、どちらの論文でも、同じシーケンス番号の再送対正当な送信の問題(および相対的な管理)があります。

たとえば、最初の論文では、法的順序番号をn/2未満のウィンドウで制限しています(nは最大順序番号です)。 優雅さを高めている第2の論文は、遅れたパケットと正しいパケットとを区別するためにSYNフェーズで正しいシーケンス番号を選択することにいくつかの制限を課しています。

しかし、私は、受信者に再送信を報告するフラグビットを追加することを決して考えていないのだろうかと疑問に思っています...しかし、再送信があったと推測するいくつかの戦略を実装しました。物事?確かに、このアイデアを役に立たないと示唆する正当な理由があるのですが、これを否定した理由は何ですか?

おかげで、D.

答えて

0

TCPは、両方の重複とのうち順序セグメントに耐えるように設計されているので、再送を報告するためのフラグは、単純にこれらの問題の両方を解決することはできません。

たとえば、受信者は、再送フラグが設定されたセグメントを取得し、その後、フラグが設定されていないセグメント(順序が乱れている)を取得する可能性があります。助けてくれる?私は、重複を検出するためのロジック/アウトオブオーダーの配信が必要になると思います...

+0

こんにちはアンドリー、ありがとう。確かに、フラッグビットは、不注意による配送を助けません。ただし、受信バッファの正しい場所を指すシーケンス番号によって管理されます。あなたの例では、シーケンス番号が同じであるため、2つのセグメントは重複していて、順不同ではありません。とにかく、少量の再送が予想される場合、フラグビットが望ましくないオーバーヘッドになることがあります - さらに、そのフラグはC&Kの元の提案に役立つでしょうが、 C&Kのtomlinson –

+0

のそれではなく、n/2より大きいウィンドウを許可していました。しかし、tomlinsonの提案では、シーケンス番号選択ロジックは、そのフラグが重複に対処するためだけに使用されるため、そのフラグを無用にします。タイムアウト後に送信された同じセグメント(A)と再送信された(B)と仮定します。次に、 - AがBよりも最初に到着した場合:Aは最新ではなく、Bを代わりに使用する必要があります。この場合、「私」の旗は役に立たなかったでしょう。それはBだけに存在するからです。それどころか、3-wayハンドシェイクはこのケースを完全に管理します。 - BはAの前に到着し、Bは最新のものであり、受け入れられるべきである。この場合、おそらく –

+0

"フラグ"は受信者に無用な情報であり、最新のセグメントを持っていると考えられます。たぶん、私の質問への答えは、tomlinsonの提案が、オーバーヘッドの余分なビットを必要とせずにエレガンスで再送信の問題を管理したということでしょうか?再度、感謝します –

関連する問題