IPv4についてメモ書き。
そもそもIPアドレスとはなんぞや
IPアドレスはInternet Protocol address
の略。
ネットワーク上の機器を識別するために割り振られる番号。
IPv4以外にもIPv6という方式もありますが、本記事はIPv4のメモ書き。
IPv4は歴史的経緯(IPアドレス不足)から、従来のクラスフル方式からクラスレス方式へ移行しています。
個人的にはこの前提を知らずに色々な説明を読んでしまうと混乱に元になる気がします。
歴史的な流れについてはJPNICの下記の記事が分かりやすい。
JPNIC - インターネット10分講座:IPv4アドレス
JPNIC - インターネット歴史年表
JPNIC - 日本におけるインターネット資源管理の歴史~~
IPアドレス概要
IPアドレスは32ビット。8ビットごとにドット区切り10進数で表記が一般的。
11000000101010000000000000000001
というIPアドレスがあると8ビットごとに区切って10進数に変換。
-
11000000
を10進数変換すると192 -
10101000
を10進数変換すると168 -
00000000
を10進数変換すると0 -
00000001
を10進数変換すると1
192.168.0.1
10進数表記 | 2進数表記 |
---|---|
192.168.0.1 | 11000000 10101000 00000000 00000001 |
ドットで区切らない表記
8ビットごとにドット区切り10進数で表記が一般的と記載しましたが、下記のようにドット区切りしない表記も可能ではあります。
ping 3405803776
上記のようにpingを実行すると、203.0.113.0
と評価されます。
これは 10進数 3405803776
を 2進数に変換すると 11001011000000000111000100000000
となり。
これを8ビットごとに区切るってみると
11001011
-> 203
00000000
-> 0
01110001
-> 113
00000000
-> 0
となるからです。
クラスフル方式
1981年9月に RFC791 としてIPの仕様が策定されているが。
クラスフル方式は初期のインターネットで利用されていた方式。
IPv4アドレスはネットワークの識別(ネットワーク部)とホストの識別部分(ホスト部)に区切られ、昔はこの区切り部分をIPv4アドレスの上位ビットによって決定する方式が採用されていた。
またこの区切りをクラスと呼んでいた。
クラス | 上位ビット | アドレス範囲 | ネットワーク部のビット | ホスト部のビット | 各ネットワーク部に割り当てられる最大ホスト数 |
---|---|---|---|---|---|
A | 0 | 0.0.0.0 ~ 127.255.255.255 | 8ビット | 24ビット | 16,777,214 |
B | 10 | 128.0.0.0 ~ 191.255.255.255 | 16ビット | 16ビット | 65,534 |
C | 110 | 192.0.0.0 ~ 223.255.255.255 | 24ビット | 8ビット | 254 |
D | 1110 | 224.0.0.0 ~ 239.255.255.255 | - | - | - |
E | 11110 | 240.0.0.0 ~ 247.255.255.255 | - | - | - |
クラスCをみると4オクテッド目の0~255までがホスト部となるため最大ホスト数は256個になりそうなものだが、実際は254個。
これは
- ホスト部のビットが全部0のアドレス
- ホスト部のビットが全部1のアドレス
上記の2つのアドレスは実際にはホストに割り当てられない特殊なアドレスとなっているため256-2で254個となっている。
- ホスト部が全部0のアドレスはネットワークアドレスと呼ばれ、ネットワーク自体を表す。
- ホスト部が全部1のアドレスはブロードキャストアドレスと呼ばれ、特殊な
ネットワーク部が255のアドレスは
ただし、この区切りだとネットワーク規模が大雑把すぎて無駄が多いので、現在のIPv4ではネットワーク部とホスト部の区切り 位置を任意のビット数で区切れるクラスレス方式へ移行した。
クラスレス方式
クラスレスでは、ネットワーク部のビット長(プリフィクス長)を明示する必要がある。(サブネットマスク)
アドレスのあとに / で区切って プリフィクス長を表記する。
この表記方法をCIDR(Classless Inter-Domain Routing)
と呼ぶ。
なおCIDRについては、1993年9月にRFC1518として発行されている。
exsample
ipaddress / 28とか書いてあればipアドレスの先頭から28bitがネットワーク部で残りの4bitがホスト部という意味。
CIDR表記 | ホスト部 |
---|---|
192.168.0.0/28 | 192.168.0.0~192.168.0.15 (16ホスト) |
上記の例だと、19.168.0.0 = 11000000 10101000 00000000 00000000となり先頭から28bitの11000000 10101000 00000000 0000がネットワーク部となり残りの0000がホスト部。
クラスフル方式からクラスレス方式へ(CIDR導入)
下記、記事にCIDR導入について記載があり、歴史的な流れについてイメージできるかも。
グローバルIPアドレスとプライベートIPアドレス
IPアドレスにはグローバルIPアドレスとプライベートIPアドレスが存在する。
プライベートIPアドレスはインターネットに直接接続されていないネットワークで自由に使っていいアドレス。
グローバルIPアドレスはインターネットに直接接続するためにNIC(Network Information Center)から割り当てられるアドレス。
プライベートIPアドレスはRFC1918にて範囲は下記のように決定されている。
アドレス範囲 |
---|
10.0.0.0 ~ 10.255.255.255 (10/8 prefix) |
172.16.0.0 ~ 172.31.255.255 (172.16/12 prefix) |
192.168.0.0 ~ 192.168.255.255 (192.168/16 prefix) |
10.0.0.0 ~ 10.255.255.255 (10/8 prefix)のビット表記 |
---|
00001010.00000000.00000000.00000000 From |
00001010.11111111.11111111.11111111 To |
11111111.00000000.00000000.00000000 サブネットマスク |
172.16.0.0 ~ 172.31.255.255 (172.16/12 prefix)のビット表記 |
---|
01111010.00010000.00000000.00000000 From |
01111010.00011111.11111111.11111111 To |
11111111.11110000.00000000.00000000 サブネットマスク |
192.168.0.0 ~ 192.168.255.255 (192.168/16 prefix)のビット表記 |
---|
11000000.10101000.00000000.00000000 From |
11000000.10101000.11111111.11111111 To |
11111111.11111111.00000000.00000000 サブネットマスク |
上記プライベートIPアドレス以外のアドレスは概ねグローバルIPアドレスと呼ばれる。
実際はRFCで予約されている特別なIPアドレスが規定されているので、プライベートIP以外 イコール グローバルIPとするのは乱暴で ≒ って感じです。
特殊用途のIPとしては、RFC6890が規定されている。
RFC6890 - Special-Purpose IP Address Registries
総評
IPアドレスの歴史的経緯やらその時代その時代でどういった背景があったのか等々。
そういうお話を一度まとめて聞いてみたいですね。
あと JPNIC: 日本ネットワークインフォメーションセンターのサイトは興味深い記事が多いので、眺めてみると面白いかと思います。