クリーム色の背景、色付き表示、高コントラスト、大きな文字のほうが読みやすいですか?配色と文字を選ぶと、すべてのページに一度で反映されます。

無料レッスン

データは層に分けて運ばれる(TCP/IP)

このレッスンのあとで: プロトコルがどの層のものかを言える。

45分のレッスンコマンド4件スタティックルーティングのラボ:小さなネットワークの経路をブラウザーで作る

スタンプ一つの裏側

友だちとのチャットで、スタンプを一つ送ったとします。スマホはWi-Fiにつなぎ、サーバーまでの道を選び、データを小さく分けて送ります。

相手の側では、届いた欠片を確かめ、順番どおりに並べ直します。これを一つの巨大なプログラムでやっているわけではありません。

仕事はいくつかの「層」に分けられていて、それぞれの層は一つの仕事だけをします。

このレッスンのゴール

メモ

プロトコルがどの層のものかを言える。

重要な言葉

ことばいみれい
プロトコルネットワークでやり取りするときの決まりごと
層(レイヤー)ネットワークの仕事を分けた一段一段
ヘッダー各層がデータの前に付ける情報
パケットヘッダーの付いた小さなデータの塊
カプセル化層ごとにヘッダーを重ねてデータを包むこと
ポート番号機器の中のどのプログラム宛てかを示す番号443

学生が入力するセルは、このプレビューでは空白です。

四つの層と、それぞれの仕事

インターネットは TCP/IP というモデルで動いています。層は四つです。

アプリケーション層は、ブラウザーやゲームなど、あなたが使うプログラムの層です。トランスポート層は、データを分けて、きちんと届いたかを確かめます。

インターネット層は、パケットに宛先を書いて道を探します。リンク層は、一本のケーブルや一回のWi-Fiの区間でビットを運びます。

例:層とそのプロトコル

層仕事よく出会うプロトコル
アプリケーション層プログラムどうしのメッセージHTTP、HTTPS、DNS、SMTP
トランスポート層どのプログラム宛てかと、届いたかの確認TCP、UDP
インターネット層ネットワークをまたぐ宛先と道IP、ICMP
リンク層ケーブルやWi-Fiの一区間Ethernet、Wi-Fi

学生が入力するセルは、このプレビューでは空白です。

下の層が上の層を包む

ウェブページを開くと、まずブラウザーがHTTPのメッセージを書きます。トランスポート層はその前にTCPヘッダーを付け、ここにポート番号が入ります。

インターネット層は、送り主と宛先のアドレスが入ったIPヘッダーを足します。リンク層は、次の区間のためにEthernetヘッダーを足します。

この包み方が カプセル化 です。受け取った側は、外の層から順にヘッダーを外していきます。

例:包まれた一つのリクエスト

線の上での順番ヘッダー中身
一番外Ethernet次の区間の機器のハードウェアアドレス
二番目IP192.168.0.12 から 198.51.100.7 へ
三番目TCPポート 52000 から ポート 443 へ
一番内側HTTPSのデータページをくださいという頼み

学生が入力するセルは、このプレビューでは空白です。

ラボの機械を確かめる

コマンド
netlab status

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

h1からとなりのルーターへping

コマンド
sudo ip netns exec h1 ping -c 2 -W 1 10.0.1.1

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

ルーターのハードウェアアドレスを見る

コマンド
sudo ip netns exec h1 ip neigh

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

三つの実行で見えたもの

一つ目の実行では、五台の機械が出てきます。ホストの h1 には to-r1 という線が一本あり、アドレスは 10.0.1.2/24 です。

ping はICMPを使います。ICMPはインターネット層のプロトコルで、10.0.1.1 から返事が二つ届きます。

三つ目はリンク層の情報です。ルーターのIPアドレス、lladdr とハードウェアアドレス、最後に REACHABLE が一行で出ます。

ルーターが待つポートを見る

コマンド
sudo ip netns exec r1 ss -ltn

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

ポートはトランスポート層のもの

この実行は、接続を待っているTCPのポートを並べます。LISTEN の行が三つあり、ポートは 2601、2616、2623 です。

どのポートも、ルーターの中の小さなプログラムにつながっています。三つとも 127.0.0.1 で待っていて、これはルーターが自分自身と話すためのアドレスです。

よくある間違い

注意

Ethernetヘッダーが相手の機器まで旅をすると思いがちです。実際は一区間しか持ちません。ルーターはそのたびに外して、次の線のために新しく付け直します。最後まで旅をするのはIPヘッダーです。

さらに挑戦:ポートのいらないパケット

ping のパケットは Ethernet IP ICMP で、TCPやUDPのヘッダーがありません。

課題に has_transport(packet) という関数を足してみましょう。TCPかUDPのヘッダーが一つでもあれば True を返します。

ウェブの頼みと ping で試し、ping にポート番号がいらない理由を考えましょう。

このラボとソースについて: スタティックルーティングのラボ:小さなネットワークの経路をブラウザーで作る

授業で使いますか?このモジュールを学生に割り当てると、教員用ガイド、自動採点つきの課題、学生ごとのラボを使えます。