อักขระที่ถูกต้องของชื่อโฮสต์?


86

อะไรคืออักขระที่ถูกต้องของชื่อโฮสต์? สิ่งนี้จะเป็นเช่นคอมพิวเตอร์ในเครือข่ายหรือโดเมนเว็บ

เพื่อให้เข้าใจตรงกันฉันกำลังเขียนเกมพีซีที่เชื่อมต่อกับเซิร์ฟเวอร์ระยะไกล ดังนั้นฉันจึงมีฟิลด์สำหรับชื่อโฮสต์และฟิลด์สำหรับพอร์ต เห็นได้ชัดว่าพอร์ตเป็นตัวเลขในช่วง Short แต่ฉันต้องการทราบว่าอักขระชื่อโฮสต์ที่เป็นไปได้ทั้งหมดคืออะไร (และรูปแบบอื่น ๆ ที่อาจจำเป็น - ชื่อโฮสต์ต้องขึ้นต้นด้วยตัวอักษรหรือไม่)

ตัวอย่างของชื่อโฮสต์รวมหรือlocalhostgoogle.com


2
คำสั่งlinux sethostnameจะยอมรับไบต์ใด ๆ
OrangeDog

คำตอบ:


92

ชำระเงินวิกินี้โดยเฉพาะส่วนข้อ จำกัด เกี่ยวกับชื่อโฮสต์ที่ถูกต้อง

ชื่อโฮสต์ประกอบด้วยชุดของป้ายกำกับที่เชื่อมต่อกับจุดเช่นเดียวกับชื่อโดเมนทั้งหมด ตัวอย่างเช่น "en.wikipedia.org" คือชื่อโฮสต์ แต่ละป้ายต้องมีความยาวระหว่าง 1 ถึง 63 อักขระและชื่อโฮสต์ทั้งหมด (รวมถึงจุดที่คั่นด้วย แต่ไม่ใช่จุดต่อท้าย) มีอักขระ ASCII ได้สูงสุด 253 ตัว

มาตรฐานอินเทอร์เน็ต (การร้องขอความคิดเห็น) สำหรับโปรโตคอลกำหนดให้ป้ายชื่อโฮสต์ของคอมโพเนนต์อาจมีเฉพาะอักษร ASCII 'a' ถึง 'z' (ในลักษณะที่ไม่คำนึงถึงตัวพิมพ์เล็กและใหญ่) ตัวเลข '0' ถึง '9' และขีดกลาง ('-'). ข้อกำหนดดั้งเดิมของชื่อโฮสต์ในRFC 952มีข้อบังคับว่าป้ายกำกับต้องไม่ขึ้นต้นด้วยตัวเลขหรือยัติภังค์และต้องไม่ลงท้ายด้วยยัติภังค์ อย่างไรก็ตามข้อกำหนดที่ตามมา ( RFC 1123 ) อนุญาตให้ป้ายชื่อโฮสต์ขึ้นต้นด้วยตัวเลข ไม่อนุญาตให้ใช้สัญลักษณ์เครื่องหมายวรรคตอนหรือช่องว่างอื่น ๆ


6
ตรวจสอบให้แน่ใจว่าคุณกำลังมองหาชื่อโฮสต์หรือชื่อโดเมนที่มีคุณสมบัติครบถ้วนหรืออย่างใดอย่างหนึ่ง
Kevin Gross

นอกจากนี้โปรดระบุให้ชัดเจนว่าคุณกำลังมองหาความต้องการการทำงานร่วมกันของ DNS ที่เข้มงวดหรือไม่ โดยเฉพาะอย่างยิ่ง DNS ห้ามขีดล่างในป้ายกำกับชื่อโฮสต์ในขณะที่ระบบปฏิบัติการหลายระบบอนุญาตให้ใช้ภายในเครื่อง เซิร์ฟเวอร์ DNS มีแนวโน้มที่จะผ่อนปรนและในทางปฏิบัติ DNS ต้องการขีดล่างในประเภทระเบียนบางประเภทเช่นระเบียน TXT (สำหรับ DKIM เป็นต้น) ไม่ใช่สำหรับป้ายชื่อโฮสต์
tripleee

26

