ネットワーク用語 > 再送制御
再送制御 †
再送制御 = Retransmission Control
TCP/IPをはじめから - TCP( 順序制御、再送制御 )
TCP - 信頼性の確保 ( 再送制御 )
TCPでは、データを送信するたびに無事にデータが到達したことを知らせるために確認応答(ACK)を行う。
ホストAからBへデータを送り無事に届けば、ホストBはAに確認応答としてACKビットを立てて返信します。
逆にこの確認応答がない場合はネットワーク伝送経路の途中でパケットが破棄された可能性があります。
TCPでは一定時間内にACKが帰ってこない場合、パケットが破棄されたと判断して再度データを送る。
高速再転送
ただ、再送制御ではパケットが欠落するたびに再送タイムアウトを待つので効率的ではありません。
TCP には再送制御のもう1つの仕組みとして高速再転送というものが用意されています。
これは前述の ACK パケットを待たず次々とセグメントを送信する場合に使用されます。
上図の例で見ると、受信側端末は5番目のセグメントを受け取った段階で、4番目のセグメントが未着になっていることに気がつきます。
そこで、まだ受け取っていないセグメントがあることを ACK パケット(ACK 番号で分かる)にて送信側端末に通知します。
しかし、これに続いて6番目、7番目のセグメントも到着するので、そのたびに未着セグメントがあることを送信側端末に通知します。
一方送信側では、同じ ACK 番号を3回受け取った時点で届いていないセグメントがあることを知ります。
そして、その未着となっているセグメントから再送信をします。
抜けているセグメントのみ送信するのではなく、抜けているセグメント以降を全て送信し直すのです。
なお、1回目、2回目の ACK パケットで再送信しないのは、受信側へのセグメントの到着順序が入れ替わっただけである可能性が大きいからです。