호스트 이름이 숫자로 시작하는 것이 유효합니까?


45

호스트 이름이 숫자로 시작하는 것이 유효합니까? 예 :8server

RFC 1123을 읽으면 이것이 유효한 호스트 이름 인 것으로 보입니다. 그러나 접미사가있을 때 호스트 이름이 숫자로만 시작할 수 있는지 확실하지 않습니다.8server.com

이 질문의 근원은 InternetDomainName.isValid("8server");Google Guava 라이브러리 ( Javadoc )에서 입력을 거부한다는 것입니다. 또한 Guava Discuss 그룹 에 대한 특정 질문을 게시했습니다 .


2
예를 들어 일종의 증거로 존재합니다. 7dayshop.com
Holloway

3
숫자 전용 호스트 이름은 어떻습니까? 88888888.cn
小 太郎

7
4chan.com숫자로 시작하는 유효한 (잘 알려진) 호스트 이름입니다.
IQAndreas

3
9gag.com을 어떻게 잊을 수 있습니까? : D
ADTC

8
@IQAndreas, 4chan.org는 그것을 무효 로 만드는 충분한 이유 입니다. (그냥 익명의 농담, 나를 다치게하지 않습니다.)
폴 Ruane에게

답변:


33

RFC (1123 )는 DNS로 대체 된 호스트 명 서버 프로토콜 ( RFC 953에 설명 됨) 의 레거시를 지정하는 RFC 952의 제약을 완화시킨다 . 따라서이 RFC마다 완전한 숫자 호스트 이름이 유효합니다.

RFC 1123 자체는 IP와 호스트 이름 구문 분석의 결과에 대해 설명합니다.

식별 구분 기호없이 점으로 구분 된 10 진수를 입력 할 수있는 경우 호스트 도메인 이름 의 세그먼트 는 이제 숫자로 시작하여 합법적으로 전체 숫자가 될 수 있으므로 전체 구문 검사를 수행해야합니다 (6.1 절 참조). 2.4). 그러나 유효한 최상위 호스트 이름은 최소한 10 진수 형식의 #. #. #. #을 가질 수 없습니다. 최소한 최상위 수준의 구성 요소 레이블이 알파벳이기 때문입니다.

그러나 구현 문제로 인해 유효한 호스트 이름을 선택하기 위해 RFC 1178 지침 에 제공되었습니다 . 이러한 많은 구현은 숫자 호스트 이름을 잘 인식하지 못하고 위치에 관계없이 하나 이상의 숫자가 아닌 문자를 포함 할 때까지 IP 호스트처럼 구문 분석하려고 시도합니다.

또한 구현이 RFC 952의 다른 원래 제약 조건을 항상 준수하는 것은 아니며 호스트 이름이 빼기 부호 나 마침표로 끝나는 것을 허용합니다.

DNS는 호스트 이름에 대한 이러한 원래 사양을 유지하고 밑줄 ( RFC 2782 )에 대한 지원을 추가했습니다 .

업데이트 의견에서 요청한대로 문장을 명확하게 설명하십시오. 그러나 유효한 호스트 이름은 점으로 구분 된 십진수 형식 #. #. #. #을 가질 수 없습니다. 최소한 최상위 레벨 구성 요소 레이블은 알파벳순이기 때문입니다 . 이는 최상위 도메인 이름이 알파벳 이어야 하므로 정규화 된 호스트 이름을 IPv4 주소와 혼동 할 수 없습니다. 이 아이디어는 DNS에 대해 RFC 3696 에 의해 명확 해지고 모든 숫자아닌 것으로 변경되었습니다 . 약간의 차이가 있습니다.


7
1980 년대로 거슬러 올라간 이름의 숫자를 처리 할 수 ​​없었던 구현에 유의하십시오. RFC 1178은 1990 년에 출판되었습니다. 현재 처리 할 수없는 것은 단순히 버그입니다.
Michael Hampton

@MichaelHampton 아직 이 RFC를 따르지 않는 구현의 수에 놀랄 것 입니다. 리눅스 호스트 파일 처리에서 시작.
Xavier Lucas

11
하하, 아니에요 RFC를 사용하여 일부 개발자를 이길 이유 가 없다는 데는 하루가 걸리지 않습니다 .
Michael Hampton

2
@Michael Hampton : 때때로 개발자들에게서 본 똥을 믿지 못할 것입니다. 몇 주 전에 사용자가 카메라의 호스트 이름을 입력 할 수 있도록 ip-camera에 네트워크 구성 웹 페이지를 만든 사람이있었습니다. 그는 자유 형식 사용자 입력에 대해 어떠한 유효성 검사도하지 않았습니다. 베타 테스트 사용자가 "Room 1.10"에 들어가면 카메라는이를 DHCP 클라이언트 식별자로 행복하게 보냅니다. Microsoft DHCP와 DNS 서버가 마음에 들지 않는다는 것을 확신 할 수 있습니다. 그 전에 프로덕션 빌드에 들어간 좋은 점이 있습니다. 나는 때때로 고객에게 어떤 일이 생길지에 대해 생각 만 떨칠 수있다 ...
Tonny

13

원래 호스트 이름은 숫자 나 밑줄 ( RFC 952 )로 시작할 수 없었지만 언급 한대로 새로운 사양 RFC 1123은 허용합니다.

isValid () 호출과 관련하여이 경우 전체 도메인 이름이 매개 변수로 전달되어야합니다. InternetDomainName.isValid("8server.com");


전체 도메인 이름을 isValid 메소드로 전달해야합니까? 결국 InternetDomainName.isValid("server");true를 반환합니다.
Mark

@ Mark OK, 이에 따라 답변을 업데이트했습니다
Céline Aussourd

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.