連載第3回
|
|
スライディングウィンドウの謎に迫る |
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アレルギー撲滅ドリル【超実践編】(上位レイヤ編) 連載:インターネット・プロトコル詳説 連載:ルータの仕組みを学ぼう ホストのネット接続は正しく行われているか? 〜netstatによるネットワーク設定の確認〜 |
「Master of IP Network総合インデックス」 |
- 完全HTTPS化のメリットと極意を大規模Webサービス――ピクシブ、クックパッド、ヤフーの事例から探る (2017/7/13)
2017年6月21日、ピクシブのオフィスで、同社主催の「大規模HTTPS導入Night」が開催された。大規模Webサービスで完全HTTPS化を行うに当たっての技術的、および非技術的な悩みや成果をテーマに、ヤフー、クックパッド、ピクシブの3社が、それぞれの事例について語り合った - ソラコムは、あなたの気が付かないうちに、少しずつ「次」へ進んでいる (2017/7/6)
ソラコムは、「トランスポート技術への非依存」度を高めている。当初はIoT用格安SIMというイメージもあったが、徐々に脱皮しようとしている。パブリッククラウドと同様、付加サービスでユーザーをつかんでいるからだ - Cisco SystemsのIntent-based Networkingは、どうネットワークエンジニアの仕事を変えるか (2017/7/4)
Cisco Systemsは2017年6月、同社イベントCisco Live 2017で、「THE NETWORK. INTUITIVE.」あるいは「Intent-based Networking」といった言葉を使い、ネットワークの構築・運用、そしてネットワークエンジニアの仕事を変えていくと説明した。これはどういうことなのだろうか - ifconfig 〜(IP)ネットワーク環境の確認/設定を行う (2017/7/3)
ifconfigは、LinuxやmacOSなど、主にUNIX系OSで用いるネットワーク環境の状態確認、設定のためのコマンドだ。IPアドレスやサブネットマスク、ブロードキャストアドレスなどの基本的な設定ができる他、イーサネットフレームの最大転送サイズ(MTU)の変更や、VLAN疑似デバイスの作成も可能だ。
|
|