Hostname

主機名以數字開頭是否有效?

  • October 20, 2014

主機名以數字開頭是否有效?例如8server

從閱讀RFC 1123看來,這是一個有效的主機名。但是,我不清楚主機名是否只能在有後綴時以數字開頭,例如8server.com

這個問題的起源是InternetDomainName.isValid("8server");在 Google Guava 庫(Javadoc)中拒絕輸入。我還在Guava 討論組上發布了一個具體問題。

RFC 1123 放寬了 RFC 952 的約束,該約束指定了由 DNS 替換的主機名伺服器協議(在RFC 953中描述)的傳統。因此,對於這些 RFC,全數字主機名將是有效的。

RFC 1123 本身討論了 IP 與主機名解析的後果:

如果可以在沒有此類標識分隔符的情況下輸入點分十進制數字,則必須進行完整的語法檢查,因為現在允許主機域名的一部分以數字開頭並且可以合法地完全是數字 (參見第 6.1 節)。 2.4)。但是,有效的主機名永遠不能採用點分十進制形式#.#.#.#,因為至少最高級別的組件標籤將是字母。

但是,由於實施問題, RFC 1178指南中提供了選擇有效主機名的方法。許多這些實現不能很好地辨識數字主機名,並嘗試將它們解析為 IP,直到它們包含至少一個非數字字元,無論位置如何。

此外,您會發現實現並不總是遵守 RFC 952 的其他原始約束,例如允許主機名以減號或句點結尾。

DNS 保留了這些原始的主機名規範,並增加了對下劃線的支持 ( RFC 2782 )。

更新根據評論中的要求,對句子進行澄清:但是,有效的主機名永遠不能具有點分十進制形式#.#.#.#,因為至少最高級別的組件標籤將是 alphabetic。這意味著頂級域名必須是字母,因此完全限定的主機名永遠不會與 IPv4 地址混淆。RFC 3696已經為 DNS 闡明了這個想法,並將其更改為not all-numeric。注意細微的差別。

引用自:https://serverfault.com/questions/638260