情報ラボ > ネットワークのしくみ
送ったデータは、どうやって相手に届くのでしょうか。
「こんにちは」という文を、いくつかのパケットに分けて送ります。
それぞれのパケットには、順番の番号と宛先が書かれています。
通信は、役割ごとに層に分けて設計されています。上から下へ、順に処理されていきます。
インターネットとは、世界中のネットワークどうしをつないだ、巨大なネットワークの集合です。中心となる管理者はいません。それぞれのネットワークが互いに接続し合うことで、全体が成り立っています。
この仕組みで大切なのは、どの機器も対等だという点です。中心が壊れたら全体が止まるのではなく、経路を迂回して届けられるように設計されています。
データを届けるには、宛先が必要です。それがIPアドレスです。ネットワークにつながるすべての機器に割り当てられます。
いま広く使われているIPv4では、32ビットの数値を8ビットずつ4つに区切り、それぞれを10進数で表します。
1つの区切りは8ビットなので、0から255までの値をとります。256を超える数字は出てきません。
IPアドレスは、2つの部分に分かれています。
どこまでがネットワーク部かを示すのが、サブネットマスクです。「/24」という書き方は、先頭から24ビットがネットワーク部という意味です。
この区切りが重要なのは、同じネットワークかどうかで通信の方法が変わるからです。同じなら直接届けられますが、違うならルーターに渡して外へ送ってもらう必要があります。上のツールで、相手のアドレスを変えて確かめられます。
IPv4で表せるのは、2の32乗、約43億通りです。膨大に思えますが、世界の人口とスマートフォンやパソコンの数を考えると、まったく足りません。実際、新規の割り当ては2011年に枯渇しています。
そこで登場したのがIPv6です。128ビットを使うため、表せる数は2の128乗、約340澗(かん)通りになります。地球上の砂粒すべてに割り当ててもなお余る規模です。
| IPv4 | IPv6 | |
|---|---|---|
| ビット数 | 32 | 128 |
| 表せる数 | 約43億 | 約340澗 |
| 表記 | 192.168.1.1 | 2001:db8::1 |
| 区切り | 10進数・ピリオド | 16進数・コロン |
IPv6は16進数で表記します。桁が長いため、連続する0は「::」で省略できる決まりになっています。
データを送るとき、一度にまとめて送るわけではありません。小さな塊に分割して送ります。この塊をパケットといいます。
なぜわざわざ分けるのでしょうか。理由は3つあります。
それぞれのパケットには、宛先のアドレスと順番の番号が付けられます。バラバラの経路を通って届いても、番号を見て元の順序に組み立て直せるのです。
パケットが途中で失われることは、実際に起こります。そのとき、受け取った側は「○番が来ていない」と気づき、送り直しを要求します。この確認と再送を担当しているのがTCPというプロトコルです。
一方、動画配信や通話では、少しくらい欠けても再送を待つより流し続けたほうがよい場合があります。そうした用途にはUDPという、確認を省いた方式が使われます。
異なるメーカーの機器どうしが通信できるのは、共通の手順が決められているからです。この手順をプロトコルといいます。
インターネットのプロトコルは、役割ごとに階層に分けて設計されています。
| 層 | 役割 | 代表的なプロトコル |
|---|---|---|
| アプリケーション層 | アプリどうしのやり取り | HTTP、HTTPS、SMTP |
| トランスポート層 | 確実に届ける、順序を守る | TCP、UDP |
| インターネット層 | 宛先まで経路を選んで運ぶ | IP |
| ネットワーク | 実際の線や電波で送る | イーサネット、Wi-Fi |
階層に分ける利点は、それぞれを独立して交換できることです。有線から無線に変えても、上の層は何も変えなくてすみます。IPv4からIPv6に移行しても、アプリはそのまま動きます。
データは上の層から下へ渡されるとき、各層で必要な情報が付け加えられていきます。手紙を封筒に入れ、それをさらに箱に入れて送るようなものです。これをカプセル化といいます。
受け取った側は、逆に外側から順に開けていき、最終的に元のデータを取り出します。上のツールで、この様子を段階的に確認できます。
私たちがブラウザに入力するのは、IPアドレスではなく「joholab.net」のようなドメイン名です。数字の羅列より覚えやすいからです。
しかし、実際の通信にはIPアドレスが必要です。そこで、ドメイン名からIPアドレスを調べる仕組みが用意されています。それがDNS(Domain Name System)です。電話帳のような役割を果たしています。
ウェブページを見るとき、裏側では必ずこの変換が行われています。DNSが止まると、サーバー自体は動いていてもアクセスできなくなります。