黒瀬の Computer Networking を読んでいて、TCP の章で TCP と Go Back の違いについて読んでいるときに、NI が完全に理解していないものを見つけました。この本では、2 つのプロトコルの違いについて次のように述べています。
「多くの TCP 実装は、正しく受信されたが順序が正しくないセグメントを破棄するのではなくバッファします。
また、seqof segs 1、2、…N が順番に正しく受信され、ACK(n)、n < N が失われ、残りの N-1 個の ack がそれぞれのタイムアウト前に送信者に到着するとします。つまり、pkts, n, n+1, …, N の代わりに seg n です。ACK(n+1) が seg n のタイムアウト前に到着した場合、TCP は seg n を再送信することさえしません。
順不同セグメントのバッファリングは理解していますが、それ以外の動作は理解できず、Go Back N を完全に理解していないためだと思います。その例に従って、ACK(n+t) が到着した場合Go Back N タイムアウトの前に、プロトコルはあたかもセグメント n が実際に受信されたかのように続行されます。これは、累積 ACKS が原因で、実際に受信された場合です...したがって、Go Back N はそのセグメントを再送信しません....または am何か足りない?