ขึ้นอยู่กับว่าคุณประมวลผล IDN ก่อนหรือหลังtoASCIIอัลกอริทึมIDN (นั่นคือคุณเห็นชื่อโดเมนเป็นπαράδειγμα.δοκιμήภาษากรีกหรือเป็นxn--hxajbheg2az3al.xn--jxalpdlp?)

ในกรณีหลัง - ที่คุณจัดการ IDN ผ่าน punycode กฎ RFC 1123 แบบเก่าจะใช้:

U + 0041 ถึง U + 005A (AZ), U + 0061 ถึง U + 007A (az) กรณีพับเข้าหากัน, U + 0030 ถึง U + 0039 (0-9) และ U + 002D (-)

และ U + 002E (.) แน่นอน; กฎสำหรับป้ายกำกับอนุญาตให้คนอื่น ๆ มีจุดระหว่างป้ายกำกับ

หากคุณเห็นในรูปแบบ IDN อักขระที่อนุญาตจะมีหลากหลายมากโปรดดูhttp://unicode.org/reports/tr36/idn-chars.htmlสำหรับแผนภูมิที่มีประโยชน์สำหรับอักขระที่ถูกต้องทั้งหมด

โอกาสที่รหัสเครือข่ายของคุณจะจัดการกับ punycode แต่รหัสที่แสดงของคุณ (หรือแม้กระทั่งเพียงแค่ส่งสตริงไปยังและจากเลเยอร์อื่น ๆ ) ด้วยรูปแบบที่มนุษย์อ่านได้มากกว่าเนื่องจากไม่มีใครใช้เซิร์ฟเวอร์บนالسعودية .xn--mgberp4a5d4arโดเมนต้องการที่จะเห็นเซิร์ฟเวอร์ของตนระบุว่าเป็นอยู่บน


1
ว้าวฉันไม่เคยเห็น IDN และ Ponycode มาก่อน! ตอนนี้ฉันกำลังวางแผนสำหรับการสนับสนุนภาษาอังกฤษเท่านั้นเนื่องจากเป็นเพียงโครงการสัตว์เลี้ยงของฉัน แต่ฉันได้เรียนรู้บางอย่างจากคำตอบของคุณแน่นอน!
Ricket

2
สิ่งที่ยอดเยี่ยมเกี่ยวกับวิธีการทำงานของ punycode คือต่ำกว่าระดับหนึ่ง (ระดับที่คุณทำเครือข่าย) เป็น ASCII ทั้งหมด เป็นวิธีการแสร้งทำเป็นว่าเทคโนโลยี ASCII เท่านั้นที่สามารถทำงานกับข้อความอื่น ๆ ได้ (รวมถึงคำภาษาอังกฤษบางคำที่ไม่อนุญาตก่อนหน้านี้) เช่นเดียวกับการให้คำทั้งคำว่าเส้นทางการอัปเกรดมันให้คำเดียวด้วยเช่นกัน: สร้างมันเพื่อทำตามที่ RFC 1123 กล่าวและหากคุณเพิ่มใน IDN ในภายหลังการสนับสนุนรหัสเครือข่ายจะยังคงเหมือนเดิมและคุณเพิ่มการรองรับ RFC 3490 ไว้ด้านบน (ห้องสมุดมีให้บริการในหลายภาษาเพื่อช่วยด้วย)
Jon Hanna

2
@ ตั๋วไม่ทราบว่าพิมพ์ผิดหรือถ้าคุณล้อเล่นเกี่ยวกับชื่อ ("ponycode") ฉันเรียกพวกเขาว่า "เจาะ" เป็นการส่วนตัว
Camilo Martin

4

