9

まず最初に:

すべてのドメイン名を IDNA バージョンに変換した後、複数のドメインをデータベースに保存しています。データベース フィールドの最大長を定義できるように、そのような IDNA 変換されたドメイン名の最大長を知る必要があります。

既知の事実:

現在、ドメイン名 (サブドメインを含む) の最大文字数は 255 文字であることを知っています。

紛失した場所:

一見簡単ですが... これは、国際文字の通常の ASCII 文字 (UTF-8 エンコーディングと考えてください) を意味するのでしょうか?

例を挙げると、ドメイン「müller.de」は、「ü」がより多くのバイトを表す必要がある国際文字であることを無視すると、9 文字になります。「müller.de」の IDNA バージョンは「xn--mller-kva.de」で、16 文字です。これは、IDNA 変換されている場合とされていない場合の "if" によって、確実に最大長に違いがあることを示しています。

それらが意味する文字の種類に応じて、最大 255 文字は、国際文字バージョン、IDNA 変換バージョン、またはその両方になる可能性があります。

そして、それは私がそれを少し失ったところです...特に、すべてのドメインが正気であるとは限らず、「öüßüöäéèê.example.äöüßüöäéèê-äöüßüöäéèê.test.äöüßüöäéèê.com」のようなものであり、さらに悪いことに予想された。

したがって、「推測」や「最善を期待する」ことはできません。私は確かに知る必要があります...

質問は:

ドメイン名 (サブドメインを含む) の最大文字数は 255 文字であるという既知の事実に基づいて... IDNA 変換されたドメイン名の最大長は?

それとも、IDNA 変換バージョン (punycode) も 255 文字に制限されていることを意味していたのでしょうか (これは、IDNA 変換バージョンが 255 文字を尊重する必要があるため、国際/Unicode 文字を含むドメインの Unicode 表現の制限が実際にはより短いことを意味します)。限界)?

4

3 に答える 3

8

わかりました、私は自分自身を見つけたと思います、そして私が見つけたこのスニペットは(インターネットを検索して)助けました:

国際化ドメイン名 (IDN) の導入には、基本的に 2 つの異なる選択肢がありました。1 つ目は、ドメイン ネーム システム (DNS) を調整して、Unicode 文字を直接使用できるようにすることでした。これはあまりにも抜本的な措置であると感じられたため、2 番目のオプションが選択されました。これには、Unicode 文字列を許可された ASCII ドメイン名に変換する方法を指定するアルゴリズムのコンパイルが含まれていました。次に、この ACE 文字列 (ACE は ASCII Compatible Encoding の略) が DNS に入力されます。IDN の導入は、DNS のエントリがドメイン名と同一でなくなることを初めて意味します。

ソース

答えは、考慮すべき長さは、DNS が期待する 255 文字の制限であるということです。

私の疑いは正しかった。ドメイン名と DNS のエントリは、IDN では 2 つの異なるものです。重要なのは、DNS エントリの最大長です。

ドメイン名「müller.de」は 9 文字ですが、対応する ACE (ASCII 互換エンコーディング) 文字列「xn--mller-kva.de」は 16 文字です。

これは DNS で使用される ACE 文字列であり、255 文字の制限を下回る ACE 文字列です。つまり、Unicode (ドメイン) バージョンの最大制限は、使用される Unicode 文字の数によって定義され、IDNA 変換後も文字列が 255 文字の制限内に収まる場合です。

そうねえ、仕様は確かにこのようなものでもう少し明確だったかもしれません. 特に国際的なドメイン名は 2004 年 3 月 1 日頃から存在しています。しかし、私はその答えを見つけました。それこそが重要なことです。

おそらく、これは同じ質問をしている誰かを助けることができます。

私のデータベース フィールドの長さに関する簡単な答えは 255 CHAR です。

ドメイン名を IDNA 変換 (punycode/ACE 文字列) バージョンで保存するという事実は、この最大文字数制限を確認するだけです。

于 2012-01-03T20:57:12.477 に答える
6

私の理解では、255 文字の制限はIDNA 変換後に考慮されます。

これは、DNS レコードにはこの文字制限があり、一般に DNS レコードには文字、数字、およびハイフンのみを含めることができるためです (ウィキペディアから)。したがって、DNS サーバーは、Unicode バージョンではなく、IDN の Punycode バージョンをレコードに使用します。

于 2012-01-03T20:57:55.387 に答える
-2

RFC3492は、IDNA エンコーディングの機能の 1 つについて次のように述べています。

効率的なエンコード: 基本文字列の長さと拡張文字列の長さの比率は小さいです。RFC1034ではドメイン ラベルの長さが 63 文字に制限されているため、これはドメイン名のコンテキストでは重要です。

それだ。63 文字は、ドメイン名が IDNA であるか ASCII であるかに関係なく、ドメイン名の最大長です。

于 2016-08-24T10:44:15.383 に答える