第 8 回 IPネットワーク

本日の内容


このドキュメントは http://edu.net.c.dendai.ac.jp/ 上で公開されています。

8-1. アイスブレイク

本日の属性

配線が得意 外国人とネットワークでやり取りしたことがある
学籍番号 氏名 (番号欄)
人脈を持っている 家にルータがある

8-2. レポート課題

ワーク8-1

グループでかぶらないように調整して、 一人次の4つずつ、通信会社、大学、外国企業、その他自由 (例えば、NTT、東京大学、マイクロソフト、JR東日本など)の ホー ムページに関して、ping コマンドを送り観測する。 そして、グループでまとめてレポートにする。 なお、ping に応答しないサーバもある。 応答しないサーバも3つまでは報告可能だが、4つ全部が応答しない場合は、応答するのものを少なくとも1つは見つけること。

例8-1

$ ping www.dendai.ac.jp
PING www.dendai.ac.jp (133.20.16.174) 56(84) bytes of data.
64 bytes from www.dendai.ac.jp (133.20.16.174): icmp_seq=1 ttl=61 time=1.26 ms
64 bytes from www.dendai.ac.jp (133.20.16.174): icmp_seq=2 ttl=61 time=1.40 ms
64 bytes from www.dendai.ac.jp (133.20.16.174): icmp_seq=3 ttl=61 time=1.38 ms
64 bytes from www.dendai.ac.jp (133.20.16.174): icmp_seq=4 ttl=61 time=1.36 ms
64 bytes from www.dendai.ac.jp (133.20.16.174): icmp_seq=5 ttl=61 time=1.36 ms
^C(Windows以外はCtrl-Cで止める必要があるかも)
--- www.dendai.ac.jp ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4006ms
rtt min/avg/max/mdev = 1.265/1.355/1.402/0.062 ms

例8-2

$ ping www.c.dendai.ac.jp
PING www.c.dendai.ac.jp (150.60.176.204) 56(84) bytes of data.
^C
--- www.c.dendai.ac.jp ping statistics ---
16 packets transmitted, 0 received, 100% packet loss, time 15345ms

この場合、応答が返ってきてない

ワーク8-2

上記サーバに対してtraceroute を行い、結果を集計しなさい。

例8-3

$ traceroute www.dendai.ac.jp
traceroute to www.dendai.ac.jp (133.20.16.174), 30 hops max, 60 byte packets
 1  * * *
 2  133.20.160.254 (133.20.160.254)  0.671 ms  0.605 ms  0.561 ms
 3  133.20.110.158 (133.20.110.158)  1.243 ms  1.443 ms  1.401 ms
 4  www.dendai.ac.jp (133.20.16.174)  1.267 ms  1.259 ms  1.278 ms

例8-4

$ traceroute www.c.dendai.ac.jp
traceroute to www.c.dendai.ac.jp (150.60.176.204), 30 hops max, 60 byte packets
 1  * * *
 2  * * *
 3  l7fw-v882.ntwk.dendai.ac.jp (133.20.110.157)  1.805 ms  1.747 ms  1.841 ms
 4  d1isw-v154.ntwk.dendai.ac.jp (133.20.17.150)  1.851 ms  2.074 ms  1.976 ms
 5  saitama-RM-AE-10-115.s5.sinet.ad.jp (150.99.182.77)  2.018 ms  4.547 ms  1.916 ms
 6  tokyo1-RM-ET-5-0-0-1112.s5.sinet.ad.jp (150.99.71.25)  2.895 ms tokyo1-GM-ET-5-1-0-1112.s5.sinet.ad.jp (150.99.89.153)  2.948 ms  2.918 ms
 7  210.173.176.190 (210.173.176.190)  3.133 ms 150.99.91.223 (150.99.91.223)  3.015 ms 210.173.176.190 (210.173.176.190)  3.219 ms
 8  as2516-2.ix.jpix.ad.jp (210.171.224.94)  3.238 ms  3.233 ms tky001bb10.IIJ.Net (58.138.102.209)  3.258 ms
 9  tky001ip57.IIJ.Net (58.138.100.22)  3.487 ms 27.86.44.185 (27.86.44.185)  4.488 ms 27.85.230.61 (27.85.230.61)  4.727 ms
