このページでは、IPの性格とヘッダ、IPアドレスのクラスと特殊なアドレス、サブネットマスクとCIDRの考え方、サブネットの計算方法がわかります。
- 一言で言うと:
- ネットワークを越えて届けるためのIPと、その住所であるIPアドレスの話
- IPアドレスを「ネットワーク部」と「ホスト部」に分ける方法(クラス → サブネットマスク → CIDR)、足りなくなったアドレスへの対策(IPv6、NAT・NAPT)、エラーを知らせるICMPが出てくる
IPの性格とヘッダ(IP)→ 住所の形(IPアドレス・クラス・特殊なアドレス)→ 住所の区切り方(サブネットマスク・CIDR)→ 住所不足の対策(IPv6・NAT・NAPT)→ エラーの連絡係(ICMP・ping)
覚え方の軸
- IPは「コネクションレスで、届けるだけ」
- 品質(届いたかの確認や再送)は、TCPなど他のプロトコルに任せる
- IP自身は疎通を確かめる機能がないので、ICMPが補う
- IPアドレスは「ネットワーク部 + ホスト部」
- どこで区切るかを、昔はクラス(先頭ビットで決まる)、今はサブネットマスク/プレフィックス(/○○)で決める
- CIDRは、クラスにしばられずに区切る仕組み
- サブネットの計算は「ホスト部の全部0と全部1は使えない」
- ホスト部が n ビットなら、使えるアドレスは 2ⁿ − 2 個
- 全部0はネットワークアドレス、全部1はブロードキャストアドレス
- ネットワークアドレスは「IPアドレス AND サブネットマスク」
IP:ネットワークを越えて届ける(★)
- IP(Internet Protocol):
- インターネットの仕組みの中でも重要な役割を持つ、ネットワーク層のプロトコル
- IP自身の機能はシンプルなので、通信品質のためには他のプロトコルと組み合わせて使う
- IPの特徴:
- パケット通信技術である
- コネクションレス型通信である
- IPアドレスを使った経路制御を行う
- ノード間のコネクション確立の方式:
- コネクション型は、相手の確認と通信経路の設定をしてから通信を始める
- コネクションレス型は、相手の確認と通信経路の設定をせずに、すぐに通信を始める
- 例えば、コネクション型は電話(相手が出てから話す)、コネクションレス型は手紙(相手がいるか確かめずに出す)
- トランスポート層での対応:
- TCPがコネクション型、UDPがコネクションレス型
- IPv4とIPv6:
- アドレス資源を32ビットで管理するIPv4と、128ビットで管理するIPv6がある
- ルーティング:
- ネットワーク層のプロトコルは、ネットワークを越えた通信を提供する
- IPでは、ネットワークどうしをつなぐルータが、IPアドレスを手がかりに通信を振り分ける
- ルータは、宛先IPアドレスがネットワークの外なら、宛先により近いルータへ転送を繰り返して、パケットを目的地に届ける。これをルーティングという
IPヘッダ(IPv4)
- IPv4ヘッダの項目:
- バージョン、ヘッダ長、優先順位、パケット長、識別番号、フラグ、フラグメントオフセット、TTL(生存時間)、プロトコル番号、ヘッダチェックサム、送信元IPアドレス(32ビット)、送信先IPアドレス(32ビット)、オプション(可変長)、パディング
IPv4ヘッダの主な項目(★)
| 項目 | 中身 |
|---|---|
| TTL(生存時間) | Time To Liveの略。パケットの生存時間(通過できるルータの最大数)。パケットが永久にループするのを避けるため、ルータを通るたびに1ずつ減らし、0になったら破棄する。同時に、送信元にICMPタイプ11(時間超過:TTL equals 0)のメッセージを送り、時間切れで破棄したことを伝える |
| プロトコル番号 | TCPなどの上位プロトコルを識別する番号。枠は0〜255 |
| ヘッダチェックサム | IPヘッダ部分を対象に計算した誤り検出のための値。IPヘッダに誤りがないことを確かめる |
主なプロトコル番号
| プロトコル | プロトコル番号 |
|---|---|
| ICMP | 1 |
| TCP | 6 |
| UDP | 17 |
| IPv6 | 41 |
- TTLの例え:
- 回数券。ルータを1つ通るたびに1枚ちぎり、なくなったらそこで終わり。迷子のパケットがずっとさまよい続けないようにする
- プロトコル番号とポート番号の違い(ひっかけ注意):
- プロトコル番号は、IPヘッダの中で「中身はTCPか、UDPか」を示す(TCPは6)
- ポート番号は、TCP・UDPヘッダの中で「どのアプリか」を示す(HTTPは80)
IPアドレス:ネットワークの中の住所(★)
- IPアドレス:
- ネットワーク層のプロトコルIPで使う、ノードを特定するためのアドレス
- インターネットにつながるノードは、インターネット上で一意のIPアドレスを持つ必要がある
- IPアドレスの管理:
- 各国のNIC(ネットワークインフォメーションセンター)が、割当てなどを管理している
- インターネットに直接つなぐときは、ISP(インターネットサービスプロバイダ)に申請して取得する
- ダークネット:
- IPv4のアドレスはほとんどが割当て済みだが、使われていないアドレスも相当数ある
- このような、使えるが使われていないIPアドレス空間のこと
① IPアドレスの表記と構成
- IPアドレスの表記:
- IPv4では、32桁の2進数を使う
- ふつうは、8ビットずつ区切って10進数で書く
- 表記の例:
- 2進数表記は、11001011 00000000 01110001 00000101
- 10進数表記は、203.0.113.5
- IPアドレスの構成:
- ネットワークアドレス部とホストアドレス部でできている
- ネットワークアドレス部:
- 例えば、企業の組織単位にネットワークがある場合、それぞれのネットワークを一意に識別する部分
- 同じネットワークに属するノードは、ネットワークアドレスが同じ
- ホストアドレス部:
- 同じネットワークに属するノードを一意に識別する部分
- IPアドレスでわかること:
- そのノードが「どのネットワークに属するか」と「どのホストか」
- 例えば、「○○町(ネットワーク部)の△番地(ホスト部)」
② IPアドレスクラス
- アドレスクラス:
- 従来のIPネットワークで、IPアドレスを先頭4ビットまでの値で4つの種類に分ける考え方
- アドレスクラスの欠点:
- ホストアドレス部のビット数が多いほど、各ネットワークで使えるIPアドレスは多くなる
- でも、使われずに無駄になるIPアドレスが出やすい
IPアドレスのクラス(★)
| クラス | 先頭ビット | ネットワーク部 | ホスト部 | 同じネットワーク内のIPアドレス数 |
|---|---|---|---|---|
| クラスA | 0 | 8ビット | 24ビット | 16,777,214(2²⁴ − 2) |
| クラスB | 10 | 16ビット | 16ビット | 65,534(2¹⁶ − 2) |
| クラスC | 110 | 24ビット | 8ビット | 254(2⁸ − 2) |
| クラスD | 1110 | (分けない) | (分けない) | マルチキャスト用アドレス |
- クラスCで使えるアドレス数:
- ホストアドレス部が8ビットのクラスCで使えるIPアドレスは、ネットワークアドレスとブロードキャストアドレスを除いた 2⁸ − 2 = 254個
- クラスD:
- IPマルチキャスト用に予約された特別のアドレス
- ネットワークアドレス部とホストアドレス部に分けない
- IPマルチキャストの識別には「1110」の後ろの28ビットを使い、範囲は224.0.0.0〜239.255.255.255
- クラスの例え:
- クラスAは、1つの町に1,600万軒が入る巨大な町。クラスCは、254軒しか入らない小さな町。中くらいの会社が巨大な町をもらうと、空き地だらけになる
③ 特殊なIPアドレス
- ネットワークアドレス:
- ホストアドレス部がすべて「0」のアドレス
- ネットワーク自体を指す
- ブロードキャストアドレス:
- ホストアドレス部がすべて「1」のアドレス
- ネットワーク内のすべてのノード宛てを示す
- ループバックアドレス:
- 127.0.0.1
- 自分自身を表すIPアドレス
- グローバルIPアドレス:
- インターネットにつながったノードに、一意に割り当てられたIPアドレス
- プライベートIPアドレス:
- 組織内だけで通用するIPアドレス
- 例えば、グローバルIPアドレスは「外から届く住所」、プライベートIPアドレスは「社内の内線番号」
プライベートIPアドレスの範囲(RFC 1918)(★試験で問われる)
| クラス | 範囲 |
|---|---|
| クラスA | 10.0.0.0 〜 10.255.255.255 |
| クラスB | 172.16.0.0 〜 172.31.255.255 |
| クラスC | 192.168.0.0 〜 192.168.255.255 |
- 試験での出方(試験):
- クラスCのプライベートIPアドレスとして使える範囲が問われることがある
- 覚え方:
- 「10」「172.16〜172.31」「192.168」。クラスBは、16〜31の範囲(172.32は外れる。ひっかけ注意)
通信の種類
| 種類 | 中身 |
|---|---|
| ユニキャスト | 単一の送信先を指定して行う通信 |
| ブロードキャスト | ネットワークに属しているノード全体に対して行う通信 |
| マルチキャスト | 指定した複数の送信先に、同じデータを送る通信。ルータがデータを複製するので、ユニキャストを何回も行うより負荷を小さくできる |
- IGMP(Internet Group Management Protocol):
- マルチキャストグループ管理用のプロトコル
- グループへの参加や離脱をホストが通知したり、グループに参加しているホストの有無をルータがチェックしたりするときに使う
- 通信の種類の例え:
- ユニキャストは個人宛ての手紙、ブロードキャストは町内放送、マルチキャストは「申し込んだ人だけに届くメルマガ」
サブネットマスク:ネットワークを小さく分ける(★試験によく出る)
① サブネットマスク
- サブネットマスク:
- アドレスクラスの欠点を補うため、クラスにしばられずにネットワークアドレス部とホストアドレス部を分けるために考えられた
- IPアドレスと同じく32ビットで表す
- 左端から続く「1」の部分がネットワークアドレス部、「0」の部分がホストアドレス部
- サブネットアドレス:
- サブネットマスクを使うと、ホストアドレス部の左端から数ビットを、ネットワークアドレス部に割り当てられる
- これで、同じネットワークの中に、いくつかの小さなネットワークを作れる
- このとき、割り当てたホストアドレス部の一部のこと
- サブネット:
- 分割したネットワーク
- 例えば、1つの町(ネットワーク)を、丁目(サブネット)に分ける
サブネットマスクの例
- IPアドレス:
- クラスCの 192.168.5.75(11000000 10101000 00000101 01001011)
- サブネットマスク:
- 255.255.255.240(11111111 11111111 11111111 11110000)
- ネットワークアドレス:
- 2つのビットごとの論理積(AND)で、192.168.5.64(11000000 10101000 00000101 01000000)
- サブネットの数:
- ホストアドレス部(8ビット)の上位4ビットをサブネットアドレスにしているので、16(2⁴)個のサブネットに分けられる
- 各サブネットのIPアドレス数:
- ホストアドレス部の下位4ビットが、すべて「0」のサブネット自体を指すアドレスと、すべて「1」のブロードキャストアドレスを除いた、14(2⁴ − 2)個
- ネットワークアドレスとホストアドレスの求め方:
- IPアドレスをa、サブネットマスクをmとする。「&」はビットごとの論理積、「〜」はビット反転
- ネットワークアドレス= a & m
- ホストアドレス= a & 〜m
② プレフィックス表記
- プレフィックス表記:
- ネットワークアドレス部とホストアドレス部の区切りを、ネットワークアドレス部の桁数で示す方法
- IPアドレスの後ろに、ネットワークアドレス部の長さ(ビット数)を「/」で区切って書く
- 例えば、ネットワークアドレス部が29桁なら「198.51.100.0/29」
- プレフィックス:
- 「接頭辞」という意味
- IPアドレスの場合は、ネットワークアドレス部分の桁数(長さ)
- サブネットマスクとの対応:
- 255.255.255.0 は /24、255.255.255.240 は /28(1が28個並ぶ)
ブロードキャストアドレスの例
- 問題:
- IPv4アドレス 172.20.45.10/20 のホストがあるネットワークの、ブロードキャストアドレスは何か
- 考え方:
- 「/20」は、先頭から20ビット目までがネットワークアドレス部
- ブロードキャストアドレスは、ホストアドレス部(残り12ビット)をすべて1にしたアドレス
- 計算:
- 第3オクテットの45は、2進数で 00101101。先頭4ビット(0010)までがネットワーク部
- ホスト部をすべて1にすると、00101111 = 47、第4オクテットは11111111 = 255
- 答えは 172.20.47.255
- 検算:
- ネットワークアドレスは 172.20.32.0(00100000 = 32)。/20のホスト部は12ビットなので 2¹² = 4,096個
- 32 + 4,096 ÷ 256 = 32 + 16 = 48 なので、次のネットワークは172.20.48.0。その1つ手前の 172.20.47.255 がブロードキャストアドレスで合う
例題(サブネットの計算)
- 問題:
- 10.1.5.130/26 のホストについて、①ネットワークアドレス、②ブロードキャストアドレス、③このネットワークでホストに割り当てられるアドレスの数を求めよ
- 答え:
- /26なので、第4オクテットの上位2ビットがネットワーク部、下位6ビットがホスト部
- 130 = 10000010。ホスト部を0にすると 10000000 = 128 なので、①は 10.1.5.128
- ホスト部を1にすると 10111111 = 191 なので、②は 10.1.5.191
- ③は 2⁶ − 2 = 64 − 2 = 62個(10.1.5.129〜10.1.5.190)
- 検算:
- 128 + 64 − 1 = 191 で、ブロードキャストアドレスと一致
- 速く解くコツ:
- ホスト部が6ビットなら、ブロックの大きさは2⁶ = 64。第4オクテットは「0、64、128、192」で区切られるので、130は「128〜191」のブロックに入る
③ CIDR
- CIDR(Classless Inter-Domain Routing):
- クラスによる分け方では、割り当てられたのに使われないIPアドレスが多く出てしまった
- そこで、IPアドレスを効率よく使うために考えられた、サブネットマスクを使った仕組み
- ネットワークアドレス部を、ネットワークの大きさに合わせて任意の長さに変えられるようになった
- 例えば、500台の会社に、クラスB(6万5千台分)ではなく、/23(510台分)を割り当てられる
- スーパーネット化:
- CIDRで、連続するネットワークを束ねて、1つの集約したネットワーク(スーパーネットワーク)を作ること
- スーパーネット化の例:
- 2つのネットワーク 10.10.4.0/23 と 10.10.6.0/23 は、左から22ビット目までが同じ
- そこで、サブネットマスクを「11111111 11111111 11111100 00000000」にすれば、1つのネットワーク 10.10.4.0/22 に集約できる
- スーパーネット化の検算:
- 第3オクテットは、4 = 00000100、6 = 00000110。上位6ビット(000001)が同じなので、16 + 6 = 22ビットまで同じ
- /22は1,024個分(10.10.4.0〜10.10.7.255)で、/23(512個分)2つの合計と一致する
- スーパーネット化の効果:
- ルータが持つ経路情報の削減と、ルーティング負荷の軽減ができる
- 経路集約ともいう
- 例えば、「1丁目宛て」「2丁目宛て」と別々に覚える代わりに、「○○町宛て」とまとめて覚える
混同しやすいペア
- コネクション型 / コネクションレス型
- コネクション型は、相手の確認と通信経路の設定をしてから通信する(TCP)
- コネクションレス型は、確認や設定をせずにすぐ通信する(IP、UDP)
- TTL / ホップ・リミット
- TTLは、IPv4の生存時間。ルータを通るたびに1減り、0で破棄
- ホップ・リミットは、IPv6での同じ役割の項目
- プロトコル番号 / 次ヘッダ
- プロトコル番号は、IPv4で上位プロトコルを示す(ICMP 1、TCP 6、UDP 17、IPv6 41)
- 次ヘッダは、IPv6で次の拡張ヘッダ、または上位プロトコルを示す
- プロトコル番号 / ポート番号
- プロトコル番号は、IPヘッダで「TCPかUDPか」などを示す
- ポート番号は、TCP・UDPヘッダで「どのアプリか」を示す
- ネットワークアドレス部 / ホストアドレス部
- ネットワークアドレス部は、どのネットワークかを示す
- ホストアドレス部は、そのネットワークのどのノードかを示す
- クラスA / クラスB / クラスC
- クラスAは、先頭0。ネットワーク部8ビット、16,777,214台
- クラスBは、先頭10。ネットワーク部16ビット、65,534台
- クラスCは、先頭110。ネットワーク部24ビット、254台
- クラスD / マルチキャストアドレス(IPv6)
- クラスDは、IPv4のマルチキャスト用(先頭1110、224.0.0.0〜239.255.255.255)
- IPv6のマルチキャストアドレスは、上位8ビットが11111111(FF00::/8)
- ネットワークアドレス / ブロードキャストアドレス
- ネットワークアドレスは、ホスト部がすべて0。ネットワーク自体を指す
- ブロードキャストアドレスは、ホスト部がすべて1。全ノード宛て
- グローバルIPアドレス / プライベートIPアドレス
- グローバルIPアドレスは、インターネットで一意
- プライベートIPアドレスは、組織内だけで通用する(10.*、172.16〜31.*、192.168.*)
- ループバックアドレス / ブロードキャストアドレス
- ループバックアドレスは、127.0.0.1。自分自身
- ブロードキャストアドレスは、ネットワーク内の全員
- ユニキャスト / ブロードキャスト / マルチキャスト
- ユニキャストは、1つの宛先
- ブロードキャストは、ネットワークの全員
- マルチキャストは、指定した複数の宛先(ルータが複製。グループ管理はIGMP)
- マルチキャスト / エニーキャスト
- マルチキャストは、グループの全員に届く
- エニーキャストは、グループのうち最も近い1つにだけ届く(IPv6で追加)
- サブネットマスク / プレフィックス表記
- サブネットマスクは、32ビットで、1の部分がネットワーク部(255.255.255.240)
- プレフィックス表記は、ネットワーク部の桁数を「/」の後ろに書く(/28)
- サブネット化 / スーパーネット化
- サブネット化は、ホスト部の一部をネットワーク部にして、ネットワークを小さく分ける
- スーパーネット化は、連続するネットワークを束ねて、大きな1つにまとめる(経路情報の削減)
- アドレスクラス / CIDR
- アドレスクラスは、先頭ビットでネットワーク部の長さが決まる(無駄が出やすい)
- CIDRは、サブネットマスクで、ネットワーク部を任意の長さにできる