มันถูกต้องสำหรับชื่อโฮสต์ที่จะเริ่มต้นด้วยหลัก?


45

มันถูกต้องสำหรับชื่อโฮสต์ที่จะเริ่มต้นด้วยหลัก? เช่น8server

จากการอ่านRFC 1123มันจะปรากฏว่าเป็นชื่อโฮสต์ที่ถูกต้อง อย่างไรก็ตามฉันไม่ชัดเจนว่าชื่อโฮสต์สามารถขึ้นต้นด้วยตัวเลขเมื่อมีคำต่อท้ายเช่น8server.com

ที่มาของคำถามนี้คือInternetDomainName.isValid("8server");ในห้องสมุด Google Guava ( Javadoc ) ปฏิเสธการป้อนข้อมูล ฉันยังโพสต์คำถามเฉพาะในกลุ่มสนทนา Guava


2
เพื่อเป็นการพิสูจน์ตามตัวอย่างพวกเขามีอยู่: 7dayshop.com
Holloway

3
แล้วชื่อโฮสต์หลักเพียงอย่างเดียวล่ะ 88888888.cn
小太郎

7
4chan.comเป็นชื่อโฮสต์ที่ถูกต้อง (และรู้จักกันดี) ที่เริ่มต้นด้วยตัวเลข
IQAndreas

3
คุณจะลืม9gag.com ได้อย่างไร : D
ADTC

8
@IQAndreas, 4chan.org เป็นเหตุผลที่ดีพอที่จะทำให้มันไม่ถูกต้อง (แค่ล้อเล่นนิรนามอย่าทำร้ายฉัน)
Paul Ruane

คำตอบ:


33

RFC 1123 คลายข้อ จำกัด ของ RFC 952 ซึ่งระบุแบบดั้งเดิมของHostname Server Protocol (อธิบายไว้ในRFC 953 ) แทนที่ด้วย DNS ดังนั้นชื่อโฮสต์ที่เป็นตัวเลขอย่างสมบูรณ์จะถูกต้องต่อ RFC เหล่านี้

RFC 1123 พูดถึงผลที่ตามมาเมื่อพูดถึง IP กับการแยกชื่อโฮสต์:

หากสามารถป้อนตัวเลขทศนิยมแบบจุดโดยไม่ต้องมีตัวคั่นที่ระบุการตรวจสอบวากยสัมพันธ์แบบเต็มจะต้องทำเพราะส่วนของชื่อโดเมนโฮสต์ได้รับอนุญาตให้เริ่มต้นด้วยตัวเลขและอาจเป็นตัวเลขตามกฎหมายทั้งหมด (ดูส่วน 6.1 2.4) อย่างไรก็ตามชื่อโฮสต์ที่ถูกต้องจะต้องไม่มีรูปแบบจุดทศนิยม #. #. #. #. เนื่องจากอย่างน้อยฉลากองค์ประกอบระดับสูงสุดจะเป็นตัวอักษร

อย่างไรก็ตามมีให้ในแนวทางRFC 1178เพื่อเลือกชื่อโฮสต์ที่ถูกต้องเนื่องจากปัญหาการใช้งาน การใช้งานจำนวนมากเหล่านี้ไม่รู้จักชื่อโฮสต์ที่เป็นตัวเลขและพยายามแยกพวกเขาราวกับว่าพวกเขาเป็น IP จนกว่าพวกเขาจะมีอย่างน้อยหนึ่งตัวอักษรที่ไม่ใช่ตัวเลขไม่ว่าสถานที่ตั้ง

นอกจากนี้คุณจะพบว่าการติดตั้งใช้งานไม่เป็นไปตามข้อ จำกัด ดั้งเดิมอื่น ๆ ของ RFC 952 เสมอเช่นอนุญาตให้ชื่อโฮสต์ลงท้ายด้วยเครื่องหมายลบหรือจุด