10  202.232.9.94 (202.232.9.94)  3.875 ms 27.85.199.202 (27.85.199.202)  3.233 ms  3.175 ms
11  111.87.16.42 (111.87.16.42)  3.905 ms  3.772 ms  3.805 ms
12  * * *
13  * * *
14  * * *
15  * * *
16  * * *
17  * * *
18  * * *
19  * * *
20  * * *
21  * * *
22  * * *
23  * * *
24  * * *
25  * * *
26  * * *
27  * * *
28  * * *
29  * * *
30  * * *

締切、提出方法

グループでまとめて、 来週火曜日の夕方までに <sakamoto@c.dendai.ac.jp>宛にメールすること。

8-3. 講義

ルーティング

インターネットの中でネットワークを接続する装置をルータと呼 びます(昔は IMP)。 また、異なるプロトコルで接続する装置はゲートウェイと呼びます。 ゲートウェイはルータを含みますので、広い意味での中継装置をゲートウェイ と呼ぶこともあります。

あるコンピュータが別のコンピュータにメッセージを送る場合、次の二つの送 信方法が必要になります。

  1. もし相手が同一ネットワーク内にいるなら、直接送信する
  2. もし相手が別のネットワークにいるなら、そのネットワークへパケットを 転送できるルータにメッセージを託す

このように単純にホストであっても、相手によりメッセージの送る相手を変え る必要があります。 メッセージの送り先を計算することをルーティングと言います。 インターネットのルーティングを行うのに一般的なのはルーティングテー ブルという表を使って送り方を調べる方法です。 UNIX、MacOSX、Windows、 IOS(CISCO のルータの OS)などでルーティングテー ブルを表示するにはnetstat -rn というコマンドを使います。 例えば、情報通信工学科サブネットに接続されているホストで netstat -rnを行うと次のような出力が得られます。

カーネルIP経路テーブル
受信先サイト    ゲートウェイ    ネットマスク   フラグ   MSS Window  irtt インターフェース
133.20.160.0    0.0.0.0         255.255.255.0   U         0 0          0 eth0
0.0.0.0         133.20.160.254  0.0.0.0         UG        0 0          0 eth0

「インターフェース」の eth0 はイーサーネットのポートを表しています。 例えば、相手が 133.20.160.1 である場合は、一行目が適用されます。 これは相手先のアドレスを二進列とした時、そのアドレスとネットマスクを AND 演算すると、受信先サイトのアドレスと一致するからです。

133201601 10000101000101001010000000000001 ⋀) 11111111111111111111111100000000 ------------------------------------- 10000101000101001010000000000000 133201600

一方、相手が 192.0.34.163 の場合、このような計算をしても一行目には一致 せず、二行目に一致します。 そして、フラグ G はゲートウェイを示していますので、ゲートウェイのアド レスにメッセージを渡します。

受信先サイト、ネットマスクとも 0.0.0.0 であれば、どのようなアドレスで あれ、ネットマスクと AND 演算をすれば受信先サイトに一致します。 この 0.0.0.0/0.0.0.0 というアドレスはインターネットを表し、通常 デフォルト と呼ばれたりします。 そして、このアドレスに対するゲートウェイをデフォルトゲートウェイ と呼びます。

ホップバイホップルーティング

IP パケットは発信元と受信先のアドレスは持ってますが、経路の情報は持っ ていません。 従って、経路上の各ルータはパケットの中継経路を決定しなければなりません。 この各中継点で経路を決定するルーティング方式をホップバイホップルー ティングと言います。 これに対して送信元が経路を決定するルーティング方式をソースルーティ ングと言います。 IP パケットのルーティングには通常ホップバイホップルーティングが用いら れます。

ホップバイホップルーティングではルーティングテーブルを参照して転送先を 決めます。 ルーティングテーブルはネットワークアドレス、サブネットマスク、転送先ア ドレス、使用インターフェイスなどが書かれています。 以下は Windows 10 のルーティングテーブルの例です。

Microsoft Windows [Version 10.0.17134.285]
(c) 2018 Microsoft Corporation. All rights reserved.

C:\Users\sakamoto>route print
===========================================================================
インターフェイス一覧
  9...4c 72 b9 f6 5c c5 ......Realtek PCIe GBE Family Controller
  1...........................Software Loopback Interface 1
===========================================================================

