[1] [DFN[IP [RUBYB[アドレス]@en[address]]]]は、[[IP]] において通信の当事者を[[識別]]する[RUBY[[[番地]]]@en[アドレス]]です。

[2] [[アドレス]]の体系は [[IP]] の版により異なります。現在利用されているものとしては
[FIG(list short)[
- [[IPv4アドレス]]
- [[IPv6アドレス]]
]FIG]
... の2種類があります。

* 仕様書

[REFS[
- [8] [CITE[[[BR]]]] ([TIME[2014-11-01 05:54:38 +09:00]] 版) <https://cabforum.org/wp-content/uploads/BRv1.2.3.pdf#page=17>
]REFS]

* 名称

[15] [[IPアドレス]]のことを俗に [DFN[[[IP]]]] と言うこともあります。

* 分類

[FIG(short list)[
- [[予約IPアドレス]]
]FIG]

* 文脈

[11] 次の場面では、 [[IPv4アドレス]]はそのまま表記し、
[[IPv6アドレス]]は [...] で括ります。
[FIG(list middle)[
- [[ホストとポート]]
- [[節点識別子]]
- [CODE[[[domainpart]]]]
- [89] [[CGI]] [CODE(CGI)@en[[[SERVER_NAME]]]]
]FIG]

[12] 次の場面では、 [[IPv4アドレス]]はそのまま表記し、
[[IPv6アドレス]]は [IPv6:...] で括ります。
[FIG(middle list)[
- [87] [[SMTP]] ([[メールアドレス]])
]FIG]

[13] 次の場面では、[[IPv4アドレス]]も[[IPv6アドレス]]もそのまま表記します。
[FIG(middle list)[
- [88] [[CGI]] [CODE(CGI)@en[[[REMOTE_ADDR]]]]
- [CODE(JS)@en[[[document.domain]]]]
- [CODE[[[iPAddress]]]]
- [CODE[[[CN]]]]
- [CODE[AnyEvent::Socket]] の入出力
]FIG]

[16] 次のものは、バイト表現を使います。
[FIG(list middle)[
- [CODE[gethostbyname]] の出力
- [[SOCKS4]] の宛先
- [[SOCKS5]] の宛先
]FIG]

[17] バイト表現は、 [[IPv4アドレス]]なら4バイト、[[IPv6アドレス]]なら16バイトで、
[[ネットワークバイト順]]でそのままアドレスを表現したものです。

* FQDN との関係

[4] [[IAB]] は、人間が編集する設定ファイルなどの非揮発性ストレージ上の情報においては、
[[IPアドレス]]よりも [[FQDN]] を使うことを[RUBYB[強く推奨]@en[strongly recommend]]しています。

;; [CITE@en[RFC 1900 - Renumbering Needs Work]]
<http://tools.ietf.org/html/rfc1900#section-3>

* [CODE[iPAddress]] (PKI)

[10] [[BR]] に従う [[CA]] が発行する[[証明書]]の [[SAN]] [CODE[[[iPAddress]]]]
欄での[[予約IPアドレス]]の使用は2016年10月1日までに全廃することになっています [SRC[>>8]]。

* 演算

[21] 
[[IPアドレス]]と[[IPアドレス]]が等しいか否かの[[等価性]]の決定はいろいろなところで必要とされます。
[[IPアドレス]]のテキスト表現はいろいろなものがありますから、
バイナリー表現か[[正規化]]されたテキスト表現を求めた上で、
それが[[バイト列]]または[[文字列]]として等しいか否かにより判断することになります。
[[IPv4アドレス]]と[[IPv6アドレス]]のどちらにもこれがいえます。
[[IPv4アドレス]]と[[IPv6アドレス]]の[[比較]]は、必ず[[偽]]となります。

[22] 
[[IPアドレス]]がある[[IPアドレス]]の範囲に含まれるか否かの決定が必要になることがよくあります。
[[IPアドレス]]の範囲は、
[[CIDR]] 記法か[[サブネットマスク]] (どちらも記述能力は同じ) と、その複数個の組合せによって表されます。
範囲も [[IPv4アドレス]]の範囲と[[IPv6アドレス]]の範囲があり得ますが、
[[IPv4アドレス]]の範囲に含まれ得るのは[[IPv4アドレス]]のみで、
[[IPv6アドレス]]の範囲に含まれ得るのは[[IPv6アドレス]]のみです。


* メモ

[3] [[IPアドレス]]は、俗に略して「[[IP]]」と呼ばれることがあります。

[FIG(quote)[
[FIGCAPTION[
[5] [CITE@en[RFC 2459 - Internet X.509 Public Key Infrastructure Certificate and CRL Profile]]
([TIME[2014-12-22 14:13:43 +09:00]] 版)
<http://tools.ietf.org/html/rfc2459#section-4.2.1.7>
]FIGCAPTION]

> When the subjectAltName extension contains a iPAddress, the address MUST be stored in the octet string in "network byte order," as specified in RFC 791 '''['''RFC 791''']'''. The least significant bit (LSB) of each octet is the LSB of the corresponding byte in the network address. For IP Version 4, as specified in RFC 791, the octet string MUST contain exactly four octets.  For IP Version 6, as specified in RFC 1883, the octet string MUST contain exactly sixteen octets '''['''RFC 1883''']'''.

]FIG]


