Có hợp lệ cho một tên máy chủ để bắt đầu bằng một chữ số không?


45

Có hợp lệ cho một tên máy chủ để bắt đầu bằng một chữ số không? ví dụ8server

Từ việc đọc RFC 1123 , có vẻ như đây là tên máy chủ hợp lệ. Tuy nhiên, tôi không rõ liệu tên máy chủ chỉ có thể bắt đầu bằng một chữ số khi có hậu tố, vd8server.com

Nguồn gốc của câu hỏi này là InternetDomainName.isValid("8server");trong thư viện Google Guava ( Javadoc ) từ chối đầu vào. Tôi cũng đã đăng một câu hỏi cụ thể trên nhóm Thảo luận ổi .


2
Như một ví dụ chứng minh, chúng tồn tại: 7dayshop.com
Holloway

3
Làm thế nào về một tên máy chủ chỉ có chữ số? 88888888.cn

7
4chan.comlà tên máy chủ hợp lệ (và được biết đến) bắt đầu bằng một số.
IQAndreas

3
Làm thế nào bạn có thể quên 9gag.com ? : D
ADTC

8
@IQAndreas, 4chan.org là một lý do đủ tốt để làm cho nó không hợp lệ . (Đùa thôi nặc danh, đừng làm tổn thương tôi.)
Paul Ruane

Câu trả lời:


33

RFC 1123 nới lỏng một ràng buộc của RFC 952, trong đó chỉ định di sản của Giao thức máy chủ tên máy chủ (được mô tả trong RFC 953 ) được thay thế bằng DNS. Vì vậy, một tên máy chủ đầy đủ số sẽ có hiệu lực theo các RFC này.

Bản thân RFC 1123 thảo luận về hậu quả khi nói đến IP so với phân tích tên máy chủ:

Nếu một số thập phân rải rác có thể được nhập mà không có các dấu phân cách xác định như vậy, thì phải thực hiện kiểm tra cú pháp đầy đủ, bởi vì một phân đoạn của một tên miền máy chủ hiện được phép bắt đầu bằng một chữ số và có thể hoàn toàn bằng số (xem Phần 6.1. 2.4). Tuy nhiên, tên máy chủ hợp lệ không bao giờ có thể có dạng thập phân rải rác #. #. #. #, Vì ít nhất nhãn thành phần cấp cao nhất sẽ được viết bằng chữ cái.

Tuy nhiên, nó đã được cung cấp trong hướng dẫn RFC 1178 để chọn tên máy chủ hợp lệ vì các vấn đề triển khai. Rất nhiều trong số các triển khai này không nhận ra tên máy chủ số tốt và cố gắng phân tích chúng như thể chúng là IP cho đến khi chúng chứa ít nhất một ký tự không phải là số bất kể vị trí.

Ngoài ra, bạn sẽ thấy rằng việc triển khai không phải lúc nào cũng tôn trọng các ràng buộc ban đầu khác của RFC 952, cho phép ví dụ tên máy chủ kết thúc bằng dấu trừ hoặc dấu chấm.

DNS bảo tồn các thông số kỹ thuật ban đầu này cho tên máy chủ và hỗ trợ thêm cho dấu gạch dưới ( RFC 2782 ).

Cập nhật Theo yêu cầu trong các nhận xét, làm rõ cho câu: Tuy nhiên, tên máy chủ hợp lệ không bao giờ có dạng thập phân rải rác #. #. #. #, Vì ít nhất nhãn thành phần cấp cao nhất sẽ được viết bằng chữ cái . Điều này có nghĩa là tên miền cấp cao nhất phải là chữ cái , do đó tên máy chủ đủ điều kiện không bao giờ có thể bị nhầm lẫn với địa chỉ IPv4. Ý tưởng này đã được RFC 3696 làm rõ cho DNS và thay đổi thành không phải là tất cả số . Lưu ý sự khác biệt nhỏ.


7
Hãy nhớ rằng việc triển khai không thể xử lý các chữ số trong tên có từ những năm 1980; RFC 1178 được xuất bản vào năm 1990. Bất cứ điều gì không thể xử lý nó bây giờ chỉ đơn giản là lỗi.
Michael Hampton

@MichaelHampton Bạn sẽ ngạc nhiên về số lượng triển khai vẫn không tôn vinh các RFC này. Bắt đầu từ việc xử lý tập tin linux của bạn.
Xavier Lucas

11
Haha, không tôi sẽ không Gần một ngày trôi qua mà tôi không có lý do để đánh bại một số nhà phát triển qua đầu với một RFC.
Michael Hampton

2
@Michael Hampton: Đôi khi bạn sẽ không tin vào thứ rác rưởi mà tôi thấy từ các nhà phát triển. Cách đây vài tuần, tôi có một người đã tạo một trang web cấu hình mạng bằng camera ip để người dùng có thể nhập tên máy chủ cho máy ảnh. Anh ấy đã không thực hiện bất kỳ xác nhận nào trên đầu vào người dùng định dạng miễn phí. Người dùng thử nghiệm Beta đã nhập "Phòng 1.10" và máy ảnh vui vẻ gửi nó dưới dạng định danh máy khách DHCP. Tôi có thể đảm bảo với bạn các máy chủ Microsoft DHCP và DNS không như vậy. Điều tốt là tôi nhận thấy trước đó đã đi vào xây dựng sản xuất. Tôi chỉ có thể rùng mình khi nghĩ về những gì đôi khi xảy ra với khách hàng ...
Tonny

13

Ban đầu tên máy chủ không thể bắt đầu bằng một chữ số hoặc dấu gạch dưới ( RFC 952 ) nhưng đặc tả mới RFC 1123, như bạn đã đề cập, cho phép nó.

Liên quan đến lệnh gọi isValid (), trong trường hợp này, tên miền đầy đủ phải được truyền trong tham số: InternetDomainName.isValid("8server.com");


Một tên miền đầy đủ có thực sự cần phải được chuyển sang phương thức isValid không? Sau khi tất cả InternetDomainName.isValid("server");trở về đúng.
Đánh dấu

@Mark OK, tôi đã cập nhật câu trả lời phù hợp
Céline Aussourd

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.