IPv4 ルート テーブル
===========================================================================
アクティブ ルート:
ネットワーク宛先        ネットマスク          ゲートウェイ       インターフェイス  メトリック
          0.0.0.0          0.0.0.0     172.16.1.254     172.16.1.149     25
        127.0.0.0        255.0.0.0            リンク上         127.0.0.1    331
        127.0.0.1  255.255.255.255            リンク上         127.0.0.1    331
  127.255.255.255  255.255.255.255            リンク上         127.0.0.1    331
       172.16.1.0    255.255.255.0            リンク上      172.16.1.149    281
     172.16.1.149  255.255.255.255            リンク上      172.16.1.149    281
     172.16.1.255  255.255.255.255            リンク上      172.16.1.149    281
        224.0.0.0        240.0.0.0            リンク上         127.0.0.1    331
        224.0.0.0        240.0.0.0            リンク上      172.16.1.149    281
  255.255.255.255  255.255.255.255            リンク上         127.0.0.1    331
  255.255.255.255  255.255.255.255            リンク上      172.16.1.149    281
===========================================================================
固定ルート:
  なし

IPv6 ルート テーブル
===========================================================================
アクティブ ルート:
 If メトリック ネットワーク宛先      ゲートウェイ
  1    331 ::1/128                  リンク上
  9    281 fe80::/64                リンク上
  9    281 fe80::e977:7d00:1ec8:f379/128
                                    リンク上
  1    331 ff00::/8                 リンク上
  9    281 ff00::/8                 リンク上
===========================================================================
固定ルート:
  なし

C:\Users\sakamoto>

ルーティング

ルーティングテーブルを作るのに、手動で行う方法と、ルータ同士で通信し 合うプログラムを使って、自動的に行う方法があります。 手動で行う方法をスタティックルーティング、 自動的に行う方法をダイナミックルーティングと言います。 ネットワークプロバイダはダイナミックルーティングにより管理されています。

ICMP

ICMP(Internet Control Message Protcol) はインターネットを管理するため の IP パケットを利用したメッセージです。 主なメッセージのタイプには次のようなものがあります。

メッセージタイプ 説明
宛先到達不能パケットが配送されない
時間超過TTL が 0 になった
パラメータ障害間違ったヘッダーフィールド
送信元抑制送信元に対して、トラフィック量を減らすように通 知する
方向変換 redirect中継ルータを教える
エコー要求ルータがいきているかどうかを尋ねる
エコー応答生きていることを返答
タイムスタンプ要求エコー要求でタイムスタンプも要求する
タイムスタンプ応答エコー応答にタイムスタンプを付加する

PING

ping コマンドはこの ICMP のエコー要求メッセージを送るコマンドです。 これにより相手が生きているかどうか、また往復にどれくらい時間がかかるか などがわかります。

また、最近ではスマホでも Ping や traceroute のアプリがあるため、スマ ホ単体でもネットワークサーバの健全性などを調べることができます。

Traceroute

Windows では tracert、Macintosh のターミナルで は traceroute、スマホのアプリでも traceroute で検索すると アプリが見つかります。

Traceroute コマンドは、目的のホストコンピュータまでのルータを順に表 示するコマンドです。 これの、原理は次のとおりです。

  1. TTL が短いパケットを宛先に送ります。(1,2,3,...30)
  2. 宛先にたどり着く前に、途中のルータで TTL が 0 になった時、ルータ はパケットを送ったホスト宛に ICMP 時間超過メッセージを送ります
  3. ICMP 時間超過を受け取ったら、その送ったルータのアドレスを表示しま す。

IP version 6

IP version 6 は既存の IP version 4 のアドレス空間の狭さやセキュリティ 問題に対応するため 1995 年に仕様が制定され、 2000 年からは JPNIC でも アドレスの割当が始まりました。 現在、ほとんどの OS で対応されています。 但し、普及していると言う状況ではありません。

IPv6 の主な特徴は次のとおりです。

  1. アドレスが 128 ビットになった。
  2. ヘッダのフィールドが 7 つだけに減り、高速なルーティングが可能になっ た。
  3. オプション対応が充実した
  4. セキュリティが強化された

アドレスの運用(RFC3513,RFC3879)

