1

私の質問は、このプロセスに由来します。アプリケーションにホストまたはアドレスフィールドがあり、そのアドレスのサービスに接続したいとします。多くのアプリケーションはそのアドレスを調べて、それがIPアドレスなのかホスト名なのかを推測します。このアプリケーションは、inet_pton()などの関数を使用してこのチェックを行う場合があります。アドレスがIPアドレスのように見える場合、アプリケーションはDNSルックアップを実行せず、そのIPアドレスを直接使用します。

さて、これが良い考えであることを示唆しているわけではありませんが、誰かが1.2.3.4のようなDNS名を定義した場合はどうでしょうか。これはIPアドレスのように見えるので、上記のアプリケーションはDNS名としてではなく、IPアドレスとしてそれを使用します。

観察から、ほとんどのアプリケーションは最初の段落で説明したように動作するようです。これは私にとっていくつかの理由で有益に思えます。IPアドレスのように見えるDNS名は使用すべきではないと述べているドキュメントはありますか。または、誰かがDNS名をIPアドレスのように定義したとしても、それを尊重しないことは問題ないと述べているドキュメント。

4

2 に答える 2

6

他の人はすでに答えていますが、私は追加して統合します。

関連するRFC:

元々、ホスト名とIPアドレスを明確にするために、ホスト名を数字で始めることはできませんでした。リビジョンでは、それが変更され、ホスト名は数字で始めることができます。したがって、127.0.0.1.comのようなドメイン名は有効です。TLDは数字で始めることはできません(TLDはトップレベルドメインを表し、.com、.net、.org、国コードなどがメンバーです)。名前には少なくとも1文字が含まれ、英数字で開始および終了する必要があり、最大64文字まで自由に使用できます(標準ではより長いホスト名がサポートされていますが、システムは64文字より長い名前をサポートする必要はありません)。

さらに、最終RFCで説明されているように、一部のSLDおよびTLDは予約されており、登録できません。

于 2012-07-31T21:13:49.253 に答える
3

注目すべき関連仕様は、RFC1123のセクション2.1です

このような識別区切り文字なしでドット付き10進数を入力できる場合は、完全な構文チェックを行う必要があります。これは、ホストドメイン名のセグメントが数字で始まることが許可され、法的に完全に数値になる可能性があるためです(セクション6.1を参照)。 2.4)。ただし、少なくとも最上位のコンポーネントラベルはアルファベットになるため、有効なホスト名にドット付き10進形式の#。#。#。#を付けることはできません。

于 2012-07-31T21:07:04.360 に答える