2012-07-31 40 views
1

我的問題源於這個過程:假設一個應用程序有一個主機或地址字段,並希望連接到該地址的某個服務。許多應用程序將查看該地址並猜測它是否是IP地址或主機名。此應用程序可能會使用像inet_pton()這樣的函數來執行此檢查。如果地址看起來像一個IP地址,則應用程序不會執行DNS查找並直接使用該IP地址。DNS名稱可能看起來像IP地址嗎?

現在,我不是說這是一個好主意,但如果某人定義了一個類似於1.2.3.4的dns名稱會怎樣。這看起來像一個IP地址,所以上面的應用程序將使用該IP地址,而不是作爲DNS名稱。

從觀察,似乎大多數應用程序的行爲如第一段所述。對我來說這似乎有好處。是否有任何文檔指出不應使用看起來像IP地址的DNS名稱。或者任何說明,即使某人將DNS名稱定義爲IP地址的文檔,也可以不尊重它。

回答

6

其他人已經回答了,但我會添加和合並。

相關RFC:

本來,一個主機名不能以數字開頭,消除歧義主機名和IP地址之間。在修訂版中,這一點已更改,主機名可以以數字開頭。因此,域名如127.0.0.1.com是合法的。 TLD不能以數字開頭(TLD代表頂級域名,其中.com,.net,.org,國家代碼和其他成員均爲成員)。名稱必須至少包含一個字符,必須以字母數字字符開頭和結尾,最多可以有64個字符長(儘管標準支持更長的主機名,系統不需要支持超過64個字符的名稱)。

此外,正如最終RFC中所述,某些SLD和TLD是保留的並且無法註冊。

3

有關規範來看看是Section 2.1 of RFC 1123

如果點分十進制數可沒有這樣的識別符,然後一個完整的語法檢查必須進行輸入,因爲主機域名的段現在允許以數字開頭,並且可以在法律上完全是數字(參見第6.1.2.4節)。但是,有效的主機名永遠不能有點分十進制形式#。#。#。#,因爲至少最高級別的組件標籤是字母。