表紙 / 自作ソフト / 日記 / 宝箱 / サイト情報 / 検索
一般 / 新C言語 / 駄文
一覧 / 本文

IPvX Memo

Last update: 2021/02/23

(c)2001-2021 seclan. All rights reserved.
Homepage: http://seclan.dll.jp/
E-mail: seclan[ここはアトマークに置き換えてください]dll.jp


ネットワーク全般

  • ネットワークバイトオーダ (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
10
netid (14 bit) hostid (16 bit)
Class C
110
netid (21 bit) hostid (8 bit)
Class D
1110
multicast address (28 bit)
Class E
11110
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/24Test-Net アドレス: example.com の IP アドレス版
 192.88.99.0/246To4 リレーエニーキャスト [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/8Class A: Private Address [RFC1918]
 172.16.0.0/12Class B: Private Address [RFC1918]
 192.168.0.0/16Class 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

reserved0000::/8
0000 0000
(120 bit)
unassigned0100::/8
0000 0001
(120 bit)
reserved for NSAP0200::/7
0000 001
(121 bit)
reserved for IPX0400::/7
0000 010
(121 bit)
unassigned0600::/7
0000 011
(121 bit)
unassigned0800::/5
0000 1
(123 bit)
unassigned1000::/4
0001
(124 bit)
aggregatable global unicast address2000::/3
001
(125 bit)
unassigned4000::/3
010
(125 bit)
unassigned6000::/3
011
(125 bit)
unassigned8000::/3
100
(125 bit)
unassigneda000::/3
101
(125 bit)
unassignedc000::/3
110
(125 bit)
unassignede000::/4
1110
(124 bit)
unassignedf000::/5
1111 0
(123 bit)
unassignedf800::/6
1111 10
(122 bit)
unique local addressfc00::/7
1111 110
(121 bit)
unassignedfe00::/9
1111 1110 0
(119 bit)
link local unicast addressfe80::/10
1111 1110 10
(118 bit)
site local unicast address (deprecated)fec0::/10
1111 1110 11
(118 bit)
multicast addressff00::/8
1111 1111
(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)

表紙 - 著作権 - 注意事項 - リンクについて - 404 エラーについて
(c)2001-2021 seclan. All rights reserved.