Có phải tất cả các miền về mặt kỹ thuật đều kết thúc bằng "."?
Có, nếu bạn nhìn vào các RFC cốt lõi liên quan đến DNS, bởi vì bất kỳ tên nào ở đó đều được truyền với một byte kết thúc có giá trị 0 mã hóa gốc, hay còn gọi là dấu chấm kết thúc ở định dạng "bản trình bày".
Xem phần 3.1.5 của RFC 1035:
NAME một tên miền được biểu diễn dưới dạng một chuỗi các nhãn, trong đó
mỗi nhãn bao gồm một octet độ dài theo sau bởi
số octet. Tên miền kết thúc bằng
octet độ dài bằng 0 cho nhãn null của gốc.
Đó cũng là lý do tại sao khi sử dụng đào
hoặc viết các tệp vùng, bạn sẽ thấy các tên kết thúc bằng dấu chấm cuối cùng để loại bỏ bất kỳ sự mơ hồ nào.
Bây giờ, tất cả phụ thuộc vào bối cảnh. Trong các URL, bạn viết tên máy chủ không có dấu chấm ở cuối và nó hoạt động vì ngụ ý rằng chúng là tuyệt đối.
Bạn có thể muốn tham khảo ý kiến RFC 8499 hiện là tài liệu tham khảo tiêu chuẩn cho mọi thứ liên quan đến thuật ngữ DNS.
Nó nói thế này:
Định dạng trình bày tên trong DNS toàn cầu là một danh sách
các nhãn được sắp xếp theo khoảng cách giảm dần từ gốc, được mã hóa
dưới dạng ASCII, với dấu "." ký tự giữa mỗi nhãn. Trong
định dạng trình bày, một tên miền đủ điều kiện bao gồm
nhãn gốc và dấu phân cách liên quan. Ví dụ, trong
định dạng trình bày, một tên miền đủ điều kiện với hai
nhãn không phải gốc luôn được hiển thị là "example.tld." thay vì
"ví dụ.tld". [RFC1035] định nghĩa phương thức hiển thị octet
không hiển thị trong ASCII.
Định dạng hiển thị phổ biến được sử dụng trong các ứng dụng và miễn phí
chữ. Nó giống như định dạng trình bày, nhưng hiển thị
nhãn gốc và dấu "." trước khi nó là tùy chọn và hiếm khi
xong. Ví dụ: ở định dạng hiển thị phổ biến, đủ điều kiện
tên miền có hai nhãn không phải gốc thường được hiển thị dưới dạng
"example.tld" thay vì "example.tld.". Tên chung
định dạng hiển thị thường được viết sao cho
tính định hướng của hệ thống chữ viết trình bày các nhãn bằng
giảm khoảng cách từ gốc (vì vậy, trong cả tiếng Anh và tiếng Anh
Ngôn ngữ lập trình C nhãn tên miền gốc hoặc tên miền cấp cao nhất (TLD)
trong danh sách có thứ tự là ngoài cùng bên phải; nhưng trong tiếng Ả Rập, nó có thể là
ngoài cùng bên trái, tùy thuộc vào quy ước địa phương).
Và sau đó, FQDN được định nghĩa và đi vào chi tiết về vấn đề thực sự liên quan đến ngữ cảnh:
Tên miền đủ điều kiện (FQDN): Đây thường chỉ là một cách rõ ràng
nói điều tương tự như "tên miền của một nút", như đã nêu
ở trên. Tuy nhiên, thuật ngữ này là mơ hồ. Nói đúng ra, một
tên miền đủ điều kiện sẽ bao gồm mọi nhãn, kể cả
nhãn có độ dài bằng 0 của gốc: tên như vậy sẽ được viết
"www.example.net." (lưu ý dấu chấm kết thúc). Nhưng, bởi vì mỗi
tên cuối cùng chia sẻ gốc chung, tên thường được viết
liên quan đến thư mục gốc (chẳng hạn như "www.example.net") và vẫn
được gọi là "đủ điều kiện". Thuật ngữ này lần đầu tiên xuất hiện trong [RFC819].
Trong tài liệu này, tên thường được viết liên quan đến gốc.
Nhu cầu về thuật ngữ "tên miền đủ điều kiện" xuất phát từ
sự tồn tại của các tên miền đủ điều kiện một phần, đó là những tên
trong đó một hoặc nhiều nhãn cuối cùng trong danh sách được sắp xếp
bị bỏ qua (ví dụ: tên miền "www" so với
"example.net" xác định "www.example.net"). Tên tương đối như vậy
chỉ được hiểu theo ngữ cảnh.
Đối với:
Trong trường hợp nào bạn sẽ thấy miền kết thúc bằng dấu "." như "google.com."?
Dễ dàng, thực hiện bất kỳ truy vấn DNS nào:
$ đào NS google.com +noall +ans
google.com. 3h9m51s TRONG NS ns4.google.com.
google.com. 3h9m51s VÀO NS ns2.google.com.
google.com. 3h9m51s TRONG NS ns3.google.com.
google.com. 3h9m51s TRONG NS ns1.google.com.
Lưu ý rằng kết quả sẽ hoàn toàn giống nhau nếu tôi sử dụng google.com.
bởi vì đào
là một máy khách DNS và do đó mong đợi tất cả các tên là tuyệt đối (do đó, dấu chấm kết thúc là tùy chọn).
Bạn cũng có thể thêm dấu chấm vào bất kỳ tên nào và do đó có các URL như https://www.google.com/
. Đối với mặt phẳng DNS, nó sẽ giống nhau. Đối với IP và TCP cũng vậy. Đối với TLS, nó phải giống như vậy, nếu không có lỗi trong quá trình triển khai. Ở cấp độ HTTP/HTTPS, một máy chủ phù hợp sẽ hoạt động nhưng lưu ý rằng bạn có thể gặp lỗi chỉ vì điều này (và do đó có một trang khác được hiển thị so với trang bình thường hoặc một lỗi).
Tương tự đối với địa chỉ email và mọi nơi khác mà bạn sử dụng tên.
Và nếu bạn đang đặt câu hỏi về mọi thứ, vâng, theo định nghĩa, chỉ có một gốc... ít nhất là trên lý thuyết (xem RFC 2826 "Nhận xét kỹ thuật của IAB về gốc DNS duy nhất"). Mọi mạng (từ một ngôi nhà cục bộ cho đến cả trạng thái đầy đủ) đều có thể xác định một gốc cục bộ và các giao thức khác xác định tên dường như là gốc, nhưng không thực sự (ví dụ: đạo đức
hoặc chút
). Nhưng tại thời điểm này, bạn bước vào đấu trường chính trị chứ không phải đấu trường kỹ thuật nữa.