Dapatkah subdomain (nama domain) memiliki garis bawah “_” di dalamnya?


212

Dapatkah subdomain (nama domain) memiliki garis bawah _di dalamnya?


12
Saya telah menjawab pertanyaan Anda: Anda benar-benar bermaksud NAMA DOMAIN. Jika, sebaliknya, yang Anda maksud NAMA HOST, edit pertanyaan Anda, karena jawabannya akan berbeda.
bortzmeyer

Jawaban:


362

Sebagian besar jawaban yang diberikan di sini salah . Sangat sah untuk memiliki garis bawah dalam nama domain. Biarkan saya mengutip standar, RFC 2181, bagian 11, "Sintaks nama" :

DNS sendiri menempatkan hanya satu batasan pada label tertentu yang dapat digunakan untuk mengidentifikasi catatan sumber daya. Satu batasan terkait dengan panjang label dan nama lengkap. [...] Implementasi protokol DNS tidak boleh membatasi label yang dapat digunakan. Secara khusus, server DNS tidak boleh menolak untuk melayani zona karena mengandung label yang mungkin tidak dapat diterima oleh beberapa program klien DNS.

Lihat juga spesifikasi DNS asli, RFC 1034 , bagian 3.5 "Sintaks nama pilihan" tetapi bacalah dengan cermat.

Domain dengan garis bawah sangat umum di alam liar. Periksa _jabber._tcp.gmail.comatau _sip._udp.apnic.net.

RFC lain yang disebutkan di sini menangani berbagai hal. Pertanyaan aslinya adalah untuk nama domain . Jika pertanyaannya adalah untuk nama host (atau untuk URL, yang menyertakan nama host), maka ini berbeda, standar yang relevan adalah RFC 1123 , bagian 2.1 "Nama dan Angka Host" yang membatasi nama host untuk huruf-digit-hyphen.


73
+1 untuk perbedaan antara "nama domain" dan "nama host"
Alnitak

3
Pertanyaannya (kecuali jika diedit) adalah tentang subdomain yaitu. nama host Anda tidak salah tentang pernyataan faktual Anda, kecuali menunjukkan bahwa jawaban itu salah, berdasarkan pada bagaimana pertanyaan saat ini diucapkan.
redreinard

4
Saya bingung, 1034 mengatakan, "Label harus mengikuti aturan untuk nama host ARPANET. Label harus dimulai dengan huruf, diakhiri dengan huruf atau digit, dan sebagai karakter interior hanya huruf, angka, dan tanda hubung." Bagian mana dari yang memungkinkan garis bawah?
claudekennilol

2
Kata-katanya membingungkan. URL tidak boleh memiliki garis bawah. URL selalu merupakan FQDN, ini bukan nama host. FQDN dapat memiliki nama host kosong, dalam hal ini FQDN = domain. _jabber._tcp.gmail.combukan domain, ini FQDN. Karena URL tidak dapat memiliki garis bawah di dalamnya, Anda mungkin tidak akan pernah bisa membeli domain dengan garis bawah di dalamnya. Jadi, meskipun domain juga dapat memiliki garis bawah dari sudut pandang sintaksis DNS, Anda tidak akan pernah menjumpai apa pun, kecuali itu domain lokal.
Kapsul

1
Saya tidak dapat melihat kutipan dalam 2.1 dari rfc1123 yang menyebutkan sesuatu tentang tanda hubung diizinkan. Saya dapat melihat di rfc952 bahwa sebuah nama bisa <let-or-digit-or-hyphen>. Apakah itu yang Anda maksudkan?
AJP

93

Catatan tentang terminologi, sebagai jawaban atas jawaban Bortzmeyer

Orang harus jelas tentang definisi. Seperti yang digunakan di sini:

  • nama domain adalah pengidentifikasi sumber daya dalam database DNS
  • label adalah bagian dari nama domain di antara titik-titik
  • hostname adalah tipe khusus dari nama domain yang mengidentifikasi host Internet