"name" (Net, Host, Gateway หรือ Domain name) คือสตริงข้อความที่ยาวถึง 24 อักขระที่ดึงมาจากตัวอักษร (AZ), ตัวเลข (0-9), เครื่องหมายลบ (-) และจุด (.) โปรดทราบว่าช่วงเวลาจะได้รับอนุญาตก็ต่อเมื่อใช้เพื่อคั่นองค์ประกอบของ "ชื่อสไตล์โดเมน" (ดู RFC-921, "Domain Name System Implementation Schedule" สำหรับพื้นหลัง) ไม่อนุญาตให้ใช้อักขระว่างหรือเว้นวรรคเป็นส่วนหนึ่งของชื่อ ไม่มีความแตกต่างระหว่างตัวพิมพ์ใหญ่และตัวพิมพ์เล็ก อักขระตัวแรกต้องเป็นอักขระอัลฟ่า อักขระตัวสุดท้ายต้องไม่เป็นเครื่องหมายลบหรือจุด โฮสต์ที่ทำหน้าที่เป็น GATEWAY ควรมี "-GATEWAY" หรือ "-GW" เป็นส่วนหนึ่งของชื่อ โฮสต์ที่ไม่ได้ทำหน้าที่เป็นอินเทอร์เน็ตเกตเวย์ไม่ควรใช้ "-GATEWAY" และ "-GW" เป็นส่วนหนึ่งของชื่อ โฮสต์ที่เป็น TAC ควรมี "

มีให้ในhttp://support.microsoft.com/kb/149044


นี้จะยกมาคำต่อคำจาก RFC 952 [ tools.ietf.org/html/rfc952] ทำให้เข้าใจผิด - ชื่อโฮสต์มีความยาวได้ตั้งแต่ 1 ถึง 63 อักขระตามที่ระบุไว้ข้างต้น
Craig S. Anderson

ลิงก์เสียขออภัย
Eugene Mayevski 'Callback

0

หากคุณจดทะเบียนโดเมนและการยกเลิก (เช่น.com) ไม่ใช่ IDN ตามที่Aaron Hathawayกล่าว: ชื่อโฮสต์ประกอบด้วยชุดป้ายกำกับที่เชื่อมต่อกับจุดเช่นเดียวกับชื่อโดเมนทั้งหมด ตัวอย่างเช่น,en.wikipedia.orgชื่อโฮสต์ แต่ละป้ายต้องมีความยาวระหว่าง 1 ถึง 63 อักขระและชื่อโฮสต์ทั้งหมด (รวมถึงจุดที่คั่น แต่ไม่ใช่จุดต่อท้าย) มีอักขระ ASCII ได้สูงสุด 253 ตัว

มาตรฐานอินเทอร์เน็ต (การร้องขอความคิดเห็น) สำหรับโปรโตคอลกำหนดให้ป้ายชื่อโฮสต์ของคอมโพเนนต์อาจมีเฉพาะตัวอักษร ASCII aถึงz(ในลักษณะที่ไม่คำนึงถึงตัวพิมพ์เล็กและใหญ่) ตัวเลข0ผ่าน9และขีด-กลาง ข้อกำหนดดั้งเดิมของชื่อโฮสต์ใน RFC 952 มีข้อบังคับว่าป้ายกำกับต้องไม่ขึ้นต้นด้วยตัวเลขหรือยัติภังค์และต้องไม่ลงท้ายด้วยยัติภังค์ อย่างไรก็ตามข้อกำหนดที่ตามมา (RFC 1123) อนุญาตให้ป้ายชื่อโฮสต์ขึ้นต้นด้วยตัวเลข ไม่อนุญาตให้ใช้สัญลักษณ์เครื่องหมายวรรคตอนหรือช่องว่างอื่น ๆ

ต่อมาสเปนกับมัน.es, .com.es, .org.es, .nom,es, .gob.esและ.edu.esแนะนำ TLDs IDN ถ้า TLD ของคุณเป็นหนึ่ง.esหรืออื่น ๆ ที่สนับสนุนตัวละครใด ๆ ที่สามารถนำมาใช้ แต่คุณไม่สามารถรวมตัวอักษรเช่นละตินกรีกหรือไซริลในชื่อโฮสต์ และเคารพในสิ่งที่ไม่สามารถดำเนินไปได้ในตอนเริ่มต้นหรือตอนท้าย

หากคุณใช้ tlds ที่ไม่ได้ลงทะเบียนสำหรับเครือข่ายเฉพาะเช่นกับ DNS ในเครื่องหรือไฟล์โฮสต์คุณสามารถถือว่าทั้งหมดเป็น IDN

โปรดทราบว่าโปรแกรมบางโปรแกรมอาจทำงานได้ไม่ดีโดยเฉพาะโปรแกรมเก่าล้าสมัยและไม่เป็นที่นิยม

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