[FIG(quote)[
[FIGCAPTION[
[6] [CITE@en[RFC 5280 - Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile]]
([TIME[2015-02-22 15:44:10 +09:00]] 版)
<http://tools.ietf.org/html/rfc5280#section-4.2.1.6>
]FIGCAPTION]

> When the subjectAltName extension contains an iPAddress, the address
>    MUST be stored in the octet string in "network byte order", as
>    specified in '''['''RFC791''']'''.  The least significant bit (LSB) of each octet
>    is the LSB of the corresponding byte in the network address.  For IP
>    version 4, as specified in '''['''RFC791''']''', the octet string MUST contain
>    exactly four octets.  For IP version 6, as specified in
>    '''['''RFC2460''']''', the octet string MUST contain exactly sixteen octets.

]FIG]


[FIG(quote)[
[FIGCAPTION[
[7] [CITE@en[RFC 5280 - Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile]]
([TIME[2015-02-22 15:44:10 +09:00]] 版)
<http://tools.ietf.org/html/rfc5280#section-4.2.1.10>
]FIGCAPTION]

> The syntax of iPAddress MUST be as described in Section 4.2.1.6 with
>    the following additions specifically for name constraints.  For IPv4
>    addresses, the iPAddress field of GeneralName MUST contain eight (8)
>    octets, encoded in the style of RFC 4632 (CIDR) to represent an
>    address range '''['''RFC4632''']'''.  For IPv6 addresses, the iPAddress field
>    MUST contain 32 octets similarly encoded.  For example, a name
>    constraint for "class C" subnet 192.0.2.0 is represented as the
>    octets C0 00 02 00 FF FF FF 00, representing the CIDR notation
>    192.0.2.0/24 (mask 255.255.255.0).
> 

]FIG]

[9] [CITE@en[draft-main-ipaddr-text-rep-02 - Textual Representation of IPv4 and IPv6 Addresses]]
([TIME[2015-04-24 04:28:53 +09:00]] 版)
<https://tools.ietf.org/html/draft-main-ipaddr-text-rep-02>

[FIG(quote)[
[FIGCAPTION[
[14] [CITE@en[RFC 2616 - Hypertext Transfer Protocol -- HTTP/1.1]]
([TIME[2015-07-11 23:51:35 +09:00]] 版)
<http://tools.ietf.org/html/rfc2616#section-3.2.2>
]FIGCAPTION]

> The use of IP addresses
>    in URLs SHOULD be avoided whenever possible (see RFC 1900 '''['''24''']'''). 

]FIG]

[23] [CITE@en[RFC 2780 - IANA Allocation Guidelines For Values In the Internet Protocol and Related Headers]], [TIME[2021-04-11T08:13:41.000Z]], [TIME[2021-04-12T08:38:53.279Z]] <https://tools.ietf.org/html/rfc2780>

[24] [CITE@en[RFC 2851 - Textual Conventions for Internet Network Addresses]], [TIME[2021-04-11T12:40:37.000Z]], [TIME[2021-04-12T11:04:35.471Z]] <https://tools.ietf.org/html/rfc2851>

[18] [CITE@en[RFC 5280 - Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile]]
([TIME[2018-08-26 16:15:03 +09:00]])
<https://tools.ietf.org/html/rfc5280#section-4.2.1.10>

[19] [CITE@en[Update address prose to match rfc5245.]]
([[jan-ivar]]著, [TIME[2018-09-13 01:26:21 +09:00]])
<https://github.com/w3c/webrtc-pc/commit/18ea6f19e9a60af92659cd53e267ca9846fa2b79>

[20] [CITE@en[Rename RTCIceCandidate.ip to address. by jan-ivar · Pull Request #1985 · w3c/webrtc-pc]]
([TIME[2018-10-17 22:12:13 +09:00]])
<https://github.com/w3c/webrtc-pc/pull/1985>

[25] [CITE@en[RFC 2812 - Internet Relay Chat: Client Protocol]], [TIME[2021-04-11T07:44:32.000Z]], [TIME[2021-04-13T03:48:06.883Z]] <https://tools.ietf.org/html/rfc2812#page-7>

[26] [CITE[IANA IPv4 Special-Purpose Address Registry]], [TIME[2021-03-24T23:21:15.000Z]], [TIME[2021-04-16T02:36:20.657Z]] <https://www.iana.org/assignments/iana-ipv4-special-registry/iana-ipv4-special-registry.xhtml>

[27] [CITE[IANA IPv6 Special-Purpose Address Registry]], [TIME[2021-03-24T23:20:36.000Z]], [TIME[2021-04-16T02:36:37.089Z]] <https://www.iana.org/assignments/iana-ipv6-special-registry/iana-ipv6-special-registry.xhtml>

[28] [CITE@en[RFC 3291 - Textual Conventions for Internet Network Addresses]], [TIME[2021-04-11T10:15:06.000Z]], [TIME[2021-04-21T09:16:38.270Z]] <https://tools.ietf.org/html/rfc3291>

[29] [CITE@en[rfc4001]]
([TIME[2021-07-16T04:25:34.000Z]])
<https://datatracker.ietf.org/doc/html/rfc4001>


[30] [CITE@ja[Xユーザーの徳丸 浩さん: 「大昔、中国出張の際に、現地のガラケーでなんとか日本のコンテンツが閲覧できないかと色々試したところ、IPアドレスではだめだっけど、ドットなし10進表記なら行けた思い出」 / X]], [TIME[午後11:37 · 2024年8月25日][2024-08-25T14:37:13.000Z]], [TIME[2024-08-27T06:13:19.000Z]] <https://x.com/ockeghem/status/1827716869119463618>
