한 글자의 호스트 이름이 유효합니까?


14

RFC-952 (가정에서 포인트 1의 마지막 문장) 단일 문자 호스트 이름을 금지하고 (나는 경험이 있었다 이상 칠년 전 일부 서비스는 단일 문자 호스트 이름을 가진 작업을 거부 할 경우 2002 년 여름) 등의 이름이 있었기 때문에 ( 표준을 준수하지는 않지만) 지난 몇 년 동안 여러 단일 문자 호스트 이름을 사용하고 있습니다. 단일 문자 호스트 이름이 이제 유효합니까? (그렇다면 적절한 검증 참조는 무엇입니까?)

편집 (답변에서 일부 정보를 통합하기 위해) : DNS의 다양한 측면이 1035 , 11232181을 포함한 여러 RFC에 정의되어있는 것 같습니다 . 에서 RFC-2181 (11) :

Note however, that the various applications that make use of DNS data
can have restrictions imposed on what particular values are
acceptable in their environment.  For example, that any binary label
can have an MX record does not imply that any binary name can be used
as the host part of an e-mail address.
[ ... ]
See also [RFC1123] section 6.1.3.5.

에서 RFC-1123 섹션 6.1.3.5 :

The DNS defines domain name syntax very generally -- a
string of labels each containing up to 63 8-bit octets,
separated by dots, and with a maximum total of 255
octets.  Particular applications of the DNS are
permitted to further constrain the syntax of the domain
names they use, although the DNS deployment has led to
some applications allowing more general names.  In
particular, Section 2.1 of this document liberalizes
slightly the syntax of a legal Internet host name that
was defined in RFC-952 [DNS:4].

에서 RFC-1123 2.1 :

The syntax of a legal Internet host name was specified in RFC-952
[DNS:4].  One aspect of host name syntax is hereby changed: the
restriction on the first character is relaxed to allow either a
letter or a digit.  Host software MUST support this more liberal
syntax.

마지막으로 RFC-952 에서 처음 참조한대로 :

1. A "name" (Net, Host, Gateway, or Domain name) is a text string up
to 24 characters drawn from the alphabet (A-Z), digits (0-9), minus
sign (-), and period (.).  Note that periods are only allowed when
they serve to delimit components of "domain style names". (See
RFC-921, "Domain Name System Implementation Schedule", for
background).  No blank or space characters are permitted as part of a
name. No distinction is made between upper and lower case.  The first
character must be an alpha character.  The last character must not be
a minus sign or period.
[ ... ]
Single character names or nicknames are not allowed.

RFC-952가 단일 문자 호스트 이름을 금지한다고 말한 것은이 체인을 따르는 것입니다.

답변:


2

'유효한'과 '작동하는'사이에는 차이가 있습니다. 호스트 이름이 단일 문자 인 경우 호스트 이름이 유효하지 않은 것으로 간주 될 수 있습니다 (이전 게시물은 견딜 수 없음). 그러나 많은 시스템에서 허용합니다. 하나의 주요 시스템 인 Microsoft의 AD / DNS 시스템은 단일 문자 이름을 허용하는 기존의 이유가 있습니다.

구식 NetBIOS 이름의 길이는 1-15 자입니다. 이 사양은 RFC952와 독립적으로 개발되었으며 lmhosts라는 다른 파일을 기반으로하므로 작동합니다. 문제는 Microsoft가 NetBEUI (실제로 NBF, NetBIOS 프레임 프로토콜)에서 TCP / IP (실제로 NBT)로 이동할 때 발생했으며 TCP / IP 네트워크를 통한 이름 지정 해상도를 허용해야했습니다. MS는 RFC952 호환 호스트의 필요성을 무시하고 WINS 서버에서 NetBIOS 스타일의 해상도를 유지하기로 결정했습니다.

그런 다음 Active Directory와 해당 DNS 종속성이 나타났습니다. 동적 DNS가 규칙이므로 클라이언트는 DNS 도메인에 ComputerName (처음 15 자 중 NetBIOS 이름 임)도 등록해야합니다. MS는 단일 문자 NetBIOS 이름을 DNS에 등록 할 수 있으므로 RFC952와 충돌합니다. 그들은 WINS 시절에 항상 어떻게 작동 했었는지 모방했기 때문에이를 허용하기 위해 시스템을 코딩하기로 결정했습니다.

