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

分かるスライディングウィンドウ、
見えるEthereal

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


素朴な疑問
「言葉」というカタチから入る
  1. カタチから入るなんて邪道です!
  2. TCPの本に「連続送り」が出てきません
  3. 「シーケンス番号」って何ですか?
  4. じゃあ「肯定確認応答(ACK)」は?
スライディングウィンドウの謎に迫る
  1. スライディングウィンドウの謎に迫る
  2. スライディングウィンドウ! そろそろギブアップです
  3. スライディングウィンドウをやさしく説明してください
  4. スライディングウィンドウのほかのメリットは?

生のTCPに触れてみよう

  1. ホンモノのTCPを見てみたいのです
  2. どうやってプロトコルアナライザを手に入れますか?
  3. 組み込む手順を教えてください
  4. どうやって使うんですか?
  5. 画面の見方を教えてください
  6. シーケンス番号はどこにありますか?
  7. Etherealを使うときの注意事項は?
  8. Etherealを手に入れた私はTCP制覇ですか?
 スライディングウィンドウの謎に迫る

「スライディングウィンドウ」って?

 TCP最初の難関はこの「スライディングウィンドウ」という仕組みでしょう。なぜスライディングウィンドウが必要なのか。スライディングウィンドウを使うと通信速度を上げることができるのか。これを感覚的に理解できなければ、この先のTCPの仕組みも理解できません。

 でも心配は要りません。前回の説明が感覚的に理解できれば、スライディングウィンドウも感覚的に理解できると思います。実をいうと、前回の説明も、今回のここまでの説明も、すべてこのスライディングウィンドウを説明するための前振りだったんです。

スライディングウィンドウ! そろそろギブアップです

 前回登場した「ひとまとめ」と「連続送り」の図解で、以下のことを説明しました。

(1)受け取り側にはトラックを停めておける駐車場スペースがあること
(2)このスペースが満杯になるまで、送り主のトラックは連続して出発できること
(3)スペースが満杯になったら、荷降ろしが済んだトラックが現れた時点で送り主は次の1台を出発させられること

 (1)〜(3)の一連の仕組みで、受け取り確認をしながら効率的に運べるというお話です。

 実は、この仕組みをよりコンピュータっぽく説明するのが「スライディングウィンドウ」です。だから、スライディングウィンドウの動作、そして必要な理由の1つは、すでに皆さん理解できているわけです。あまり心配は要らないというのはそういうワケです。

スライディングウィンドウをやさしく説明してください

 TCP/IPの一般書籍では、スライディングウィンドウを図1のように表すことが多いと思います。しかし、この図を見て、「連続送り」のイメージを浮かばせることは簡単ではないでしょう。

図1 TCPの教科書によく登場するスライディングウィンドウの概念

 ここでは大胆に、スライディングウィンドウを前回のトラックの話に例えてみたいと思います。登場するのは、トラックの運行を管理する「配車管理表」です(図2)。

図2 トラックの話でスライディングウィンドウを考えると……

 配車管理表を使うと、どのトラックが納入を完了しているか、どれが配送中か、どれが出発待ちかを一目で把握することができます。例えば図2では、1番のトラックと2番のトラックは、すでに納入を終えています。3番から12番のトラックは、納入先まで走っているか、納入先にある駐車スペースに入っています。また13番トラックは出発を待っていることが、これで一目で分かります。実際のTCPの世界でいえば、どこまで送信したかその状態を上手に管理できる、ということです。

 ここで3番トラックが無事に納入を終えたとします。すると、送り主には納入先から「受け取り確認」が到着します。これを受け取ると、送り主は配車管理表の「配送中車両枠」を1つ右にずらします。すると、3番トラックは納入済みになり、新たに13番トラックが配送中車両枠に入ります。配送中車両枠に入った13番トラックは、ここで速やかに出発して配送をスタートします。このように管理すれば、どのトラックが納入済みで、どのトラックが配送中か、一目で見分けることができます。

 この表の中で移動する「配車中車両枠」がスライドするウィンドウに相当します。つまり「スライディングウィンドウ」による通信状態の管理が行われているわけです。もともとこの図に書いたやり方は、前回登場した「連続送り」ですから、この図が「スライディングウィンドウ」を使って連続送りの状態を管理する仕組みであることをお分かりいただけると思います。

 ちなみに、図2と同じものを、TCPの教科書などで使われるメッセージチャートで描いたものが図3です。それぞれを見比べてみて、このメッセージチャートの見方を把握しておくと、後で正式な教科書を読むときの役に立つと思います。

図3 メッセージチャートもトラックの絵を思い浮かべると分かりやすい

 なお、「配送中車両枠」が、納入先の駐車スペースの大きさと同じである点にも注目してください。この2つが同じ大きさになっている限り、駐車スペースがなくてトラックがあふれるようなことはありません。つまり、より確実な通信ができるということです。この点もぜひ覚えておいてください。

 どうでしょうか? スライディングウィンドウの仕組み、そしてその効果が、100%じゃないにしても、じんわり見えてきた気がしませんか?

スライディングウィンドウのほかのメリットは?

 実は、スライディングウィンドウの御利益は、連続送りの管理をしやすくするだけではありません。例えば、納入先が「受け取り確認」の通知を1回忘れてしまった場合も、スライディングウィンドウの考え方を使うと、配送を順調に続けることができます。

 この辺りの具体的な話は、また後に譲りますが、スライディングウィンドウは「連続送り」の管理をカンタンにするほか、データの再送信の管理や、スロースタートを実現するためにも使われる、基本的でとても重要な仕組みなのです。

「言葉」というカタチから入る

TCP/IPアレルギー撲滅ドリル【下位レイヤ編】(3)目次
1  「言葉」というカタチから入る
2  スライディングウィンドウの謎に迫る
3  生のTCPに触れてみよう


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

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

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


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

注目のテーマ

Master of IP Network 記事ランキング

本日 月間