DNS名(ドメイン名)の最大文字列長は253文字であるという言及がいくつかありました。ウィキペディアはこの古いブログ記事を参照しているようです:
https://en.wikipedia.org/wiki/Hostnamehttp://blogs.msdn.com/b/oldnewthing/archive/2012/04/12/10292868.aspx
一方、RFCを理解していれば、この記事は間違っています。 DNS名の最大文字列長は、250 ASCII文字である必要があります。 RFC1035 に従って255バイトまでの次のバイトシーケンスに基づいて、253文字ではなく:
実装を簡素化するために、ドメイン名の合計長(つまり、ラベルオクテットとラベル長オクテット)は255オクテット以下に制限されています。
RFC1035に従って、ドメイン名は次のように構成されます。
ラベルのシーケンスとして表されるドメイン名。各ラベルは、長さオクテットとそれに続くオクテット数で構成されます。ドメイン名は、ルートのヌルラベルの長さゼロのオクテットで終了します。このフィールドは奇数のオクテットであることに注意してください。パディングは使用されません。
つまり、次のフィールドがドメイン名を構成します。
形式は常に(ブログ投稿とは異なり)である必要があります。
[〜#〜] ll [〜#〜]+[〜#〜] ln [〜#〜][[〜#〜] ll [〜#〜]+[〜#〜] ln [〜#〜]...] + [〜#〜] nl [〜#〜]
つまり、最大長は次のようになります(1バイト= 1文字= 1オクテット)。
[〜#〜] ll [〜#〜](1)+[〜#〜] ln [〜#〜] (63)+[〜#〜] ll [〜#〜](1)+[〜#〜] ln [〜#〜](63)+[〜#〜] ll [〜#〜](1)+[〜#〜] ln [〜 #〜](63)[〜#〜] ll [〜#〜](1)+[〜#〜] ln [〜#〜](61)+[〜#〜] nl [〜#〜](1)= 255バイト
したがって、文字列部分のみを計算すると([〜#〜] ln [〜#〜]s)、次のようになります:
63 + 63 + 63 + 61 =最大250文字。
私は何かを見逃しましたか、ウィキペディアの参照をいくつか更新する必要がありますか?不明な点は、Nullラベルが255バイトの一部であることです。
カウント方法では、ドメイン名a.b.c.d.e.
は5文字の長さと見なされます。多くの人がそのようなカウント方法が役立つとは思わないでしょう。このカウント方法では、ラベルの数によって最大長も異なります。したがって、4つのラベルがある場合、最大長は250文字ですが、127個のラベルがある場合、最大長は127文字のみです。
このように考えてください。人間が使用するドメイン名を出力する場合、doは長さバイトを出力します。ピリオド(最初の長さバイトを除くすべて)。そうしないと、a.b.c.
とabc.
の違いを知ることができません。それらを印刷するので、長さを数えるときにそれらを含めるべきです。そして、そのカウント方法では、最大長は常に253文字です(最後のピリオド、およびルートの非印刷ゼロオクテットは255文字になります)。
つまり、最大250文字のASCII文字(文字、数字、ダッシュ)がある場合、ラベルの最小数が4であることを考慮して、間に3つの印刷可能なドットを追加する必要がありますそれらは合計253個の印刷可能文字(最初の長さのバイトとヌルラベルを省略)になります。
以下の例(太字は印刷可能な文字であり、LLはドットとして印刷されます):
LL(1)+ LN(63) + LL(1) + LN(63) + LL(1) + LN(63) + LL(1) + LN(61) + NL(1)= 255バイト
したがって、ドットを含む新しい計算は次のようになります。
63 + 1 + 63 + 1 + 63 + 1 + 61 = 25 最大文字数。
これは、可能な限り最長のラベル(完全に機能するWebサイトBTW)を持つドメインの例です。 http://www.abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijk.com/ 。ドメイン名の長さは71文字です。
これは、最も長いドメイン名の例になります:abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcde.abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijk.abcdefghijklzaopqrstuvuvuvzaykstjvstvstvwxzabcdefghijkijkjbcstjstjvst。