Tên miền phụ (tên miền) có thể có dấu gạch dưới _
trong đó không?
Tên miền phụ (tên miền) có thể có dấu gạch dưới _
trong đó không?
Câu trả lời:
Hầu hết các câu trả lời được đưa ra ở đây là sai . Hoàn toàn hợp pháp khi có dấu gạch dưới trong một tên miền. Hãy để tôi trích dẫn tiêu chuẩn, RFC 2181, phần 11, "Cú pháp tên" :
Bản thân DNS chỉ đặt một hạn chế trên các nhãn cụ thể có thể được sử dụng để xác định các bản ghi tài nguyên. Đó là một hạn chế liên quan đến chiều dài của nhãn và tên đầy đủ. [...] Việc triển khai các giao thức DNS không được đặt bất kỳ hạn chế nào đối với các nhãn có thể được sử dụng. Cụ thể, các máy chủ DNS không được từ chối phục vụ một vùng vì nó chứa các nhãn có thể không được chấp nhận đối với một số chương trình máy khách DNS.
Xem thêm thông số kỹ thuật DNS gốc, RFC 1034 , phần 3.5 "Cú pháp tên ưa thích" nhưng đọc kỹ.
Tên miền với dấu gạch dưới là rất phổ biến trong tự nhiên. Kiểm tra _jabber._tcp.gmail.com
hoặc _sip._udp.apnic.net
.
RFC khác được đề cập ở đây đối phó với những điều khác nhau. Câu hỏi ban đầu là về tên miền . Nếu câu hỏi dành cho tên máy chủ (hoặc cho URL, bao gồm tên máy chủ), thì câu hỏi này khác, tiêu chuẩn có liên quan là RFC 1123 , phần 2.1 "Tên và số máy chủ " giới hạn tên máy chủ thành chữ cái-chữ số.
_jabber._tcp.gmail.com
không phải là một miền, nó là một FQDN. Vì các URL không thể có dấu gạch dưới trong chúng, có lẽ bạn sẽ không bao giờ có thể mua tên miền có dấu gạch dưới trong đó. Vì vậy, ngay cả các tên miền tho cũng có thể có dấu gạch dưới từ quan điểm cú pháp DNS, bạn sẽ không bao giờ gặp phải bất kỳ trường hợp nào, trừ khi đó là tên miền cục bộ.
Người ta phải rõ ràng về định nghĩa. Như được sử dụng ở đây:
Tên máy chủ phải tuân theo các hạn chế của RFC 952 và thư giãn nhẹ của RFC 1123
RFC 2181 làm rõ rằng có một sự khác biệt giữa tên miền và tên máy chủ:
... [thực tế là] bất kỳ nhãn nhị phân nào cũng có thể có bản ghi MX không ngụ ý rằng bất kỳ tên nhị phân nào cũng có thể được sử dụng làm phần lưu trữ của địa chỉ email ...
Vì vậy, dấu gạch dưới trong tên máy chủ là không có, dấu gạch dưới trong tên miền là a-ok.
Trong thực tế, người ta cũng có thể thấy tên máy chủ với dấu gạch dưới. Như Nguyên tắc mạnh mẽ nói: "Hãy thận trọng trong những gì bạn gửi, tự do trong những gì bạn chấp nhận".
Trong thế kỷ 21, hóa ra tên máy chủ cũng như tên miền có thể được quốc tế hóa! Điều này có nghĩa là dùng đến mã hóa trong trường hợp nhãn chứa các ký tự nằm ngoài bộ được phép.
Đặc biệt, nó cho phép một để mã hóa _
trong hostname (Cập nhật 2017-07:. Đây là nghi ngờ, xem bình luận _
.. Vẫn không thể được sử dụng trong các hostname Trên thực tế, nó có thể thậm chí không được sử dụng trong nhãn quốc tế)
RFC đầu tiên cho quốc tế hóa là RFC 3490 tháng 3 năm 2003, "Quốc tế hóa tên miền trong ứng dụng (IDNA)". Hôm nay chúng tôi có:
Bạn cũng có thể muốn kiểm tra mục Wikipedia
RFC 5890 giới thiệu nhãn LDH (Letter-Digit-Hypen) cho các nhãn được sử dụng trong tên máy chủ và nói:
Đây là hình thức nhãn cổ điển được sử dụng, mặc dù có một số hạn chế bổ sung, trong tên máy chủ (RFC 952). Cú pháp của nó giống hệt với cú pháp được mô tả là "cú pháp tên ưa thích" trong Phần 3.5 của RFC 1034 như được sửa đổi bởi RFC 1123. Tóm lại, đó là một chuỗi bao gồm các chữ cái, chữ số ASCII và dấu gạch nối với hạn chế thêm rằng dấu gạch nối không thể xuất hiện ở đầu hoặc cuối chuỗi. Giống như tất cả các nhãn DNS, tổng chiều dài của nó không được vượt quá 63 octet.
Quay trở lại thời kỳ đơn giản hơn, dự thảo Internet này là một đề xuất sớm cho quốc tế hóa tên máy chủ . Tên máy chủ có ký tự quốc tế có thể được mã hóa bằng cách sử dụng, ví dụ: mã hóa 'RACE' .
Tác giả của ghi chú đề xuất 'mã hóa RACE':
Theo RFC 1035, các bộ phận máy chủ phải không phân biệt chữ hoa chữ thường, bắt đầu và kết thúc bằng một chữ cái hoặc chữ số và chỉ chứa các chữ cái, chữ số và ký tự gạch nối ("-"). Điều này, tất nhiên, không bao gồm bất kỳ nhân vật quốc tế hóa, cũng như nhiều nhân vật khác trong tiết mục nhân vật ASCII. Hơn nữa, các phần tên miền phải có độ dài 63 octet hoặc ngắn hơn .... Tất cả các phần tên được chuyển đổi có chứa các ký tự được quốc tế hóa bắt đầu bằng chuỗi "bq--". (...) Chuỗi "bq--" đã được chọn vì nó cực kỳ khó tồn tại trong các phần máy chủ trước khi thông số kỹ thuật này được sản xuất.
bar.baz.
(ví dụ) chỉ là tập hợp các tên miền được phân cấp bên dưới bar.baz.
, ví dụ như a.bar.baz.
, f.g.bar.baz.
, h.bar.baz.
, v.v ... "tên miền phụ" này có thể có hoặc không bao gồm tên máy chủ thực tế .
a.bar.baz
(tên miền) "tên miền phụ của" chuỗi bar.baz
(tên miền khác). Tên miền (tài nguyên cơ sở dữ liệu DNS) a.bar.baz
và bar.baz
có thể hoặc không thể là tên máy chủ .
Có một điều nữa bạn có thể cần biết: Nếu máy chủ hoặc phần tên miền phụ của url chứa dấu gạch dưới, IE9 (chưa thử nghiệm các phiên bản khác) không thể viết cookie.
Vì vậy, hãy cẩn thận về điều đó. :-)
Làm rõ bortzmeyer và David Tonhofer , nhãn tên miền và tên miền phụ có thể chứa dấu gạch dưới hàng đầu, nhưng không ở đâu khác.
Như David Tonhofer đã viết, các nhãn là các phần giữa các giai đoạn và phải tuân theo quy tắc LDH trừ khi chỉ định nhãn dịch vụ và nhãn cổng để phân biệt chúng với nhãn thông thường. Sau đó, chúng phải xuất hiện ở đầu nhãn phải là "Tên ngắn" từ Đăng ký tên dịch vụ và số cổng, số cổng không có số 0 đứng đầu hoặc giao thức (ví dụ: tcp, udp). Các nhãn dịch vụ này được giới hạn hơn nữa trong 15 ký tự.
Trái với câu trả lời của David Tonhofer , IDN không cho phép mã hóa dấu gạch dưới ('_' U + 005F Low LINE) hoặc bất kỳ ký tự ASCII không hợp lệ nào khác.
Từ RFC5890
[..] hai tập hợp con mới của nhãn LDH được tạo bằng cách giới thiệu IDNA. Chúng được gọi là nhãn LDH dành riêng (nhãn R-LDH) và nhãn LDH không dành riêng (nhãn NR-LDH). Các nhãn LDH dành riêng, được gọi là "tên miền được gắn thẻ" trong một số ngữ cảnh khác, có thuộc tính chứa "-" trong các ký tự thứ ba và thứ tư nhưng theo quy tắc khác của nhãn LDH .
Punycode mã hóa tất cả các điểm mã ASCII dưới dạng ASCII trực tiếp, bao gồm cả dấu gạch dưới. Kết quả R-LDH sẽ không tuân thủ các quy tắc nhãn LDH. Ví dụ, Σ_.com
sẽ được mã hóa khi xn--_-zmb.com
vi phạm các quy tắc. Có thể có một loại tiền mã hóa đồng nhất trông giống như một dấu gạch dưới có thể được mã hóa một cách hợp pháp (có lẽ là dòng thấp băng thông đầy đủ U + FF3F), nhưng các loại tiền mã hóa này sẽ được phân loại là DISALLOWED bởi RFC5892 theo 2.3.
RACE (sơ đồ mã hóa IDN được đề xuất khác) không được IETF chấp nhận làm tiêu chuẩn và không nên được sử dụng.
Tôi đã theo liên kết đến RFC1034 và đọc hầu hết trong số đó và rất ngạc nhiên khi thấy điều này:
Các nhãn phải tuân theo các quy tắc cho tên máy chủ ARPANET. Họ phải bắt đầu bằng một chữ cái, kết thúc bằng một chữ cái hoặc chữ số và có các ký tự bên trong chỉ có các chữ cái, chữ số và dấu gạch nối. Cũng có một số hạn chế về chiều dài. Nhãn phải có 63 ký tự trở xuống.
Để làm rõ, một tên miền được tạo thành từ các nhãn được phân tách bằng dấu chấm ".". Thông số kỹ thuật này phải lỗi thời vì nó không đề cập đến việc sử dụng dấu gạch dưới. Tôi có thể hiểu được sự nhầm lẫn nếu có ai vấp phải thông số này mà không biết nó đã lỗi thời. Nó đã lỗi thời, phải không?
Tôi đã theo liên kết đến RFC2181 và đọc một số. Đặc biệt là nơi nó liên quan đến vấn đề tên có thẩm quyền, hoặc chính tắc, và vấn đề gì tạo ra nhãn DNS hợp lệ.
Như đã đăng trước đó, nó chỉ có một hạn chế về độ dài sau đó để tóm tắt nó đọc:
(về tên và nhãn hợp lệ)
Chúng đã được chỉ định đầy đủ, tuy nhiên các thông số kỹ thuật dường như đôi khi bị bỏ qua. Chúng tôi tìm cách củng cố các thông số kỹ thuật hiện có.
Loại lá khiến tôi tự hỏi liệu "hạn chế chỉ một chiều dài" là "đầy đủ". Chúng ta sẽ bắt đầu thấy các tên miền như @ # $% !! Sớm? Internet không đủ mạnh?
Gần đây, diễn đàn CAB (*) đã quyết định rằng
Tất cả các chứng chỉ có chứa ký tự gạch dưới trong bất kỳ mục nhập dNSName nào và có thời hạn hiệu lực hơn 30 ngày PHẢI bị thu hồi trước ngày 15 tháng 1 năm 2019. https://cabforum.org/2018/11/12/ballot-sc-12- hoàng hôn của những kẻ dưới đáy biển /
Điều này có nghĩa là bạn không còn được phép sử dụng dấu gạch dưới trong các tên miền sẽ có chứng chỉ ssl / tls.
(*) Diễn đàn Trình duyệt Chứng nhận (CA / Diễn đàn Trình duyệt) là sự tập hợp tự nguyện của Nhà phát hành Chứng chỉ hàng đầu (như được định nghĩa trong Mục 2.1 (a) (1) và (2) bên dưới) và các nhà cung cấp phần mềm trình duyệt Internet và các ứng dụng khác sử dụng chứng chỉ (Người tiêu dùng chứng chỉ, như được định nghĩa trong Mục 2.1 (a) (3) bên dưới).
Các TLD riêng lẻ có thể đặt các quy tắc và hạn chế của riêng họ đối với các tên miền mà họ thấy phù hợp, chẳng hạn như để chứa các ngôn ngữ địa phương.
Ví dụ: theo CIRA , .ca
tên miền của Canada được cho phép:
Chữ
a
thông quaz
, và các ký tự có dấu sau đây :é ë ê è â à æ ô œ ù û ü ç î ï ÿ
. Lưu ý rằng Tên miền không phân biệt chữ hoa chữ thường. Điều này có nghĩa là sẽ không có sự phân biệt giữa chữ in hoa và chữ thường (A
=a
);Những con số
0123456789
vàKý tự gạch nối ("
-
) (mặc dù nó không thể được sử dụng để bắt đầu hoặc kết thúc Tên miền).
Độ dài tối đa là 63 ký tự, ngoại trừ mỗi ký tự có dấu làm giảm giới hạn đó xuống 4 ký tự.
( Nguồn )
Ngẫu nhiên, điều này cho phép có khoảng 4 khả năng tên miền Quadragintillion (không tính tên miền phụ) cho tên miền dot-ca.
Đây là 2 xu của tôi từ thế giới Java:
Từ bảng điều khiển Spark Scala, với 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
Đó chắc chắn là một ý tưởng tồi ^^
Chỉ cần tạo dự án cục bộ (với vagrant) và nó đã hoạt động hoàn hảo khi được truy cập qua địa chỉ IP. Sau đó, tôi đã thêm some_name.test vào tệp lưu trữ và thử truy cập theo cách đó, nhưng tôi đã nhận được "yêu cầu xấu - 400" mọi lúc. Đã lãng phí hàng giờ cho đến khi tôi nhận ra rằng chỉ cần thay đổi tên miền thành some-name.test sẽ giải quyết vấn đề. Vì vậy, ít nhất là cục bộ trên Mac OS, nó không hoạt động.
Không, bạn không thể sử dụng dấu gạch dưới trong tên miền phụ nhưng hypen (dấu gạch ngang). tức là my-subdomain.agahost.com có thể chấp nhận được và my_subdomain.agahost.com sẽ không được chấp nhận.
Không, nếu bạn muốn nó giải quyết trên Internet.
Bạn không thể có: http://my_subdomain.example.com không hợp lệ.
Bạn có thể có: http://my-subdomain.example.com với dấu gạch nối.