BIND DNS는 단일 문자 호스트 이름도 허용합니다. 그러나 RFC2181은 애플리케이션이 더 이상 DNS가 아닌 자신의 데이터를 조사해야한다고 지적했다. 단일 문자 호스트 이름만으로도 사용할 수있는 많은 장치 및 소프트웨어와 RFC952를 준수하지 않는 몇몇 특이 치가 있습니다.


There is a difference between 'valid' and 'it works'. 궁극적으로, 나는 그것이 가장 합리적인 대답이라고 생각하지만, 생성 된 모든 토론에 대단히 감사합니다. 내가 결론을 내릴 결론은 한 문자 호스트 이름은 여전히 ​​기술적으로 유효하지 않지만이 시점에서 거의 보편적으로 작동한다는 것입니다. (유사하게 밑줄은 금지되어 있지만 대부분의 경우 작업을 수행하십시오.)
Isaac

11

루트 이름 서버는 모두 단일 문자 호스트 (a.root-servers.net)이며 DNS 사양은 특정 예외를 생성하지 않기 때문에 이것이 유효하다고 생각할 것입니다. 문제의 RFC는 DNS가 아닌 호스트 파일 형식을위한 것입니다. DNS는 이후 RFC에서 정의되었습니다 ( RFC 1035에서 시작). RFC 1123 (1989)은이를 명확하게 설명합니다.

 The syntax of a legal Internet host name was specified in RFC-952
 [DNS:4].  One aspect of host name syntax is hereby changed: the
 restriction on the first character is relaxed to allow either a
 letter or a digit.  Host software MUST support this more liberal
 syntax.

따라서 단일 문자 호스트 이름은 DNS 기반 시스템에서 유효하며 스팸이 발명되기 전부터 사용되었습니다. RFC를 준수하지 않고 조롱 할 수있는 시스템. DNS를 전혀 사용하지 않고 호스트 파일 만 사용하지 않는 한, 동정이 더 나은 선택입니다.


좋아, RFC-1123에서 읽었지만 RFC-952에서 읽은 사양은 숫자가 첫 번째 문자로 허용된다는 것을 제외하고는 RFC-952에서 읽은 사양이 적용됨을 의미한다고 해석했습니다. 단일 문자 이름 금지). 루트 서버에 관해서는 어느 시점에서 규칙에 대한 특별한 예외라고 들었습니다.
Isaac

2

호스트 이름이 RFC 작성에 대해 생각하기 전에 주변에 있었기 때문에 단일 문자 호스트 이름이 갑자기 "불법"이 된 이유를 알 수 없습니다. 그 특정 RFC가 언급되었을 때 나를 잃었습니다.

이 RFC는 공식 사양입니다

RFC는 표준이 아니기 때문입니다. 근처에도 안.

전술 한 내용에도 불구하고, 해당 RFC는 비교적 작은 그룹, 즉 국방부 (아마도 미국)에 적용하기 위해 만들어 졌다는 점에 유의해야합니다.


정의상 RFC는 표준이 아닙니다. "의견 요청"은 누구에게나 "표준"을 비명을 지르지 않습니다. 그들이 자신의 문서에서 그것을 가지고 빠져 있다는 것이 흥미 롭습니다.
Mark Henderson

1
en.wikipedia.org/wiki/Domain_name_system#Internet_standards 는 DNS 프로토콜을 "정의"하는 많은 RFC를 나열합니다. RFC-1123 (sysadmin1138에서 언급 한)은 여기에 나열되어 있으며 RFC-952를 참조합니다. RFC는 요청이지만 수락 될 때 정의가 된 것은 저의 경험이었습니다.
Isaac

@Farseeker, 나는 그것이 사실이라고 말하는 것이 아니라, 항상 사람들에게 놀랐습니다. 대부분 더 잘 알아야 할 사람들, RFC를 특정 주제에 대한 궁극적 인 권위자처럼 인용합니다. 어딘가에 RFC가 있다고 확신합니다. ;)
John Gardeniers

1
일부 RFC는 실제로 표준입니다. 예를 들어 RFC 1034와 1035는 함께 STD0013을 구성합니다. 그들이 "댓글 요청"이라고 불리는 이유는 역사적이며, 본질적으로 60 년대 후반에 저급의 대학원생들과 관련이있었습니다. RFC의 저자 1).
Alnitak

2
@John RFC 2026을 읽어보십시오. "표준 상태에 도달하는 사양에는 RFC 번호를 유지하면서 STD 시리즈의 번호가 할당됩니다." 나는 하루 종일 IETF 문서를 작성합니다.
Alnitak

