TCPのエラー訂正の仕組み
TCP/IPはパケット通信を採用しているので、TCPはアプリケーションから渡されたデータ(バイト列)を複数の細切れのデータに分割する。この細切れのデータはIPに渡されて、「セグメント」と呼ばれるパケットとなる。TCPは、このセグメントの損傷(データ化け、誤り)や紛失、重複、順番の狂いといったエラーを検出し、訂正する機能を持つ。このため、TCPのセグメントは分割された「データ」のほかに、「TCPヘッダ」と呼ばれるさまざまな制御パラメータを格納する部分で構成される。
TCPでは、セグメントの損傷や紛失を回復するために、確認応答(ACK:ACKnowledgement)方式を採用している(図3)。確認応答方式は、正しいセグメントが届いたときにのみ、受信ホストから送信ホストに確認応答(ACK)を返す。セグメントが損傷していたり、届かなかった場合は、受信ホストは何も返さない。送信ホストは、セグメントを送出してから一定時間以内にACKが戻ってこなかった場合、セグメントが正しく届かなかったものと判断し、そのセグメントを送信し直す(再送処理)。セグメントが正しく受信されるまでこの動作を繰り返すことで、エラーが訂正される。
ここでもう少し詳しく、TCPのエラー検出と再送処理の動作を見てみよう。
- TCPの送信ホストは、送信と同時に再送信タイマをセットする
- 受信ホストは、受信したセグメントと、TCPヘッダに含まれるチェックサム(エラー検出用の符号)を比較して、受信したデータが損傷していないかを判断する。受信したセグメントに誤りがあった場合はセグメントを廃棄する
- チェックサム検査が合格すると、受信ホストは送信ホストにACKを送り返す
- 送信ホストは、タイマが切れるまでにACKが戻ってこない場合や、戻ってきたACKの内容が予想と異なっていた場合は、セグメントを再送。そして最初に戻る
(次ページ、「シーケンス番号を用いて正しい順序で受信」に続く)
この連載の記事
-
第8回
ネットワーク
HTTP、FTP、SMTP、SIPはどう動くの? -
第7回
ネットワーク
帯域を効率的に利用するTCPの仕組みとは? -
第6回
ネットワーク
TCPのコネクションとはなんですか? -
第4回
ネットワーク
ルータの向こうに広がるネットワーク -
第3回
ネットワーク
特別なIPアドレスって知っていますか? -
第2回
ネットワーク
TCP/IPはどのように普及していったの? -
第1回
ネットワーク
TCP/IPの基礎の基礎を理解していますか? -
ネットワーク
TCP/IPまるわかり - この連載の一覧へ