Nama host tunduk pada batasan RFC 952 dan sedikit relaksasi dari RFC 1123

RFC 2181 menjelaskan bahwa ada perbedaan antara nama domain dan nama host:

... [fakta bahwa] label biner apa pun dapat memiliki data MX tidak menyiratkan bahwa nama biner apa pun dapat digunakan sebagai bagian host dari alamat email ...

Jadi garis bawah dalam nama host adalah tidak boleh, garis bawah dalam nama domain adalah ok.

Dalam praktiknya, orang mungkin melihat nama host dengan garis bawah. Sebagaimana Prinsip Robustness mengatakan: "Jadilah konservatif dalam apa yang Anda kirim, liberal dalam apa yang Anda terima".

Catatan tentang penyandian

Pada abad ke-21, ternyata nama host dan nama domain dapat diinternasionalkan! Ini berarti beralih ke penyandian jika label yang berisi karakter berada di luar set yang diizinkan.

Secara khusus, memungkinkan seseorang untuk mengkodekan _di hostname (Update 2017-07. Ini diragukan, lihat komentar The _.. Masih belum dapat digunakan dalam nama host Memang, bahkan tidak dapat digunakan dalam label internasionalisasi)

RFC pertama untuk internasionalisasi adalah RFC 3490 Maret 2003, "Nama Domain dalam Aplikasi (IDNA)". Hari ini, kami memiliki:

  • RFC 5890 "IDNA: Definisi dan Kerangka Dokumen"
  • RFC 5891 "IDNA: Protocol"
  • RFC 5892 "Poin Kode Unicode dan IDNA"
  • RFC 5893 "Skrip Kanan-ke-Kiri untuk IDNA"
  • RFC 5894 "IDNA: Latar Belakang, Penjelasan, dan Dasar Pemikiran"
  • RFC 5895 "Memetakan Karakter untuk IDNA 2008"

Anda mungkin juga ingin memeriksa Entri Wikipedia

RFC 5890 memperkenalkan label istilah LDH (Letter-Digit-Hypen) untuk label yang digunakan dalam nama host dan mengatakan:

Ini adalah bentuk label klasik yang digunakan, meskipun dengan beberapa batasan tambahan, dalam nama host (RFC 952). Sintaksnya identik dengan yang digambarkan sebagai "sintaksis nama yang disukai" dalam Bagian 3.5 dari RFC 1034 sebagaimana dimodifikasi oleh RFC 1123. Secara singkat, ini adalah string yang terdiri dari huruf ASCII, angka, dan tanda hubung dengan batasan lebih lanjut bahwa tanda hubung tidak dapat muncul di awal atau akhir string. Seperti semua label DNS, panjang totalnya tidak boleh lebih dari 63 oktet.

Kembali ke masa yang lebih sederhana, konsep Internet ini adalah proposal awal untuk internasionalisasi hostname . Nama host dengan karakter internasional dapat dikodekan menggunakan, misalnya, pengkodean 'RACE' .

Penulis proposal proposal 'RACE encoding' mencatat:

Menurut RFC 1035, bagian host harus peka terhadap huruf besar-kecil, mulai dan berakhir dengan huruf atau angka, dan hanya mengandung huruf, angka, dan karakter tanda hubung ("-"). Ini, tentu saja, mengecualikan karakter internasionalisasi, serta banyak karakter lain dalam repertoar karakter ASCII. Lebih lanjut, bagian nama domain harus sepanjang 63 oktet atau lebih pendek .... Semua bagian nama yang dikonversi yang berisi karakter internasionalisasi dimulai dengan string "bq--". (...) String "bq--" dipilih karena sangat tidak mungkin ada di bagian host sebelum spesifikasi ini diproduksi.


