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

無料レッスン

アドレスとマスクで同じネットワークか見分ける

このレッスンのあとで: 二つの機器が同じネットワークにいるかどうかを判断できる。

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

バイト先のプリンターが動かない

ラーメン屋のレジのパソコンから、厨房のプリンターへ注文票を出しています。今まではちゃんと印刷できていました。

新しいプリンターが届き、店長がアドレスを手で打ち込みました。すると、注文票が一枚も出なくなりました。

二つのアドレスはほとんど同じに見えます。でも数字をよく読むと、別のネットワークにいることが分かります。

このレッスンのゴール

メモ

二つの機器が同じネットワークにいるかどうかを判断できる。

重要な言葉

ことばいみれい
IPアドレスネットワークの中で機器を指す番号192.168.10.21
オクテットアドレスを四つに区切った一つ一つの数で、0から255まで
サブネットマスクアドレスのどこまでがネットワークを表すかを示す数255.255.255.0
ネットワーク部同じネットワークの機器がみな共通に持つ部分
ホスト部ネットワークの中の一台を選ぶ部分
プライベートアドレス内側のネットワーク用に取っておかれ、インターネットでは使われない範囲

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

アドレスは二つの部分でできている

IPアドレスは、192.168.10.21 のように四つのオクテットでできています。どこで区切るかを決めるのがマスクです。

マスクのオクテットが255のところは、ネットワーク部です。0のところは、一台を選ぶホスト部です。

255.255.255.0 は /24 とも書きます。最初の24ビット、つまり三つのオクテットがネットワークを表すという意味です。

例:マスクで区切る

アドレスマスクネットワーク部ホスト部
192.168.10.21255.255.255.0(/24)192.168.1021
10.0.12.2255.255.255.0(/24)10.0.122
172.20.3.8255.255.0.0(/16)172.203.8

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

Pythonに/24のマスクを聞く

コマンド
python3 -c "print(__import__('ipaddress').ip_network('10.0.12.0/24').netmask)"

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

h1のネットワークを聞く

コマンド
python3 -c "print(__import__('ipaddress').ip_interface('10.0.1.2/24').network)"

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

ネットワーク部が同じなら同じネットワーク

二台を比べるときは、同じマスクでそれぞれのネットワーク部を出します。二つが一致すれば、同じネットワークです。

同じネットワークなら、二台は直接やり取りできます。違えば、パケットは必ずルーターを通ります。

コンピューターは、オクテットごとにANDという計算をします。マスクが255ならそのまま残り、0なら0になります。

例:ラーメン屋の二台のプリンター

機器アドレス/24 のネットワーク部レジと同じか
レジのパソコン192.168.10.21192.168.10.0本人
前のプリンター192.168.10.60192.168.10.0同じ
新しいプリンター192.168.11.60192.168.11.0違う

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

h1にルーターへの送り方を聞く

コマンド
sudo ip netns exec h1 ip route get 10.0.1.1

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

h1にr2への送り方を聞く

コマンド
sudo ip netns exec h1 ip route get 10.0.12.2

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

h1が決めたこと

一つ目の答えは 10.0.1.1 dev to-r1 で始まり、via がありません。ルーターは h1 と同じネットワークにいるので、h1 は直接送ります。

二つ目の答えは 10.0.12.2 via 10.0.1.1 で始まります。10.0.12 は h1 のネットワーク部ではありません。だから h1 は、パケットを自分のルーター 10.0.1.1 に渡します。

内側用に取っておかれた範囲

プライベートアドレスの範囲は三つあります。家も学校もお店も、同じ範囲を何度も使い回しています。インターネットはこれらを運びません。

それ以外のアドレスはグローバルアドレスになれて、世界で一か所でしか使われません。家のスマホは、たいてい 192.168.x.x のようなプライベートアドレスです。

例:三つのプライベートの範囲

範囲始まりの数よく見る場所
10.0.0.0/810大きな会社や学校
172.16.0.0/12172.16 から 172.31 まで中くらいのネットワーク
192.168.0.0/16192.168家や小さなお店

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

よくある間違い

注意

数字が近いアドレスは同じネットワークだと思いがちです。大事なのはネットワーク部だけです。/24 なら、192.168.10.60 と 192.168.11.60 は三つ目のオクテットが違うので、別のネットワークです。

さらに挑戦:255でも0でもないマスク

マスクには、255.255.255.192(/26)のように、一つのオクテットの途中で区切るものもあります。Python の & は、どんな数でもANDを計算します。

Python で 200 & 192 と 100 & 192 を試しましょう。このマスクで 192.168.10.100 と 192.168.10.200 は同じネットワークですか。自分の same_network で答えを確かめましょう。

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

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