[1] [DFN[LDH [RUBYB[ラベル]@en[label]]]]は、 [[DNS]] において、 [[letter]]、 [[数字]]、[[ハイフン]]で構成される[[ラベル]]のことを言います [WEAK[(より厳密には >>8)]]。 元々は単に「[[ラベル]]」とも呼ばれていましたが、 [[IDN]] における[[ラベル]]は[[非ASCII文字]]に拡張されているため、 [[IDNA2008]] では 「[[LDHラベル]]」という語を導入しています。 [3] これは元をたどれば [[RFC 952]] で「[DFN[[RUBYB[[[ホスト名]]]@en[hostname]]]]」 と言っていたものに近いです [SRC[>>2]] が、若干の違いがあります (>>14)。 あるいは [[RFC 1034]] の3.5節で「[DFN[[RUBYB[好ましい名前の構文]@en[preferred name syntax]]]]」 と言われていたものを [[RFC 1123]] で変更したものと構文的に同じです [SRC[>>2]]。 * 仕様書 - [14] [CITE@en[RFC 952 - DoD Internet host table specification]] - [13] [[RFC 1034]] - [15] [CITE@en[RFC 1123 - Requirements for Internet Hosts - Application and Support]] @@ [[STD 13]], [[STD 3]] - [2] [[IDNA 2008]] [CITE@en[RFC 5890 - Internationalized Domain Names for Applications (IDNA): Definitions and Document Framework]] * 構文 [8] [[LDHラベル]]とは、 - [5] [[ASCII]] の [[letter]]、[[数字]]、[[ハイフン]]で構成される[[文字列]]であること - [6] 最初と最後が[[ハイフン]]ではないこと - [7] 63[[オクテット]]を超えないこと ... という条件を満たすもの ([[DNSラベル]]) です。 [SRC[>>2]] ** 「-」 [21] [[LDHラベル]]は、定義上「[CODE(char)[[[-]]]]」から始めたり終わったりすることができません。 しかし、現実にはそのような[[ラベル]]を使った[[ドメイン名]]が存在します。 [22] [CITE[Bug 196852 – URLs starting with hyphen ( - ) not resolved]] ([TIME[2008-06-27 00:33:45 +09:00]] 版) [23] >>22 によれば、 [[Windows]] の [[resolver]] はこれに対応しているものの、 [[Linux]] の [[resolver]] は対応していないようです。 ** 「_」 [26] [[LDHラベル]]は、定義上「[CODE(char)[[[_]]]]」を含めることができません。 しかし、現実にはそのような[[ラベル]]を使った[[ドメイン名]]が存在します。 ;; [27] [[DNS]] 的には「[CODE(char)[[[_]]]]」は[[下線ラベル]]という別の概念に使われています。 [25] ホスト名に [CODE[_]] を含める困った無料鯖, [[Tripod]] 以外にもあるらしい。 [24] >>1 このままなし崩し的に [CODE[_]] も名前文字に仲間入りするのかなあ? [32] [[Webブラウザー]]によっては [CODE[[[_]]]] が含まれる[[ドメイン]]で [[Cookie]] を正しく扱えないようです。 [28] [CODE(char)[[[_]]]] は「好ましい」構文には含まれていませんが、 [[DNS]] 仕様上特に禁じられているわけではありません。 [29] [[RFC 3986]] は [[URI]] の [[host]] として使える名前を特に [[DNS]] に限定しておらず、構文上 [CODE[[[_]]]] やその他の記号を禁じていません。 [30] [[RFC 2616]] は旧仕様である [[RFC 2396]] を参照しており、 [CODE(URI)@en[[[http:]]]] [[URL]] の [[host]] 部分や [CODE(HTTP)@en[[[Host:]]]] [[頭欄]]の値として [[RFC 2396]] の [[host]]、すなわち「好ましい」構文による [[DNS]] 名を求めているため、 [CODE[[[_]]]] は禁止されています。 [31] [[RFC 6265]] は [CODE(HTTP)@en[[[Set-Cookie:]]]] [[頭欄]]の [CODE(HTTP)@en[[[Domain]]]] [[属性]]が従わなければならない構文として「好ましい」構文を使っているため、 [CODE[[[_]]]] は禁止されています。しかし解釈する側においては、仕様書の解釈しだいでは [CODE[[[_]]]] を受け入れることも禁止されていないと読めます。 * 分類 - [17] [[R-LDHラベル]] - [18] [[NR-LDHラベル]] [19] [[IDNA]] で正しいとされるのは [[NR-LDHラベル]]と、 [[R-LDHラベル]]のうち [[Aラベル]]だけです。 [WEAK[(他に [[Uラベル]]もありますが、 [[Uラベル]]は [[LDHラベル]]ではありません。)]] [[XNラベル]]ではない[[R-LDHラベル]]や[[偽Aラベル]]は正しくない[[ラベル]]ということになります。 * 歴史 [12] 以前は先頭1文字が [CODE(ABNF)@en[[[DIGIT]]]] であることも認められていませんでしたが、 [[RFC 1123]] で緩和されています。 ** RFC 952 より [10] [SRC[>>14]] > 1. A "name" (Net, Host, Gateway, or Domain name) is a text string up to 24 characters drawn from the alphabet (A-Z), digits (0-9), minus sign (-), and period (.). Note that periods are only allowed when they serve to delimit components of "domain style names". (See RFC-921, "Domain Name System Implementation Schedule", for background). No blank or space characters are permitted as part of a name. No distinction is made between upper and lower case. The first character must be an alpha character. The last character must not be a minus sign or period. A host which serves as a GATEWAY should have "-GATEWAY" or "-GW" as part of its name. Hosts which do not serve as Internet gateways should not use "-GATEWAY" and "-GW" as part of their names. A host which is a TAC should have "-TAC" as the last part of its host name, if it is a DoD host. Single character names or nicknames are not allowed. > [PRE(ABNF code)[ ::= *["."] ::= [*[]] ]PRE] ** RFC 1034 より [16] [SRC[>>13]] > [PRE(BNF)[ ::= | " " ::=