IPv4 ではアドレスは 192.168.0.1 など、 0 から 255 までの十進数の 4 つ 組をピリオドで区切って表記してました。 一方 IPv6 では FEDC:BA98:7654:3210:FEDC:BA98:7654:3210 のように 4 桁の 16 進数(16bit)の 8 つ組をコロン : で区切って表記します。 なお 0 で始まる値に関しては、0123 → 123, 0012 → 12, 0001 → 1, 0000 → 0 と、数字がすべて無くらならい範囲で 0 を省略可能です。 また 0 の組が連続する時、その 0 の組すべてを省略するため一回だけ :: と いう表記が使えます。 例えば、次のようなアドレスを考えます。

1080:0:0:0:8:800:200C:417A ユニキャストアドレス例
FE01:0:0:0:0:0:0:101 マルチキャストアドレス例
0:0:0:0:0:0:0:1 ループバックアドレス
0:0:0:0:0:0:0:0 未設定アドレス

これは :: を使うと次のように表せます。

1080::8:800:200C:417A ユニキャストアドレス例
FE01::101 マルチキャストアドレス例
::1 ループバックアドレス
:: 未設定アドレス

また下位 32 bit が IPv4 のアドレスを指すという混在環境において、下位 32 bit だけ従来の十進数 4 つ組をピリオドで区切った表記もあります。 例えば 0:0:0:0:0:0:13.1.68.3 や ::13.1.68.3、あるいは 0:0:0:0:0:FFFF:129.144.52.38 や ::FFFF:129.144.52.38 のように書きます。

IPv6 もアドレスを二分割して考えます。有効な上位bit の長さを表すため、 IPv4 と同様に / の後に十進数で長さを書きます。 以下は例です。

  1. 12AB:0000:0000:CD30:0000:0000:0000:0000/60
  2. 12AB::CD30:0:0:0:0/60
  3. 12AB:0:0:CD30::/60

IPv4 ではアドレスの上位 4 bit で最初に 0 が来る位置によりクラスを 5 個 に分けていました。 一方、IPv6 では上位 10 bit でアドレスの性質を表します。 これは以下のようになっています(RFC5735)。

アドレスタイプ IPv6 IPv4
未設定 ::/128 なし
ループバック ::1/128 127.0.0.1/32
マルチキャスト
(ブロードキャストを含む)
FF00::/8 224.0.0.0/4
ホストアドレス部すべてが 1
リンクローカルユニキャスト FE80::/10 169.254.0.0/16(RFC3927)
サイトローカルユニキャスト 廃止(RFC3879) 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16
グローバルユニキャスト その他のアドレス。 プライベートを除く 0.0.0.0/1, 128.0.0.0/2, 192.0.0.0/3
ユニークローカルユニキャスト FC00::/7 (RFC4193) なし

なお、IPv4 でローカルなブロードキャスト 255.255.255.255/32 に対応する IPv6 アドレス(ローカルなホスト全てへのマルチキャスト)は FF02::1/128 です。

ユニキャスト

ユニキャストのアドレスは通常上位 64 bit がネットワークアドレスで、下位 64 bit がインターフェイスアドレスになっています。

下位64bit は通常インターフェイス固有の MAC アドレスなどから自動的に設 定されます。 改訂EUI-64 フォーマットと呼ばれるアドレスの計算方法は次のようになりま す。 Ethernet アダプタに固有に割り振られている MAC アドレスは 48 bit で通常 は二桁の 16 進数(8 bit) の 6 こ組をハイフンで結んだものになっています (XX-XX-XX-XX-XX-XX )。

  1. これに対して上位の 3 こと下位の 3 この間に FF FE を入れます (XXXX:XXFF:FEXX:XXXX)。
  2. 上位 7 bit 目を on にして、8 bit 目を off にします。 つまり 0200:0:0:0 と OR を取り、 FEFF:FFFF:FFFF:FFFF と AND をとります。
  3. 例えば、 00-0B-97-28-C6-D5 という MAC アドレスだったら、 020B:97FF:FE28:C6D5 というアドレスに変換されます。

上位の 64 bit に関しては、通常組織に上位 48 bit が割り当てられ、16bit がサブネットになります。 現在 2000::/3 の割り当て、つまり 2000:0:0::/48 から 3FFF:FFFF:FFFF::/48 が割り当て対象になっています。 但し、特殊なアドレスとして次のものがあります。

  1. 2001:0DB8::/16 は出版用のアドレスで、このアドレスは書籍などで例を 出すのに使います。 運用に使ってはいけません。
  2. 2002:: は 6to4 という運用(後述)で使います。

