2012-07-31 2 views
1

제 질문은이 프로세스에서 유래되었습니다. 응용 프로그램에 호스트 또는 주소 필드가 있고 해당 주소의 일부 서비스에 연결하려고한다고 가정합니다. 많은 응용 프로그램은 해당 주소를보고 IP 주소 또는 호스트 이름인지 추측합니다. 이 응용 프로그램은 inet_pton()과 같은 함수를 사용하여이 검사를 수행 할 수 있습니다. 주소가 IP 주소처럼 보이면 응용 프로그램은 DNS 조회를 수행하지 않고 해당 IP 주소를 직접 사용합니다.DNS 이름이 IP 주소처럼 보이게 할 수 있습니까?

자, 저는 이것이 좋은 아이디어라고 제안하지는 않지만 어떤 사람이 1.2.3.4처럼 보이는 DNS 이름을 정의한 경우 어떻게할까요? IP 주소처럼 보이므로 위의 응용 프로그램은 DNS 주소가 아닌 ip 주소로 사용합니다.

관찰 결과, 대부분의 응용 프로그램은 첫 번째 단락에서 설명한대로 동작하는 것으로 보입니다. 어느 쪽이 나에게 몇 가지 이유로 유익 해 보입니다. IP 주소처럼 보이는 DNS 이름을 사용해서는 안된다는 내용의 문서가 있습니까? 또는 어떤 사람이 IP 주소처럼 보이도록 DNS 이름을 정의 했더라도 그것을 그대로 존중하지 않는 것이 좋습니다.

답변

6

다른 사람들은 이미 대답했지만 추가하고 통합 할 것입니다.

관련 RFC는 :

원래 숫자로 시작할 수없는 호스트 이름, 명확하게하기 호스트 이름과 IP 주소 사이. 수정 버전에서는 변경되었으며 호스트 이름은 숫자로 시작할 수 있습니다. 따라서 127.0.0.1.com과 같은 도메인 이름은 합법적입니다. TLD는 숫자로 시작할 수 없습니다 (TLD는 최상위 도메인을 나타내며 .com, .net, .org, 국가 코드 및 기타 회원입니다). 이름은 적어도 하나의 문자를 포함해야하며 영숫자로 시작하고 끝나야하며 자유롭게 최대 64 자까지 입력 할 수 있습니다 (표준은 더 긴 호스트 이름을 지원하지만 시스템은 64 자보다 긴 이름을 지원할 필요가 없습니다).

또한 최종 RFC에서 설명한 것처럼 일부 SLD 및 TLD는 예약되어 있으므로 등록 할 수 없습니다.

3

보는 관련 규격은 Section 2.1 of RFC 1123입니다 : 점선 - 진수 후 전체 구문 검사가 이루어져야 같은 식별 구분없이 입력 할 경우,

때문에 호스트 도메인 이름의 세그먼트 는 이제 숫자로 시작하도록 허용되며 합법적으로 전체 숫자 일 수 있습니다 (6.1.2.4 절 참조). 그러나 유효한 호스트 이름은 점선 십진 양식 #. #. #. #을 가질 수 없습니다. 적어도 최상위 레벨 구성 요소 레이블은 영. 자이 G로 어 @ 것이기 때.입니다.

관련 문제