DNS เก็บรักษาข้อกำหนดดั้งเดิมเหล่านี้สำหรับชื่อโฮสต์และเพิ่มการสนับสนุนสำหรับขีดล่าง ( RFC 2782 )

ปรับปรุงตามคำขอในความคิดเห็นชี้แจงประโยค: อย่างไรก็ตามชื่อโฮสต์ที่ถูกต้องไม่สามารถมีรูปแบบประทศนิยม # # # # # # # #, อย่างน้อยตั้งแต่ระดับสูงสุดฉลากส่วนประกอบจะมีตัวอักษร... ซึ่งหมายความว่าชื่อโดเมนระดับบนสุดจะต้องเป็นตัวอักษรดังนั้นชื่อโฮสต์ที่ผ่านการรับรองโดยสมบูรณ์จะไม่สับสนกับที่อยู่ IPv4 แนวคิดนี้ได้รับการชี้แจงโดยRFC 3696สำหรับ DNS และเปลี่ยนเป็นไม่ใช่ตัวเลขทั้งหมด สังเกตความแตกต่างเล็กน้อย


7
โปรดทราบว่าการใช้งานที่ไม่สามารถจัดการตัวเลขในชื่อย้อนหลังไปถึงยุค 80; RFC 1178 ถูกตีพิมพ์ในปี 1990 สิ่งที่ไม่สามารถจัดการได้ในตอนนี้คือรถบั๊กกี้
Michael Hampton

@MichaelHampton คุณจะประหลาดใจกับจำนวนการใช้งานที่ยังไม่ให้เกียรติ RFC เหล่านี้ เริ่มต้นจากการจัดการไฟล์โฮสต์ linux ของคุณ
ซาเวียร์ลูคัส

11
ฮ่าฮ่าไม่ฉันจะไม่ทำ แทบจะเป็นไปไม่ได้เลยที่จะไม่มีวันชนะ RFC ได้เลย
Michael Hampton

2
@Michael Hampton: คุณไม่เชื่อเรื่องอึที่ฉันเห็นจาก devs ในบางครั้ง สองสามสัปดาห์ที่ผ่านมาฉันมีผู้สร้างเว็บเพจกำหนดค่าเครือข่ายในกล้อง ip เพื่อให้ผู้ใช้สามารถป้อนชื่อโฮสต์สำหรับกล้องได้ เขาไม่ได้ทำการตรวจสอบใด ๆ กับรูปแบบการป้อนข้อมูลผู้ใช้ฟรี ผู้ใช้ทดสอบเบต้าเข้ามา "ห้อง 1.10" และกล้องส่งอย่างมีความสุขว่าเป็นตัวระบุลูกค้า DHCP ฉันขอรับรองกับเซิร์ฟเวอร์ Microsoft DHCP และ DNS ของคุณว่าไม่เป็นอย่างนั้น สิ่งที่ดีที่ฉันสังเกตเห็นก่อนหน้านั้นคือการสร้างการผลิต ฉันสามารถสั่นเทาเมื่อนึกถึงสิ่งที่บางครั้งผ่านลูกค้า ...
Tonny

13

เดิมชื่อโฮสต์ไม่สามารถเริ่มต้นด้วยหลักหรือขีดล่าง ( RFC 952 ) แต่สเปคใหม่ RFC 1123 ตามที่คุณกล่าวถึงอนุญาต

เกี่ยวกับการเรียก isValid () ในกรณีนี้ชื่อโดเมนแบบเต็มควรถูกส่งผ่านเป็นพารามิเตอร์: InternetDomainName.isValid("8server.com");


ชื่อโดเมนแบบเต็มควรจะถูกส่งผ่านไปยังวิธีการ isValid หรือไม่ หลังจากInternetDomainName.isValid("server");ผลตอบแทนที่แท้จริง
ทำเครื่องหมาย

@ มาร์คตกลงฉันได้อัปเดตคำตอบตามนั้น
Céline Aussourd

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.