2016-08-09 5 views
3

내가 Wireshark는 함께 포트 5353 (mDNS를)를 모니터링하고 다음 DNS 질문 건너 온되었다왜이 DNS q에 대한 QNAME이 없습니까? NULL 문자로 끝나야합니까?

enter image description here

RFC 1035 QNAME의 섹션 4.1.2에 따르면입니다

도메인 이름 표시 레이블의 시퀀스로서, 각 레이블은 길이 옥텟과 그 수의 옥텟으로 구성됩니다. 도메인 이름은 루트의 널 레이블에 대해 길이가 0 인 옥텟으로 끝납니다 ...

위의 캡처에서 over-the-wire를 보는 것과 모순되는 것 같습니다. 마지막 레이블은 00 대신 c0 12으로 끝납니다. 왜 그런가요? RFC에 문서화되지 않은 이유는 무엇입니까?

+0

관련 가능성 : I는 WireShark로의 DNS 해부학자에서 [이 (https://github.com/wireshark/wireshark/blob/53de2c23783788d92dc17d3dccfdc8b65ab0bf74/epan/dissectors/packet-dns.c#L1261) 발견 소스 코드. –

답변

2

분명히 레이블 시퀀스가 ​​c0 12으로 끝나면 이는 간접 포인터를 나타냅니다. 이것은 "DNS 쿼리에서이 오프셋으로 이동하여 거기에서 계속 읽기"라고 말하는 것과 대략 같습니다.

처음 두 비트는 상수 (c0)이고 나머지 14 비트는 쿼리 시작부터의 오프셋입니다. 내 질문에, 예를 들어, c0 12 QNAME의 다음 부분은 쿼리에 47 바이트에서 와야한다는 것을 나타냅니다.

05 6c 6f 63 61 6c 00 .local. 
+0

옙, 4.1.4에 문서화되어 있습니다. –

+0

@DusanBajic 나는 그 부분에서 그것을 다루지 않고 문서에서 _ 나중에 _ 그것을 _ 설명하는 것이 반 직관적이라고 생각합니다. –

+1

그 대답은 4.1.2에있는 것 같습니다 :'섹션 에 QDCOUNT (대개 1) 개의 항목이 포함되어 있습니다 ... '- 같은 메시지에서 둘 이상의 쿼리가있는 경우가 매우 드물었습니다. Btw, 나는 대답을 몰랐기 때문에 흥미롭고 흥미로운 질문을 찾았습니다. 나는 몇 초 늦었습니다 :) 아직 뭔가 새로운 것을 배웠습니다. –