1

GobackNプロトコルを2つの別々のクライアントおよびサーバーアプリケーションに実装しようとしています。私のシーケンス番号は3ビットに収まらなければならないので、2 ^ 3 = 8つの最大数、2 ^ 3-1=7のウィンドウサイズだとします。

最初はウィンドウ全体を送信します。最初の2つのパケット(0と1)は正しく受信されます。パケット2はドロップされます。受信者がパケット3から6を取得するとき、それは2を期待していたので、受信したパケットを2が欲しいと言ってナックする必要があります。

Sender     Receiver
  0           0
  1           1
  2    (packet dropped)
  3         nack2
  4         nack2
  5         nack2
  6         nack2

送信者が最初のnack2を受信すると、0と1が(ピギーバックによって)受信されたことを認識し、ウィンドウを前方に移動しますが、シーケンス番号2からウィンドウを再送信する必要もあります(つまり、2-3-4-5-6)。 -そしておそらく7-0)。送信者が2番目のnack2を受信するまでに、送信者はすでにそれらのパケットを送信しています。プロトコルのため、送信者は2を含むウィンドウ全体を再送信します。これで受信者は2(およびその他)を受信する可能性がありますが、2番目のnack2バッチでは、順序が正しくない2を再受信します。予想されるパケットをナックする必要があります。私はこれらすべての仮定で正しいですか?

私の場合、Go Back Nは、Stop and Waitよりもはるかに多くのパケットを送信しているように見えます。特に、ウィンドウサイズを大きくするほどです。何が得られないのですか?

4

1 に答える 1

0

この問題に対して私が見つけた解決策は、シーケンス番号を表すためにより多くのビットを使用することであり、したがって、MAXが大きくなります。MAXが2*ウィンドウサイズの場合、遅延2は適切なACKと誤解されることはありません。

于 2012-04-18T16:41:57.457 に答える