ネットワーク全般
- ネットワークバイトオーダ (Network Byte Order)
通常、ネットワークバイトオーダといふ場合には、Big Endian のことを指してゐます。
- オクテット
8 bit の固まりのことを言ひます。PC などでは、通常 byte=8bit ですが、これは必ずしも合意が取れてゐません。つまり環境によっては byte≠8bit が存在します。そのため、新たにオクテットといふ言葉が作成されました。
IPv4
- IP とは Internet Protocol の略称で、インターネットで使用されるプロトコルを示してゐます。
- IP アドレスとは、IP 上で各端末を識別するための番号で、IPv4 では 32bit の長さを持ってゐます。ネットワーク上では、このアドレスはネットワークバイトオーダで流れます。
- IPv4 では、32bit のアドレスをそれぞれオクテット単位 (つまり 8bit 単位) の4つの部分にわけ、それぞれを 10進数で記述し '.' でつなげて表現します。つまり IPv4 のアドレスが値 0x7f000001 の場合、127.0.0.1 として表現します。
- 初期の IP アドレスはいくつかの Class で分類されてゐましたが、後にはこの Class といふ考えは廃止され、クラスレスアドレスを使用するやうになりました。
- クラスレスアドレスでは、IP アドレスとアドレスマスクを使用します。アドレスマスクは IPv4 と同じ長さで、ビット 1 の部分が netid を、0 の部分が hostid を示します。(例えば、IP アドレス 127.0.0.1 に対し、マスクは 255.0.0.0)
- またマスクは左からの bit が 1 である数を表したプレフィックス長 (prefix length) としても表現できます。この場合には、IP アドレスの後ろに / を付け、そのあとにプレフィックス長をつけます。(例:127.0.0.1/8)
IPv4 class bit range
|
|
0 0 | 0 1 | 0 2 | 0 3 |
0 4 | 0 5 | 0 6 | 0 7 |
0 8 | 0 9 | 1 0 | 1 1 |
1 2 | 1 3 | 1 4 | 1 5 |
1 6 | 1 7 | 1 8 | 1 9 |
2 0 | 2 1 | 2 2 | 2 3 |
2 4 | 2 5 | 2 6 | 2 7 |
2 8 | 2 9 | 3 0 | 3 1 |
|
Class A |
0 |
netid (7 bit) |
hostid (24 bit) |
Class B |
|
netid (14 bit) |
hostid (16 bit) |
Class C |
|
netid (21 bit) |
hostid (8 bit) |
Class D |
|
multicast address (28 bit) |
Class E |
|
reserved (27 bit) |
|
|
3 1 | 3 0 | 2 9 | 2 8 |
2 7 | 2 6 | 2 5 | 2 4 |
2 3 | 2 2 | 2 1 | 2 0 |
1 9 | 1 8 | 1 7 | 1 6 |
1 5 | 1 4 | 1 3 | 1 2 |
1 1 | 1 0 | 0 9 | 0 8 |
0 7 | 0 6 | 0 5 | 0 4 |
0 3 | 0 2 | 0 1 | 0 0 |
|
Notes:
id == 0..0 はここをあらはすために用ゐられる。
id == 1..1 は全部をあらはすために用ゐられる。
|
|
IPv4 class range
|
Class A |
0.0.0.0 |
(0x00000000) |
- |
127.255.255.255 |
(0x7FFFFFFF) |
Class B |
128.0.0.0 |
(0x80000000) |
- |
191.255.255.255 |
(0xBFFFFFFF) |
Class C |
192.0.0.0 |
(0xC0000000) |
- |
223.255.255.255 |
(0xDFFFFFFF) |
Class D |
224.0.0.0 |
(0xE0000000) |
- |
239.255.255.255 |
(0xEFFFFFFF) |
Class E |
240.0.0.0 |
(0xF0000000) |
- |
247.255.255.255 |
(0xF7FFFFFFF) |
|
Notes: [RFC3330][RFC8190]
| 0.0.0.0 | 特定されてゐないアドレス (INADDR_ANY) |
| 0.0.0.0/8 | 「この」ネットワーク [RFC1700] |
| 127.0.0.0/8 | ループバックアドレス (Loop Back Address) (INADDR_LOOPBACK) |
| 169.254.0.0/16 | リンクローカルアドレス (Link Local Address) |
| 192.0.2.0/24 | Test-Net アドレス: example.com の IP アドレス版 |
| 192.88.99.0/24 | 6To4 リレーエニーキャスト [RFC3068] |
| 232.0.0.0/8 | 送信元が特定されるマルチキャスト(SSM: Source-Specific Multicast) IP アドレス [RFC4607] |
| 224.0.0.0/4 | マルチキャストアドレス [RFC3171] |
| 255.255.255.255 | ローカルネットワークブロードキャストアドレス (Local Network Broadcast Address) |
| 10.0.0.0/8 | Class A: Private Address [RFC1918] |
| 172.16.0.0/12 | Class B: Private Address [RFC1918] |
| 192.168.0.0/16 | Class C: Private Address [RFC1918] |
| 100.64.0.0/10 | 共有アドレス空間 (Shared Address Space) [RFC6598] CGN(Carrier Grade NAT) / LSN(Large Scale Network Address Translator) 用のアドレス。グローバルアドレスを配布しない ISP では、前記の Private Address を利用者宛に配布すると、利用者がつかってゐる Private Address とぶつかりややこしいことになる可能性がある。そのため、いはば中間業者専用の Private Address として割り当てられた。 |
|
|
IPv6
- IPv6 は、アドレスとして 128bit の長さを持つ IP で、IPv4 の後継として設計された。
- IPv6 では、128 bit のアドレスをそれぞれ 16bit の 8 つの部分にわけ、それぞれを 16 進数で表記し ':' でつなげる。つまり IPv6 のアドレスの値が、0x00000000000000000000000000000001 の場合、0000:0000:0000:0000:0000:0000:0000:0001 として表現する。(または、0:0:0:0:0:0:0:1)
- また 0000 が連続して2回以上現れた場合、一回に限り '::' を使用してその間の 0 を省略して記述することができる。例へば、上記の例では 0000::0001、0::1、あるいは ::1 と表現できる。
- IPv4 との混在運用のための表記がある。その場合には、後ろの 32bit 部分を IPv4 表記する。(例へば ::127.0.0.1 [IPv4 互換アドレス:自動トンネル用], ::ffff:127.0.0.1 [IPv4 射影アドレス:カーネルの実装に利用] など)
- リンクローカルアドレス fe80::xxxx:xxxx:xxxx:xxxx。xxxx:..:xxxx はインターフェース識別子。インターフェース識別子は EUI-64 形式のアドレスを生成して割り当てる。mmmmを mac アドレス(= EUI-48) とすると、FE80::mmmm:mmFF:FEmm:mmmm とする。
EUI64形式はセキュリティー上の懸念から非推奨となってゐて、乱数で作ることが推奨される。
- aggregatable global unicast address。IANAが管理。
- 2001::/16。ISP等に割り当てられてるアドレス
- 2002::/16。6to4
- サイトローカルアドレス fec0::ssss:xxxx:xxxx:xxxx:xxxx。xxxx:..:xxx はインターフェース識別子。ssss はサブネット識別子。
インターフェース識別子は EUI-64 形式のアドレスを生成して割り当てる。mmmmを mac アドレス(= EUI-48) とすると、FEC0::ssss:mmmm:mmFF:FEmm:mmmm とする。
サイトローカルアドレスの「サイト」が何を指してゐるか今一つ不明で混乱が生じたため、rfc3879で廃止された。後継として、ユニークローカルアドレスが作られた。
- ユニークローカルアドレス (ULA: Unique Local Address) (rfc4193) FC00::/7。IPv4 のプライベートアドレス相当。サイトローカルアドレスの後継。
fc00::/8:将来のため予約
fd00::/8:通常 fdxx:xxxx:xxxx::/48 として xx_xxxx_xxxx の prefix を作ってその単位で使ふ。そしてこの後に16bitのサブネットをつけて、合計 /64 の長さにする。
IPv6 address type
|
| |
0 0 0 |
0 0 1 |
0 0 2 |
0 0 3 |
0 0 4 |
0 0 5 |
0 0 6 |
0 0 7 |
0 0 8 |
0 0 9 |
0 1 0 |
− |
1 2 7 |
|
reserved | 0000::/8 |
|
(120 bit) |
unassigned | 0100::/8 |
|
(120 bit) |
reserved for NSAP | 0200::/7 |
|
(121 bit) |
reserved for IPX | 0400::/7 |
|
(121 bit) |
unassigned | 0600::/7 |
|
(121 bit) |
unassigned | 0800::/5 |
|
(123 bit) |
unassigned | 1000::/4 |
|
(124 bit) |
aggregatable global unicast address | 2000::/3 |
|
(125 bit) |
unassigned | 4000::/3 |
|
(125 bit) |
unassigned | 6000::/3 |
|
(125 bit) |
unassigned | 8000::/3 |
|
(125 bit) |
unassigned | a000::/3 |
|
(125 bit) |
unassigned | c000::/3 |
|
(125 bit) |
unassigned | e000::/4 |
|
(124 bit) |
unassigned | f000::/5 |
|
(123 bit) |
unassigned | f800::/6 |
|
(122 bit) |
unique local address | fc00::/7 |
|
(121 bit) |
unassigned | fe00::/9 |
|
(119 bit) |
link local unicast address | fe80::/10 |
|
(118 bit) |
site local unicast address (deprecated) | fec0::/10 |
|
(118 bit) |
multicast address | ff00::/8 |
|
(120 bit) |
|
| |
1 2 7 |
1 2 6 |
1 2 5 |
1 2 4 |
1 2 3 |
1 2 2 |
1 2 1 |
1 2 0 |
1 1 9 |
1 1 8 |
1 1 7 |
− |
0 0 0 |
|
Notes:
| :: | 特定されてゐないアドレス (in6addr_any,IN6ADDR_ANY_INIT) |
| ::1 | ループバックアドレス (loop back address) (in6addr_loopback, IN6ADDR_LOOPBACK_INIT) |
| FF3x::/32 | 送信元が特定されるマルチキャスト(SSM: Source-Specific Multicast) IP アドレス [RFC4607] (xはスコープid) |
|
|
参考:
IPv6: [RFC2073,RFC1884,RFC1897] ←古い
RFC2553: Basic Socket Interface Extensions for IPv6: IPv6 用ソケットインターフェースなど
RFC3056: Connection of IPv6 Domains via IPv4 Clouds: 6to4 address
RFC1933: Transition Mechanisms for IPv6 Hosts and Routers: IPv4 compatible address
W.Richard Stevens: "UNIX NETWORK PROGRAMMING volume 1, Second Edition, Networking APIs: Sockets and XTI", Prentice HALL, 1998
(訳: 篠田陽一: "UNIX ネットワークプログラミング 第2版 Vol.1 ネットワーク API: ソケットと XTI", トッパン, 1999)
|