例えば 00-0B-97-28-C6-D5 という MAC アドレスを持つマシンがサブネット 番号 1 に接続されている場合、グローバルなユニキャストアドレスの例とし ては 2001:0DB8::1:020B:97FF:FE28:C6D5 などになります。

IPv6 における、アドレス自動設定へのプライバシー拡張(RFC3041)

前節のように IPv6 では DHCP を用いなくても各機器はネットワークインタ フェースの持つ MAC アドレスからホストアドレスを自動生成することができ ます。 しかし、このようにして生成された IPv6 アドレスとと個人情報と紐つけする などすると個人情報が漏洩する恐れがあります。 そのため、唯一性を保ちながら、プライバシが漏洩しないようなアドレスの生 成法が RFC3041 により定められています。 これは、端的に言えば暗号理論的なハッシュ関数を利用して、唯一性の保証さ れているアドレスを種として、ホストアドレスをハッシュ値により求めるもの です。

暗号理論的なハッシュ関数とは、任意の入力から固定長の出力を得る関数のう ち、次のような特性を持つものです。

  1. 比較的高速に計算できる
  2. 逆に得られた出力から入力の一部ですら容易に判定することはできな い
  3. 入力が 1bit でも変化すると、出力は大きく変化する
  4. 異なる入力から同じ出力を得ることはあるが(コリジョン)、ある入力に対 してコリジョンを発生させるもう一つの入力を求めることは困難

このような仕組みにより、MAC アドレスとは無関係で、唯一のアドレスを自動 的に生成できます。

ローカルアドレス

ローカルリンクネットで使えるアドレスは FE80::/64 インターフェイスID です。 例えば 00-0B-97-28-C6-D5 という MAC アドレスを持つマシンのリンクロー カルアドレスは FE80::020B:97FF:FE28:C6D5 となります。

なお、ローカルアドレスはネットワークアドレスが共通のため、インターフェ イス番号をアドレスの後ろに %n という形で付加する必要があります。 Windows では netsh interface ipv6 show interface でインター フェイス番号の一覧を得ることができます。

RFC 3513 にはサイトローカルアドレスも定義されていますが、技術的な問題 点が指摘されたため RFC3879 で廃止されています。

エニーキャストアドレス

近隣のホストやルータなど、どのホストでもいいから一台と通信したい場合 (IPアドレスが欲しい場合など)、エニーキャストアドレスを使います。 これはインターフェイス ID が 0 になっているものです。

マルチキャストアドレス

複数のホストとやりとりするためのアドレスがマルチキャストアドレスで、上 位 8 bit が 1 、次の 4 bit がフラグ、次の 4 bit が範囲を示しています。 範囲は 1 がインターフェイス、 2 がリンクローカル、 4 が管理者ローカル、 5 がサイトローカル、8 が組織ローカル、 E が全域となっています。 例えば、 NTP のグループ ID は 16 進数で 101 となっていますので、マルチ キャストアドレスは以下のようになります。

FF01::101
同じノード(ホスト)上の全 NTP サーバ
FF02::101
同じリンク上の全 NTP サーバ
FF05::101
同じサイト内の全 NTP サーバ
FF0E::101
インターネット全体の NTP サーバ

すべてのノードのグループ ID は 1, すべてのルータのグループ ID は 2 で す。

東京電機大学のネットワーク

2005年度卒業研究

小山 智広「大規模ネットワークシステムの調査」

2007年度卒業研究

盛田 修平「キャンパ スネットワークシステムの調査」

2014年度卒業研究

齋藤 圭「キャンパスネットワークの調査」

2018年のネットワーク

東京電機大学キャンパスネットワークは2018年度に増強が行われました。 バックボーンが10Gbit Ethernet となり、無線LANが増強されました。

基幹スイッチ
基幹スイッチ
フロアスイッチ
フロアスイッチ
タイムサーバーなど
タイムサーバーなど
対外接続の集約
対外接続の集約

坂本直志 <sakamoto@c.dendai.ac.jp>
東京電機大学工学部情報通信工学科