コンピューターサイエンス:アルゴリズム / OS / ネットワーク / DB
パケットとフレーム
10 MB のファイルを、一息に流してはいけない
回線に 10 MB を一息に流したら、流し終わるまで他の人は 1 バイトも送れません。しかも途中で少しでも壊れたら、10 MB を最初から送り直しです。
だからインターネットは、データを小さく刻んでから送ります。刻まれた 1 つ 1 つは小包のようなもので、宛先などを書いた荷札と中身がセットになっています。
刻むと、3 つの困りごとが同時に消える
- 1 本の回線を分け合える。刻んだ小包を交互に流し込めば、全員が少しずつ進めます。1 人が使い終わるのを待たなくて済みます
- 失敗の範囲が小さくなる。届かなかった小包だけを送り直せば済み、全体をやり直す必要がありません
- 道が 1 本でなくてよい。小包ごとに違う経路を通っても、受け取り側で並べ直せます。途中の 1 台が落ちても迂回できます
昔の電話は逆でした。通話を始めるとき専用の道を確保し、終わるまで占有します。確実ですが、黙っている間も道はふさがったままです。刻んで分け合う方式にしたからこそ、1 本の光ファイバーに何万人分もの通信を同時に乗せられます。
代償もあります。小包 1 つずつに荷札が付くので、その分だけ運ぶ量が増えます。中身が 1 バイトでも荷札は付きます。それでも刻むほうが割に合うのは、上の 3 つの利点が大きすぎるからです。
同じ塊が、見る段によって別の名前で呼ばれる
紛らわしいのはここです。まったく同じデータの塊が、どの段の目で見るかによって呼び名が変わります。
| 呼び名 | 見ている段 | 荷札に書いてあること |
|---|---|---|
| フレーム | 隣の機器へ渡す段 | 隣の相手を指す MAC アドレス |
| パケット | 網をまたぐ段 | 最終的な宛先の IP アドレス |
| セグメント | 端から端までの段 | 相手のどのアプリ宛か、何番目の塊か |
別々の箱ではありません。入れ子です。アプリのデータにセグメントの荷札が付き、その全体にパケットの荷札が付き、さらにフレームの荷札が付いて、ようやくケーブルに出ていきます。
プレーンテキスト
[フレームの荷札][パケットの荷札][セグメントの荷札][アプリのデータ]受け取った側は外側から順に荷札をはがし、中身だけを上へ渡します。
荷札にはもう 1 つ、残り寿命が書かれています。中継機を 1 台通過するたびに 1 ずつ減り、0 になった小包はその場で捨てられます。経路の設定を間違えると小包が同じ場所をぐるぐる回り続けることがあり、この仕掛けがないと回線が永久に埋まってしまうからです。捨てたことは差出人に通知される決まりになっていて、経路をたどる道具はこの通知を利用して途中の機器を割り出しています。
刻む幅には上限がある
1 回に運べる最大のバイト数を MTU と呼びます。Ethernet では 1500 バイトが標準です。これを超える大きさは、途中で分割しないと運べません。
MTU は現場でよく効いてきます。「疎通確認は通るのに、大きなファイルの転送だけ固まる」という症状は、経路のどこかに MTU の小さい区間があって、大きな塊だけが捨てられているのが定番の原因です。小さいものは通ってしまうので、簡単な確認では見つかりません。
復習ミニクイズ
OSI L3 (ネットワーク層) で扱うデータ単位の正しい呼び方はどれですか