Di samping catatan, "Sistem seperti DomainKeys dan catatan layanan menggunakan garis bawah sebagai sarana untuk memastikan bahwa karakter khusus mereka tidak bingung dengan nama host. Misalnya, _http._sctp.www.example.com menetapkan pointer layanan untuk SCTP host server web yang mampu (www) di domain example.com. " ( tautan )
x-yuri

Mengabaikan bagian penyandian RACE, IDN sudah menetapkan karakter dikonversi ke ASCII dengan menggunakan awalan 'xn--'.
mootmoot

2
@ Nelda.techspiress Sudah beberapa waktu tetapi menurut RFC 1034: Nama Domain - Konsep dan Fasilitas , apa yang disebut "subdomain" dari domain bar.baz.(misalnya) hanya koleksi nama domain yang hierarkis di bawah bar.baz., misalnya a.bar.baz., f.g.bar.baz., h.bar.baz., dll. "subdomain" ini mungkin atau mungkin tidak termasuk nama host yang sebenarnya .
David Tonhofer

2
Dalam penggunaan sehari-hari, orang mungkin cenderung salah menyebut string a.bar.baz(nama domain) "subdomain" string bar.baz(nama domain lain). Nama domain (sumber daya basis data DNS) a.bar.bazdan bar.bazmungkin atau mungkin bukan nama host .
David Tonhofer

1
Pada halaman 8 RFC 1034 , kita membaca: Sebuah domain diidentifikasi dengan nama domain, dan terdiri dari bagian ruang nama domain yang berada pada atau di bawah nama domain yang menentukan domain. Domain adalah subdomain dari domain lain jika terkandung dalam domain itu. Hubungan ini dapat diuji dengan melihat apakah nama subdomain berakhir dengan nama domain yang mengandung itu. Misalnya, ABCD adalah subdomain dari BCD, CD, D, dan "".
David Tonhofer

47

Ada satu hal tambahan yang perlu Anda ketahui: Jika bagian host atau subdomain dari url berisi garis bawah, IE9 (belum menguji versi lain) tidak dapat menulis cookie.

Jadi berhati-hatilah tentang itu. :-)



3
Kami baru saja melakukannya dalam sebuah proyek - dan saya akan tergila-gila dengan masalah IE yang aneh di sana. Sampai kami menemukan garis bawah di subdomain. ; o)
Kai Mattern

3
Masih menjadi masalah di IE10. Apakah MS tahu tentang ini?
Piotr Kula

15
Lebih relevan: Apakah MS peduli dengan hal ini?
Ajax


11

Klarifikasi bortzmeyer dan David Tonhofer , nama domain dan label nama subdomain dapat berisi garis bawah terkemuka, tetapi tidak di tempat lain.

Seperti yang ditulis oleh David Tonhofer , label adalah bagian di antara periode dan harus mengikuti aturan LDH kecuali ketika menentukan label layanan dan label port untuk membedakannya dari label biasa. Maka mereka harus muncul di awal label yang harus menjadi "Nama Pendek" dari Nama Layanan dan Nomor Port Registry , nomor port tanpa 0s terkemuka, atau protokol (mis. Tcp, udp). Label layanan ini selanjutnya dibatasi hingga 15 karakter.

  • RFC2782 menentukan subdomain catatan layanan awalan dengan garis bawah.
  • RFC6698 menentukan nomor port awalan dengan garis bawah dalam catatan sertifikat TLSA.

Berlawanan dengan jawaban David Tonhofer , IDN tidak memungkinkan untuk pengkodean garis bawah ('_' U + 005F LOW LINE) atau karakter ASCII lainnya yang tidak valid.

Dari RFC5890

[..] dua himpunan bagian baru label LDH dibuat dengan diperkenalkannya IDNA. Ini disebut label LDH Cadangan (label R-LDH) dan label LDH Non-Cadangan (label NR-LDH). Label LDH yang dicadangkan, yang dikenal sebagai "nama domain yang ditandai" dalam beberapa konteks lain, memiliki properti yang mengandung "-" dalam karakter ketiga dan keempat tetapi yang sebaliknya sesuai dengan aturan label LDH .

