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

TCPの迷宮を
さまよってみませんか?

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


素朴な疑問
プロトコルの迷宮をさまよい歩く楽しみ
  1. インディー某も初心者だった
  2. 下位レイヤってどういう意味ですか?
  3. もうちょっとプロトコルっぽい例で説明してください
  4. 7つに分けるという話も聞いたことがあるんですが
まずは相手を知ることから。TCPって一体ナンダ?
  1. ズバリ、このTCPってのは何ですか?
  2. ネットワークで起こる問題とは
  3. じゃあ、どうすれば正確に通信できる?

TCPをよく知るための道具を用意しよう!

  1. 見えないTCPをどうやって見るの
  2. そのTCPシミュレータはどうやって手に入れるのですか?
  3. 矢印がたくさん出ましたが……

TCPのキホンのキホン

  1. TCPの通信を簡単な例で説明して

 まずは相手を知ることから。 
 TCPって一体ナンダ?

ズバリ、このTCPってのは何ですか?

 あちこちで名前をよく聞くのに、どんなシロモノなのかよく分からない。こういう言葉は結構ありますよね。例えば「デリバティブ」とかも、そんな単語かもしれません。「天候デリバティブ」とかいわれると、筆者の場合、クエスチョンマークが頭の上にたくさん並びます。もちろん金融商品らしいことまでは分かるのですが、その中身がどうなっているのか、イマイチぴんと来ない感じです。「TCP」という言葉も、これと似たような分かりにくさを持っているような気がします。

 TCPの働きを一言でいえば、下位レイヤ、つまり共通で利用する機能の中でも、「正確で確実な通信をするための仕組み」ということができます。

 コンピュータネットワークと聞くと、それ自体がとても正確に機能する印象がありますが、実際は「たまに問題が起こるけど、それをうまくカバーして、正確な通信ができるようにしている」のに近いといえます。

 例えば、コネクタではときどき接触不良が起こるかもしれません。もし近所に雷が落ちたら、そこからの大きな雑音で、通信中のデータが書き換わってしまうかもしれません。このほかにも、その時々の状況によって、いろんな問題が発生します。そんなときでも、できる限り悪い影響を取り除いて、正確で確実な通信ができるよういろんな手を尽くす。TCPはそんなことをしています。

ネットワークで起こる問題にはどんなものがありますか?

 ネットワークでどんな問題が起こるのか、ここでは伝言ゲームに例えてみたいと思います。伝言ゲームはご存じですよね? ある決められた言葉を、何人もの人が伝言として伝えていき、最後の人がその言葉を大声でいって、最初の言葉と合っていればOKというゲームです(図3)。

図3 伝言ゲームではちょっとした間違いが起こることも

 伝言ゲームをしてみると、大部分の言葉は正しく伝わりますが、ときどき、なぜか違った言葉になることがあります。これは伝言中に言葉が間違って伝わった例です。特に周囲がうるさい場合には間違えやすいでしょう。また、何度も速いスピードで繰り返していると、たくさんある伝言の中の1つを伝え忘れる人が出てきたり、反対に同じ言葉を2度伝えてしまう人も出てくるでしょう。あるいは、2つを入れ違えてしまったり、モタモタして次の人に伝えるのが遅れてしまうかもしれません。

 話を伝える人、伝えられた話を聞く人、さらにはその周りの状況によって、伝言ゲームの情報ネットワークは、ときどきデータを誤ったり、スムーズな通信をすることができない場合もあるわけです。実は、コンピュータ同士のネットワークも、これと似たような状況が起こるんです。

●じゃあ、どうすれば正確に通信できるんでしょう?

 TCPは難しいというけれど、この伝言ゲームに例えて考えれば、問題を解決するアイデアは結構すんなり理解できると思います。

 このアイデアを大ざっぱにいえば「データに番号を付ける」「お互いに受け取り確認をする」「忙しいときは、ちょっと待ってと伝える」「ゆっくり始める」です(図4)。コンピュータ同士の通信といっても、何だか人間的でしょう?

「データに番号を付ける」 1.2.3.4.・・・・
「お互いに受け取り確認をする」OK? Yes!
「忙しいときは、ちょっと待ってと伝える」WAIT
「ゆっくり始める」 Restart slowly
図4 TCPの基になっているアイデア

 データに番号を付けると何ができるでしょうか。まずデータが順番どおりに来ているのかが分かります。そしてさらに、データに抜けや重複がないかも分かります。もし順番が入れ違っていたら、それは単に番号どおりに並べ替えればいいですね。データの抜けがあったら、もう1回送ってくれるようにリクエストすればいいですし、重複があったら1つ捨てればOKです。番号があるだけで、かなり信頼感が生まれるんですね。

 お互いの受け取り確認も大切です。データの番号を使って「○番受け取ったよ」と知らせてあげれば、送信したデータをちゃんと受け取ってもらったことが分かります。また、ちょっと忙しくて受け取れなさそうなら、「ちょっと待って」と伝えます。お互いに声を掛け合うことで、1つの仕事を着実に進めていく。この辺も、何だか人間の行動とよく似ていますね。

 もう1つ面白いのは「ゆっくり始める」です。いきなりドーンと最高スピードで走り始めたら、ほかの人がついて行けなかった。そんなことがないよう、様子を見ながら、だんだんスピードを上げていくんです。こうすれば総崩れにならずに済みますね。さらにこの方法は、ゆっくり始めて少しずつスピード上げていくことで、そのときの状況に応じた、最も速い速度を見つけて通信することにもなります。

 こうして見ると、TCPといっても、普通の人間の理解を超えた、超ムズカシイことをやっているわけではなさそうでしょう? もちろん、実物のTCPはこんなに単純ではありません。できるだけ効率よくサクッと通信する工夫など、いろんな知恵もたっぷり詰め込んであります。でも、元の元にあるアイデアは、意外に分かりやすいものなんです。

プロトコルの迷宮を歩く楽しみへ

TCP/IPアレルギー撲滅ドリル【下位レイヤ編】(1)目次
1  プロトコルの迷宮をさまよい歩く楽しみ
2  まずは相手を知ることから。TCPって一体ナンダ?
3  TCPをよく知るための道具を用意しよう!

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

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

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


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

注目のテーマ

Master of IP Network 記事ランキング

本日 月間