[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]] 版))