このページの本文へ

TCP/IPまるわかり 第5回

論理的な伝送路で信頼性を上げる技術を知ろう

TCPのキモはコネクションとポート番号

2009年07月13日 09時00分更新

文● 伊藤玄蕃

  • この記事をはてなブックマークに追加
  • 本文印刷

TCPのエラー訂正の仕組み

 TCP/IPはパケット通信を採用しているので、TCPはアプリケーションから渡されたデータ(バイト列)を複数の細切れのデータに分割する。この細切れのデータはIPに渡されて、「セグメント」と呼ばれるパケットとなる。TCPは、このセグメントの損傷(データ化け、誤り)や紛失、重複、順番の狂いといったエラーを検出し、訂正する機能を持つ。このため、TCPのセグメントは分割された「データ」のほかに、「TCPヘッダ」と呼ばれるさまざまな制御パラメータを格納する部分で構成される。

 TCPでは、セグメントの損傷や紛失を回復するために、確認応答(ACK:ACKnowledgement)方式を採用している(図3)。確認応答方式は、正しいセグメントが届いたときにのみ、受信ホストから送信ホストに確認応答(ACK)を返す。セグメントが損傷していたり、届かなかった場合は、受信ホストは何も返さない。送信ホストは、セグメントを送出してから一定時間以内にACKが戻ってこなかった場合、セグメントが正しく届かなかったものと判断し、そのセグメントを送信し直す(再送処理)。セグメントが正しく受信されるまでこの動作を繰り返すことで、エラーが訂正される。

図3 確認応答方式

 ここでもう少し詳しく、TCPのエラー検出と再送処理の動作を見てみよう。

  1. TCPの送信ホストは、送信と同時に再送信タイマをセットする
  2. 受信ホストは、受信したセグメントと、TCPヘッダに含まれるチェックサム(エラー検出用の符号)を比較して、受信したデータが損傷していないかを判断する。受信したセグメントに誤りがあった場合はセグメントを廃棄する
  3. チェックサム検査が合格すると、受信ホストは送信ホストにACKを送り返す
  4. 送信ホストは、タイマが切れるまでにACKが戻ってこない場合や、戻ってきたACKの内容が予想と異なっていた場合は、セグメントを再送。そして最初に戻る

(次ページ、「シーケンス番号を用いて正しい順序で受信」に続く)


 

カテゴリートップへ

この連載の記事