1

DNS는 대부분의 사람들이 네트워크 나 인터넷에서 사용할 것이므로 현재 호스트 이름은 DNS 사양에 더 의존적이라고 생각합니다. 3 개의 RFC (1034- 개념, 1035- 구현 및 2181-DNS에 대한 설명)가 떠 오릅니다.

RFC 1034의 섹션 3 에서는 다음과 같이 말합니다.

도메인 네임 스페이스는 트리 구조입니다. 트리의 각 노드와 리프는 리소스 세트 (비어있을 수 있음)에 해당합니다. 도메인 시스템은 내부 노드와 잎의 사용을 구분하지 않으며이 메모는 "노드"라는 용어를 사용하여 둘 다를 나타냅니다.

각 노드에는 길이가 0-63 옥텟 인 레이블이 있습니다. 형제가 아닌 노드에 동일한 레이블을 사용할 수 있지만 형제 노드에는 동일한 레이블이 없을 수 있습니다. 하나의 레이블이 예약되어 있으며 이는 루트에 사용되는 널 (즉, 길이가 0) 레이블입니다.

그리고에서 제 11 RFC 2181의 우리는 주소의 각 노드 이름에 대한 설명이있다 :

DNS 자체는
리소스 레코드를 식별하는 데 사용할 수있는 특정 레이블에 하나의 제한 사항 만 적용 합니다. 한 가지 제한
은 레이블의 길이와 이름과 관련이 있습니다. 하나의 레이블 길이는 1에서 63 옥텟으로 제한됩니다. 전체 도메인 이름은 255 옥텟 (구분 기호 포함)으로 제한됩니다

따라서 DNS 사양에 따라 a.domain.tld를 가질 수 있습니다.


RFC-2181의 11 절에서 다음 단락에서 : Note however, that the various applications that make use of DNS data can have restrictions imposed on what particular values are acceptable in their environment. For example, that any binary label can have an MX record does not imply that any binary name can be used as the host part of an e-mail address. 기본적으로, a.domain.tld이 유효한 호스트하지 않는 DNS에서 유효하기 때문이다. 11 장의 끝 부분은 sysadmin1138의 답변에서 논의 된 것처럼 2.1 절과 RFC-952를 인용하는 RFC-1123의 6.1.3.5 절을 참조합니다.
Isaac

섹션 6.1.3.5의 끝 부분에 인용 된 내용은 952에 정의 된 명명 규칙에 대한 제약이 적다는 것입니다. 또한 952는 DOD 호스트 테이블을 정의하며 이것이 DNS 사양보다 더 관련성이 있다고 확신하지는 않습니다.
코어 덤프

6.1.3.5의 끝에서 언급 된 제약 조건의 자유화는 첫 번째 문자를 숫자로만 허용하는 것만을 의미한다고 생각합니다. 이는 동일한 RFC의 2.1 절 (6.1 절)에서 언급 한 유일한 수정입니다. 3.5 참조). RFC-952의 정의는 2.1 절에서 유효한 호스트 이름의 정의로 참조됩니다.
Isaac

또한 이전 DARPA에서 도메인 이름으로의 마이그레이션을 처리하는 RFC 920 및 921을 확인하십시오.
코어 덤프

1

결정한 바와 같이, RFC 1123은이 길이 문제에 대해 완전히 명확하지 않습니다.

섹션 2.1은 다음과 같이 말합니다.

호스트 소프트웨어는 최대 63 자의 호스트 이름을 처리해야하며 최대 255 자의 호스트 이름을 처리해야합니다.

이 텍스트는 RFC 952의 텍스트를 효과적으로 대체 하기 때문에 255 자까지의 길이가 합법적 임을 암시해야 합니다 .

불행히도 1989 년에 인터넷 초안은 그들이 지금 얻는 엄청나게 엄밀한 검토를 얻지 못했기 때문에 모호함은 단순히 발견되지 않았습니다.


1
그러나 2.1은 또한 The syntax of a legal Internet host name was specified in RFC-952 [DNS:4]. One aspect of host name syntax is hereby changed: the restriction on the first character is relaxed to allow either a letter or a digit. 인용문이 RFC-952의 텍스트를 완전히 무시하지 않는다는 의미로 이것을 해석하는 것이 합리적이지 않습니까?
Isaac

그것은 말하지만, 분명히 잘못되었습니다. RFC 1123 은 또한 호스트 이름의 허용 길이를 명시 적으로 변경합니다.
Alnitak
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.