パケット
インターネットの全てのデータ通信は「パケット」と呼ばれる単位で行われています。パケットとは小分けにされたデータです。たとえば、ある特定のファイルを転送しようと思ったとき、データは次のようにパケットに分割されて送信されます。
パケットに分割されたデータは、次から次へとインターネットで送信されていき、宛先に届きます。
一般的なパケットは、ヘッダとペイロードによって構成されます。ヘッダは、そのパケットに関する情報が掲載され、ペイロードは実際のデータを格納しています。パケットに関する情報には、例えば宛先やパケットの送信者情報などがあります。
パケット転送
パケットはルータと呼ばれる機器によって次から次へと転送されていきます(L2の場合はスイッチですが、話を簡単にするため割愛します)。インターネットの基本設計として重要なのが、ルータがあまり多くを気にせずに必要最小限しか考えないように出来ていることです。
たとえば、ルータは各通信の細かい内容や状態に関しては全く関知していません。単に到着したパケットのヘッダに記述してある情報を読み取って、「次」へと転送するだけです。それぞれのルータは、実際の宛先への到達方法を知りません。「こっちに転送すればどうにかなるよ」ぐらいの気持ちで、次へとパケットを渡します。
バケツリレーのように転送されていったパケットは、最終的には目的地に到達します。
現実世界に置き換えて説明
この説明をもう少し噛み砕いてみましょう。
まず、パケットをトラックだと思ってください。トラックには運転席部分と荷台部分があります。運転席部分がパケットのヘッダで、荷台部分がデータを運ぶペイロードです。
次に、光ファイバなどの回線は高速道路で、高速道路の分岐点がルータだと思ってください。
トラックは高速道路を走ります。高速道路の標識には「あっちが東京」で「こっちが北海道」としか書いていません。運転席には「北海道」という宛先が書かれた紙があるので、トラックは「こっち」へ行きます。
ここではトラックという比喩を使いましたが、実際のインターネットの挙動はトラックの場合とは異なるのでご注意ください。インターネットにおけるパケットはトラックのように自分で考えて道路を選択するわけではありません。高速道路の分岐点と例えたルータがパケットの次の行き先を考えたうえで、次のルータへとパケットを転送します。
このように、例えとは微妙に違う動きをしますが、何となく感覚として「ルータは方向だけを知っていて実際の経路を毎回細かく考えているわけでない」ということと「パケットにはヘッダとペイロードがある」という部分がわかっていただければと思います。
回線交換とパケット交換
この「パケットにデータを分ける」という技術は非常に重要です。データを小分けすることによって、複数種類の通信を同時に行えるようになっています。パケットによるデータ通信はパケット交換技術と呼ばれています。
パケット交換技術登場以前の世界では、通信は回線交換技術で成り立っていました。電話回線を構築していた回線交換技術では、通信ごとに「回線」を用意していました。そのため、同時に複数の通信を行えません。
たとえば、家に電話があるとします。誰かが電話をかけている時に同時に他の人が同じ電話回線で通話をする事はできません。
しかし、インターネットであれば、家に来ているインターネット回線が1本であったとしても、複数台のコンピュータで同時にWebを閲覧したり、メールを見る事ができます。各アプリケーション用のデータが細かいパケットに分けられる事によって、複数の通信が多重化されつつ、1本の回線を利用しています。
自立分散的な目的地計算
先ほど説明したパケットの転送は「フォワーディング」であり、出来上がったルーティングテーブルに記述してある情報を元に転送を行っているだけです。パケットの転送に関しては説明しましたが、「じゃあ、どうやって目的地への方向を知るんだろうか?」という問題に関しては、ここでは割愛しています。
このように「どっちに行けば目的地があるか?」を計算するのがルーティングです。ルーティングにはさまざまな段階や方式があるため、別途解説を行います。
最後に
今回は、インターネットを流れるデータの単位であるパケットについて解説をしました。説明を簡単にするため、ここでは漠然と「宛先」と書きましたが、実はこの「宛先」を表現するために「IPアドレス」というものがあります。
次回は、このIPアドレスとは何かを解説します。