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

ITオンチにTCPのセボネを見る

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


素朴な疑問
■ITオンチと侮るなかれ
  1. メール、届いてる?
  2. 番号はアリガタイの?
  3. 番号づけのルールは
  4. 乱数で始めるワケは?
■受取「確認ヨシ!」
  1. そもそもデータの受取確認って?
  2. 時間がかかるとデメリットもあるでしょ?
  3. 具体的に受取確認が遅れるのはどんな場合?
  4. 受取確認に「遅れ」は大敵ですか?

■遅れてもスムーズに

  1. 「遅れ」も許すテクニックがあるんですか?
  2. 一体何を「ひとまとめ」にするの?
  3. 「連続送り」で効率UPができるってホント?
  4. 送りテクをズバリ図解
  5. 手強い「遅れ」に対策あり?

 データ受け取りをスムーズに

●受け取り確認をしても、遅くならないテクニックがあるんですか?

 はい、あるんです。一言でいえば「ひとまとめにして、連続送り」です。何だこりゃ?こんな名前を聞いても、ピンと来ませんよね。これは「ひとまとめにする」と「連続送り」という2つのアイデアが組み合わさった話ですので、ここでは2つに分解して考えることにしましょう。

 なお、この「ひとまとめ」と「連続送り」はTCPの標準的な用語ではありません。できるだけ多くの方がTCPの理解を深められるようにと、このページで作者が勝手に命名したものですので、あらかじめお断りしておきます。

●どうやって「ひとまとめ」にするんでしょうか?

 「受け取り確認」をすると遅くなる理由の1つは、データを送るたびに確認を待ち、それを何度も繰り返さなければいけないという点にあります。それならば、受け取り確認の数を減らせばいい、ということになります。それには、ある程度のデータをひとまとめにしておいて、それ全体に対してまとめて「受け取り確認」をする方法が考えられます(図5)。

図5 まとめて送れば「受け取り確認」が省略できる

 例えばりんごを送るのに、1つ1つ受け取り確認をしていたら、受け取り確認そのものがものすごい量になってしまいます。そうではなく、りんごをまとめてトラックに載せ、トラック1台ごとに受け取り確認をしたらどうでしょうか? こうすれば、受け取り確認は1回で済みますので、受け取り確認の待ち時間が多少長くなっても全体で見ればほとんど影響を受けません。

●「連続送り」って何でしょうか?

 「受け取り確認」をしても、「ひとまとめ」にすることで、だいぶ無駄をなくすことができました。でも人間は欲張りです。もっと効率よくりんごを運ぶ方法を見つけ出しました。それが「連続送り」です。

 これにはまず、りんごを受け取る側が駐車場を作っておきます。りんごを納入するトラックは、納入先に到着したらこの駐車場に一時的に駐車して、納入受け付けが始まるのを待つことができます。ここでは、仮に20台停められる駐車場としましょう。

 この駐車場があることで、りんごの発送方法は劇的に変わります。これまでトラック1台が出発したら、「受け取り確認」が来るまで次のトラックは出発できませんでした。でもいまは納入先に20台分の駐車場がありますから、「受け取り確認」が到着しなくても、最大20台までなら順次トラックを出発させることができます。

 では、21台目のトラックを出発させられるのは、いつでしょうか? そう、これは1台目のトラックの「受け取り確認」が終わったときです。「受け取り確認」が終わると、駐車場には1台分の空きスペースができますから、次の1台を出発させてもあふれてしまうことなく、ちゃんと納品用駐車場に入ることができます。

●「ひとまとめ」と「連続送り」を図で説明してください

 「駐車場を作ることで、受け取り確認を待たずに連続してトラックを送り出す」とどのくらい効率が良くなるのか、分かりやすく表したのが図6です。これを見ると分かるように、受け取り側に駐車場があるおかげで、受け取り確認を待っている間にも送り主はトラックを出発させることができることになります。