Punycode menyandikan semua codepoint ASCII sebagai ASCII secara langsung, termasuk garis bawah. R-LDH yang dihasilkan tidak akan sesuai dengan aturan label LDH. Misalnya, Σ_.comakan dikodekan sebagai xn--_-zmb.comyang melanggar aturan. Mungkin ada codepoint homografis yang terlihat seperti garis bawah yang dapat dikodekan secara legal (mungkin '_' U + FF3F garis bawah lowwidth), tetapi jenis codepoint ini akan dikategorikan sebagai DILARANG oleh RFC5892 di bawah 2.3 IgnorableProperties sebagai Noncharacter_Code_Point.

RACE (skema pengodean IDN lainnya yang diusulkan) tidak diterima sebagai standar oleh IETF dan tidak boleh digunakan.


1
Akhirnya. Tidak percaya ini adalah satu-satunya posting di seluruh halaman yang bahkan berbicara tentang punycode.
Pacerier

6

Saya mengikuti tautan ke RFC1034 dan membaca sebagian besar dan terkejut melihat ini:

Label harus mengikuti aturan untuk nama host ARPANET. Mereka harus mulai dengan huruf, diakhiri dengan huruf atau angka, dan sebagai karakter interior hanya huruf, digit, dan tanda hubung. Ada juga beberapa batasan panjang. Label harus berukuran 63 karakter atau kurang.

Untuk klarifikasi, nama domain terdiri dari label yang dipisahkan oleh titik ".". Spesifikasi ini harus kedaluwarsa karena tidak menyebutkan penggunaan garis bawah. Saya bisa mengerti kebingungan jika ada yang tersandung spec ini tanpa tahu itu usang. Itu sudah usang, bukan?

Saya mengikuti tautan ke RFC2181 dan membacanya. Terutama di mana itu berkaitan dengan masalah apa yang otoritatif, atau kanonik, nama dan masalah apa yang membuat label DNS yang valid.

Seperti yang diposting sebelumnya itu menyatakan hanya ada batasan panjang kemudian untuk jumlah itu berbunyi:

(tentang nama dan label yang valid)

Ini sudah ditentukan secara memadai, namun spesifikasinya tampaknya terkadang diabaikan. Kami berusaha untuk memperkuat spesifikasi yang ada.

Agak membuat saya bertanya-tanya apakah "batasan hanya panjang" adalah "memadai". Apakah kita akan mulai melihat nama domain seperti @ # $% !! segera? Bukankah internet sudah cukup kacau?


