連載第5回
TCP/IPアレルギー撲滅ドリル【下位レイヤ編】

それでも不正確なデータを受け取ったらどうするの?

福永勇二
インタラクティブリサーチ
2004/6/24


素朴な疑問
正確な通信のための確信
  1. 不正確なデータを受け取ったらどうするの
通信中のトラブルを解明しよう
  1. 通信の様子を見せて
  2. 通信の失敗の種類は?
  3. でも、到着しなかったものを無視してOK?
  4. データが化けたら?

通信データが消えてしまうケースを追う

  1. ここが難関! 分かりやすく説明して
  2. 要点を簡単にまとめて

肯定確認応答が届かないケースを追う

  1. こちらもステップバイステップで説明して
  2. ポイントを簡単にまとめてください
 肯定確認応答が届かない
 ケースを追う

●こちらもステップバイステップで説明してください

 では図4を使って、肯定確認応答が消えてしまう場合に、TCPはどんな動きをするか説明します。先の説明と重複する部分は簡単に触れます。

(1)まず送信側がウィンドウ内にある[1][4]のデータを順に送信します。

(2)[1]のデータが受信側に到着したら、データを受信側の箱に入れ、肯定確認応答を送信側に返送します。この肯定確認応答には「次は[2]を送ってください」という情報が含まれています。

(3)受信側は[1]の肯定確認応答の送信をもって、送信側は肯定確認応答の受信をもって、ウィンドウの位置を[2]にスライドさせます。

(4)送信側は[5]を送信します。また[2]を受け取った受信側は「次は[3]を送ってください」という情報を含んだ肯定確認応答を返します。しかしそれは通信回線上のトラブルで消えたとします。

(5)受信側は送信した肯定確認応答に基づいてウィンドウを[3]に進めます。しかし送信側には肯定確認応答が届いていないのでウィンドウはそのまま動かしません。

図4 肯定確認応答が消えてしまうケース

(6)[3]が受信側に到着します。それを保存して「次は[4]を送ってください」という情報を含んだ肯定確認応答を返します。

(7)受信側は返した肯定確認応答に基づいてウィンドウを[4]に進めます。送信側は受け取った肯定確認応答内の指示に従ってウィンドウを[4]に進めます。先に肯定確認応答が1つ抜けましたが、通信状態はこれで正常に戻ります。

(8)[6][7]がウィンドウ内で未送信なので、順に送信を開始します。[4]が受信側に到着し、「次は[5]を送ってください」を含んだ肯定確認応答を返します。

(9)受信側は返した肯定確認応答に基づいて、送信側は受け取った肯定確認応答内の指示に従ってウィンドウを[5]に進めます。

(10)[5]が受信側に到着し、「次は[6]を送ってください」を含んだ肯定確認応答を返します。

(11)受信側は返した肯定確認応答に基づいて、送信側は受け取った肯定確認応答内の指示に従ってウィンドウを[6]に進めます。

(12)[6]が受信側に到着し、「次は[7]を送ってください」を含んだ肯定確認応答を返します。

以降、これと同じ動作を繰り返します。アニメーション2で動作を確認しましょう。

アニメーション2  肯定確認応答が消えてしまうケース

●ポイントを簡単にまとめてください

 データが受信できないときに、積極的に再送信を求めるという考え方をするTCPでは、送信状態の確認をするときの肯定確認応答は、あまり厳密には求められません。その考え方でも問題がないことは、(4)で肯定応答確認が抜けても(6)の肯定応答確認の受信で、元の状態に戻ることから読み取れます。

 つまり「多少、返事が抜けても、その後に普通に返事をしていたら、きっと問題はない」という考え方です。正確というイメージの強いTCPが、こういう楽観的な考え方をするのは意外ですが、通信の効率を考えて余計な応答はしないことを突き詰めると、こういうスタイルになったのでしょう。

 ちなみに、[2]のほかに、[3][4][5]への肯定確認応答も立て続けに消えてしまうとどうなるでしょうか? この仕組みだけでは、送信側も受信側も、相手からの送信を待ち続ける状態に陥ってしまい、通信は永遠に終わらないことになります。

 しかし実際には、ウィンドウサイズはもっと大きく、数回の肯定確認応答の消失だけでこのような状態に陥ることはありません。

 また、仮にそうなったとしても、送信データの消失のところで説明したとおり、送信側がタイマをセットしていて、一定時間待って肯定確認応答が来ないと、自動的に再送信します。ですので、お互いに待ちを決めて先に進まない現象は原理的に起きません。心配は無用です。

 

通信データが消えてしまうケースを追う

TCP/IPアレルギー撲滅ドリル【下位レイヤ編】(5)目次
1  正確な通信のための確信/通信中のトラブルを解明しよう
2  通信データが消えてしまうケースを追う
3  肯定確認応答が届かないケースを追う

関連リンク
  連載:TCP/IPアレルギー撲滅ドリル【超実践編】(上位レイヤ編)
連載:インターネット・プロトコル詳説

連載:ルータの仕組みを学ぼう
ホストのネット接続は正しく行われているか? 〜netstatによるネットワーク設定の確認〜

「Master of IP Network総合インデックス」


Master of IP Network フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Master of IP Network 記事ランキング

本日 月間