2017-03-23 29 views
1

RFC 4034RFC 6762은 서로 모순 된 것처럼 보입니다.RFC 간의 충돌을 해결하는 방법은 무엇입니까?

RFC 4034는 다음 상태 :

송신자 다음 도메인 이름 필드에 NOT 사용하는 DNS 이름 압축 NSEC의 RR를 전송해야합니다.

* 강조 광산

RFC 6762 개 다음 상태 :

모든 준수 멀티 캐스트 DNS 구현은 적어도 올바르게 제한 DNS NSEC 레코드 형식이 아래에 설명 생성하고 분석해야합니다

  • '다음 도메인 이름'필드는 레코드의 고유 이름을 포함합니다. 이름 압축과 함께 사용하면 '다음 도메인 이름'필드가 항상 메시지에서 정확히 2 바이트를 차지한다는 의미입니다.

이것은 충돌로 보입니다. 한 RFC는 이름 압축이 사용되어서는 안되며 또 다른 구현은 호환되는 구현물이 이름 압축으로 레코드를 생성하고 구문 분석 할 수 있어야한다고 제안합니다.

mDNS가 기존의 DNS 확인자와 올바르게 작동하도록 설계되었으므로 NSEC 레코드 생성 및 구문 분석 방법을 구현하는 프로그래머는 어떻게되어 있습니까?

이름 압축을 사용해야합니까?

답변

1

mDNS는 DNS에서 많이 차용되지만 동일한 프로토콜은 아닙니다. 그들 사이에는 수많은 중요한 차이점이 있으며, NSEC 레코드의 사용이 그 중 하나입니다. DNSSEC은 mDNS 컨텍스트에서 의미가 없으므로 (mDNS에는 위임이 없음) mDNS는 자체 용도로 NSEC 레코드 유형을 사용합니다. 어떤이 (RFC에서 6762 6.1 절)처럼 DNS NXDOMAIN 기능을 대체하는 것입니다 유형에 대해,

응답자가이
확인 배타적 인 소유권을 갖고있는 이름에 대한 쿼리를 수신 할 때마다하는 그 이름은
레코드가 없으며 응답자는 (아래 (a)에서 허용 된 경우를 제외하고)
이 DNS NSEC 레코드
[RFC4034]를 사용하여 해당 레코드의 존재를 주장한다고 응답해야합니다. 멀티 캐스트 DNS의 경우 NSEC 레코드는 일반적인 DNSSEC [RFC4033] 보안 속성에 사용되는 이 아니며 주어진 레코드가 존재하는지 또는 존재하지 않는지 표현하는 방법으로
이 주어진
이름으로 표현됩니다. 이름 압축을 사용하지 않아야합니다 NSEC 기록을 DNS

이유는 그들이 암호화 서명 할 수 정확히 하나의 잘 정의 된 바이너리 표현을해야한다는 것입니다. 압축을 허용한다는 것은 서명을 생성 할 때 어떤 표현이 사용되었는지 확신 할 수 없기 때문에 서명을 검증하려고 할 때 문제가되는 동일한 내용에 대해 여러 가지 다른 올바른 wireformat 표현이 있음을 의미합니다.

mDNS는 사인을하지 않으므로 제한 사항이 적용되지 않으므로 NSEC 레코드에서 이름 압축을 자유롭게 사용할 수 있습니다.

그렇습니다. 충돌이 있습니다. 그러나 동일한 프로토콜에 대한 두 RFC 간의 충돌은 아니며 두 가지 프로토콜 간 충돌입니다. RFC 6762의 19 절에는 DNS와 mDNS의 주요 차이점이 나열되어 있으며 몇 가지 중요한 내용이 있습니다. 두 프로토콜 모두에 똑같은 코드를 사용하는 것이 현실적이지는 않습니다.