3
Tidak, ini tidak usang. RFC1034 adalah spesifikasi tentang nama host , kasus khusus nama domain , yang merupakan pengidentifikasi sumber daya generik dalam database DNS. Sebagai contoh, bagian "host" dari URI didefinisikan dengan agak santai ( tools.ietf.org/html/rfc3986#section-3.2.2 ) tetapi RFC memperingatkan: "Host yang diidentifikasi dengan nama terdaftar adalah urutan karakter yang biasanya dimaksudkan untuk pencarian dalam registri nama layanan atau host yang ditentukan secara lokal ... nama terdaftar yang dimaksudkan untuk pencarian dalam DNS menggunakan sintaksis yang didefinisikan dalam Bagian 3.5 dari [RFC1034] dan Bagian 2.1 dari [RFC1123]. "
David Tonhofer

3

Baru-baru ini forum-CAB (*) memutuskan hal itu

Semua sertifikat yang berisi karakter garis bawah dalam entri dNSName dan memiliki masa berlaku lebih dari 30 hari HARUS dicabut sebelum 15 Januari 2019. https://cabforum.org/2018/11/12/ballot-sc-12- sunset-of-underscores-in-dnsnames /

Ini berarti bahwa Anda tidak lagi diizinkan untuk menggunakan garis bawah pada domain yang akan memiliki sertifikat ssl / tls.

(*) Forum Browser Otoritas Sertifikasi (CA / Browser Forum) adalah pertemuan sukarela dari Penerbit Sertifikat terkemuka (sebagaimana didefinisikan dalam Bagian 2.1 (a) (1) dan (2) di bawah) dan vendor perangkat lunak browser Internet dan aplikasi lain yang gunakan sertifikat (Sertifikat Konsumen, sebagaimana didefinisikan dalam Bagian 2.1 (a) (3) di bawah).


1

Masing-masing TLD dapat menempatkan aturan mereka sendiri & pembatasan pada nama domain yang mereka inginkan, seperti untuk mengakomodasi bahasa lokal.

Misalnya, menurut CIRA , .canama domain Kanada diizinkan:

  • Surat amelalui z, dan karakter beraksen berikut: é ë ê è â à æ ô œ ù û ü ç î ï ÿ. Perhatikan bahwa Nama Domain tidak peka huruf besar-kecil. Ini berarti tidak akan ada perbedaan yang dibuat antara huruf besar dan huruf kecil ( A= a);

  • Angka-angka 0123456789, dan

  • Karakter tanda hubung (" -) (meskipun tidak dapat digunakan untuk memulai atau mengakhiri Nama Domain).

Panjang maksimum adalah 63 karakter, kecuali setiap karakter beraksen mengurangi batas itu sebanyak 4 karakter.

( Sumber )


Secara kebetulan, ini memungkinkan sekitar 4 Quadragintillion kemungkinan nama domain (tidak termasuk sub-domain) untuk domain dot-ca.


0

Di sini 2 sen saya dari dunia Jawa:

Dari konsol Spark Scala, dengan Java 8:

scala> new java.net.URI("spark://spark_master").getHost
res10: String = null

scala> new java.net.URI("spark://spark-master").getHost
res11: String = spark-master

scala> new java.net.URI("spark://spark_master.google.fr").getHost
res12: String = null

scala> new java.net.URI("spark://spark.master.google.fr").getHost
res13: String = spark.master.google.fr

scala> new java.net.URI("spark://spark-master.google.fr:3434").getHost
res14: String = spark-master.google.fr

scala> new java.net.URI("spark://spark-master.goo_gle.fr:3434").getHost
res15: String = null

Itu ide yang buruk ^^


0

Baru saja membuat proyek lokal (dengan gelandangan) dan itu berfungsi dengan baik ketika diakses melalui alamat ip. Kemudian saya menambahkan some_name.test ke file hosts dan mencoba mengaksesnya seperti itu, tetapi saya mendapatkan "permintaan buruk - 400" sepanjang waktu. Terbuang berjam-jam sampai saya tahu bahwa hanya mengubah nama domain menjadi some-name.test memecahkan masalah. Jadi setidaknya secara lokal di Mac OS tidak berfungsi.


0

Tidak, Anda tidak dapat menggunakan garis bawah di subdomain kecuali tanda hubung (hubung). yaitu my-subdomain.agahost.com dapat diterima dan my_subdomain.agahost.com tidak dapat diterima.


-2

Tidak jika Anda ingin menyelesaikannya di Internet.

Anda tidak dapat memiliki: http://my_subdomain.example.com tidak valid.

Anda dapat memiliki: http://my-subdomain.example.com dengan tanda hubung.


Itu terjadi setelah 15 Januari 2019 - contoh balasan Anda tidak berfungsi.
Joe Inwap

@JoeInwap Bisakah Anda mengarahkan saya ke sumber untuk komentar Anda?
ankshah

Saya pergi oleh cabforum.org/2018/11/12/… dan fakta bahwa o_o.lgms.nl menyajikan sertifikat yang tidak valid untuk nama host itu. Namun, nama itu tidak menyelesaikan.
Joe Inwap
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.