図6  受け取り側に駐車場があれば連続して送ることができる

※1 連続送りをしなければ、2台目の出発は1台目の「受け取り確認」が届いた後になる。こうして見ると、連続送りの効果はとても大きい。
 なお、1台目の受け取り確認が20台目の出発より前に届いた場合には、21台目は直後に出発できる。この条件では、トラックはほぼ待ち時間なく、連続して出発できることになるからスゴイ

 もし駐車場がなかったとしたらどうでしょうか。2台目の出発は、1台目の「受け取り確認」が届いた後になります。そう、このタイミングまで待っていないといけないのです。その差は非常に大きいものです。片や21台目が出発するというのに、他方は2台目がやっと出発できる状況なのですから。

 これから分かるように、「ひとまとめ」と「連続送り」の合わせ技を使うことで、同じ時間で送り届けられるりんごの数は劇的に増えます。これはイコール通信の効率が良くなるということです。

●「遅れ」が大きくても「ひとまとめ」「連続送り」は効果的なんですか?

 この記事の最初の方で、「遅れ」が大きいときに「受け取り確認」をすると特に効率が悪くなる、という話をしました。でも「ひとまとめ」と「連続送り」を使えば、ある条件さえ整えてあげれば、その問題からもサヨナラできます。

 「遅れ」が大きいことは、つまり相手からの「受け取り確認」の到着が遅いということです。この到着が遅くても大丈夫なようにする条件とは、ずばり「受け取り側の駐車場をぐんと大きくしてもらう」ことです。

 具体例で考えてみましょう(図7)。先に登場した20台が入る駐車場を、一気に50倍の1000台まで広げてもらったとします。こうすると、「受け取り確認」を待たなくても出発できるトラックの数は、20台から1000台に大幅に増えます。

図7  「遅れ」があるときは、駐車場を大きくする(図版をクリックすると拡大表示します)

※2 同じこの時間で見ると、駐車場が20台しかない場合はまだ20台しか出発できていない。しかし駐車場が1000台ある場合はすでに500台が出発済みだ。25台も差がついてしまった。「受け取り確認」の到着がとても遅いときには、駐車場の大きさを大きくしないといけないことがこの図からよく分かる

 ここで1台目の「受け取り確認」が500台目のトラックの出発タイミングに到着するような、大きな「遅れ」が発生しているとしましょう。

 このとき、もし相手の駐車場が20台分しかないとすると、20台目のトラックを送り出した後、本当なら500台目まで送り出せるはずのタイミングまで、送り主はトラックの出発を止めてひたすら待っていなければいけません。

 しかし相手の駐車場が1000台分あれば、送り主は少なくともトラック1000台が出発するまでは「受け取り確認」の到着とは無関係に出発させることができます。この例では、「受け取り確認」の到着が500台目の出発と同じタイミングですから、送り主は「受け取り確認」の到着を待つ必要は全くないわけです。

 この2つの差は一目瞭然です。トラック500台目を送り出せるタイミングで見てみましょう。駐車場が20台分しかない場合は、わずか20台のトラックしか送り出せていません。しかし駐車場が1000台あるケースでは、500台のトラックを丸々送り出せているのです。

 このように、「ひとまとめ」&「連続送り」の合わせ技を使うと、たとえ「遅れ」が大きい場合でも、「駐車場を大きく」することで効率の良い状態を保つことができるという特長も備えています。

 今回はTCPが確実な通信を実現する基本となるアイデアを、なるべく平易に説明してみました。説明は次回に続きます。

 

データの受け取り「確認よし!」

TCP/IPアレルギー撲滅ドリル【下位レイヤ編】(2)目次
1  ITオンチとあなどるなかれ
2  データの受け取り「確認よし!」
3  受け取りが遅れてもスムーズな理由

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

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

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


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

注目のテーマ

Master of IP Network 記事ランキング

本日 月間