[1] [DFN[IPv4 [RUBYB[アドレス]@en[address]]]]は、[[IPv4]]
において通信の当事者を識別する[RUBY[[[番地]]][[[アドレス]]]]です。
* 文字列表現
** インターネット・ホスト表の定義
[17] [RUBYB[[[インターネット・ホスト表]]]@en[Internet host table]]での[[IPv4アドレス]]の表記は、
1[[オクテット]]を表す10進整数を4つ、[CODE(char)[[[.]]]] で並べたものとして定義されていました。
[[BNF]] では
[PRE(BNF code)[
::= "." "." "."
::= <0 to 255 decimal>
]PRE]
... と表されていました。 [SRC[>>18]]
;;
- [19] [[RFC 810]] [CITE@en[DoD Internet host table specification]] (廃止済み)
- [18] [[RFC 952]] [CITE@en[DOD INTERNET HOST TABLE SPECIFICATION]]
;; [[RFC 810]] は [[RFC 608]] を廃止していますが、 [[RFC 608]]
は古くて [[IPv4アドレス]]はありませんでした。[[IPv4アドレス]]の定義として
[[RFC 810]] は [[RFC 796]] を参照していますが、 [[RFC 796]]
はアドレス割り当てを図示しており、文字列表現はありませんでした。
** SMTP の定義
[9] [[SMTP]] ([[RFC 2821]] → [[RFC 5321]]) では [[IPv4アドレス]]は次のように
[[ABNF]] で定義されています。
[PRE(ABNF code)[
IPv4-address-literal = Snum 3("." Snum)
Snum = 1*3DIGIT ; representing a decimal integer
; value in the range 0 through 255
]PRE]
;;
- [10] [[RFC 2821]] [CITE@en[Simple Mail Transfer Protocol]] (廃止済み)
-- [12]
- [11] [[RFC 5321]] [CITE@en[Simple Mail Transfer Protocol]]
-- [13]
[14] [[RFC 2821]] の前の [[RFC 821]] でも同じような定義でした。
[PRE(ABNF code)[
::= "." "." "."
::= one, two, or three digits representing a decimal
integer value in the range 0 through 255
]PRE]
;;
- [15] [[RFC 821]] [CITE@en[Simple Mail Transfer Protocol]] (廃止済み)
--[16]
** 昔の URL の緩い定義
[38] [[URL]] 仕様は歴史的に緩い定義で、任意の[[十進整数]]を4つ [CODE(char)[[[.]]]]
で並べたものを[[IPv4アドレス]]としてきました。
[31] [[RFC 2396]], [[RFC 2543]] は
[PRE(ABNF example code)[
IPv4address = 1*digit "." 1*digit "." 1*digit "." 1*digit
]PRE]
... と [[ABNF]] で定義しており、本文中でも同様の説明となっています。
[[RFC 1630]] と [[RFC 1738]] も異なる [[BNF]] で同じように定義しています。
;;
- [36] [[RFC 1630]] [CITE@en[Universal Resource Identifiers in WWW: A Unifying Syntax for the Expression of Names and Addresses of Objects on the Network as used in the World-Wide Web]]
-- [37]
- [34] [[RFC 1738]] [CITE@en[Uniform Resource Locators (URL)]] (廃止済み)
-- [35]
- [32] [[RFC 2396]] [CITE@en[Uniform Resource Identifiers (URI): Generic Syntax]] (廃止済み)
-- [33]
- [29] [[RFC 2543]] [CITE@en[SIP: Session Initiation Protocol]] (廃止済み)
-- [30]
[39] これは後に >>8 のように改訂されています。
** RFC 2373 の定義
[3] [[RFC 2373]] は [[IPv6アドレス]]の文字列表現を定義していました。
[[IPv4アドレス]]は[[IPv6アドレス]]の一部分として用いられることがあるため、その定義も包含していましたが、
[[IPv4アドレス]]の表現は自明のことのように扱われており、明記はされていませんでした。
[4] ただし附属書として [[ABNF]] 定義があり、
[PRE(ABNF code)[
IPv4address = 1*3DIGIT "." 1*3DIGIT "." 1*3DIGIT "." 1*3DIGIT
]PRE]
... となっていました。
;;
- [5] [[RFC 2373]] [CITE@en[IP Version 6 Addressing Architecture]]
-- [6]
[7] 1つ前の版である [[RFC 1884]] には [[ABNF]] はなく、また次の版である [[RFC 3513]]
からもなぜか削除されています。文章による定義は以前も以後も含まれていますが、
>>3 の通り、[[IPv4アドレス]]については明記されていません。
[8] [[RFC 2732]] は [[URL]] における [[IPv4アドレス]]の定義を [[RFC 2396]]
の元のものから [[RFC 2373]] のものに変更しており、10進数の桁数が高々3桁とより厳密になりました。
;; [[RFC 2732]] の改訂版である [[RFC 3986]] では更に厳密な定義 (>>20) になっています。
[26] [[SIP]] も同じ定義をコピペして使っていました [SRC[>>28]] が、
[[RFC 5954]] でより厳密な定義 (>>20) になっています (>>23)。
;;
- [27] [[RFC 3261]] [CITE@en[SIP: Session Initiation Protocol]]
-- [28]
** RFC 3986 の定義
[20] [[RFC 3986]] は [[RFC 952]] (>>17) を参照しつつ、同じことを文章と [[ABNF]]
で定義しています。[[ABNF]] では
[PRE(ABNF code)[
IPv4address = dec-octet "." dec-octet "." dec-octet "." dec-octet
dec-octet = DIGIT ; 0-9
/ %x31-39 DIGIT ; 10-99
/ "1" 2DIGIT ; 100-199
/ "2" %x30-34 DIGIT ; 200-249
/ "25" %x30-35 ; 250-255
]PRE]
... と表されています。
;;
- [21] [[RFC 3986]] [CITE@en[Uniform Resource Identifier (URI): Generic Syntax]]
-- [22]
[23] [[RFC 5954]] は [[SIP]] における [CODE(ABNF)@en[[[IPv4address]]]]
の定義を >>20 に改めています。これに伴い、
任意の3桁以内の[[10進整数]]が認められていたものが[[オクテット]]を表すもののみに厳密化しています。
[SRC[>>25]]
;;
- [24] [[RFC 5954]] [CITE@en[Essential Correction for IPv6 ABNF and URI Comparison in RFC 3261]]
-- [25]
* 関連
[2] [[IPv4]] が最もよく用いられている [[IP]] である現在、
[[IPv4アドレス]]のことを単に「[[IPアドレス]]」と呼ぶことがほとんどです。
また、俗に、更に略して単に「[[IP]]」と呼ばれることすらあります。
[40] [CITE@en[RFC 6021 - Common YANG Data Types]]
([TIME[2010-10-07 04:53:03 +09:00]] 版)
[41] [CITE[Manpage of INET]]
( ([TIME[2010-04-25 12:26:45 +09:00]] 版))