기록용 블로그

DNS 메시지 포맷 본문

Major/Network

DNS 메시지 포맷

sunki-lee 2011. 6. 2. 17:52

DNS Query 메시지의 각 필드 값을 분석


DNS Query 메시지의 포맷과 Wireshark 캡쳐화면에서 나온 정보를 대응시키면 다음과 같습니다.

Identifier : 0xe82a

Flag : 0x0100

Num of Questions : 1

Num of Answers : 0

Num of Authorities : 0

Num of Additional Records : 0

Questions

Answers

Authorities

Additional Records

표에서 1~3행까지는 DNS헤더에 해당하는 부분으로 메시지의 성격에 대한 정보,

4행은 수신 측 서버에서 요청한 정보,

5행은 세션에서 요청한 정보를 제공하는 RRs,

6행은 섹션에서 요청한 정보에 대한 권위자를 지정하는 RRs,

7행은 섹션에 대한 응답으로 추가 정보가 들어있는 RRs를 나타냅니다.

 

Flag 16비트 부분은 다음과 같이 구성됩니다.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

QR

OpCode

AA

TC

RD

RA

미사용 필드

rCode

QR(Query/Response) : 메시지가 쿼리인지 표시. (0:쿼리 1:응답)

OpCode : 동작 종류를 나타냄.(0:표준쿼리 1:역쿼리 2:서버상태요구)

AA(Answer Authenticated) : 도메인이나 존의 권위지 서버에 의해 응답 메시지가 생성되었 음을 표시.

TC(Truncated) : 데이터 량이 현재 전송 메커니즘의 최대 크기를 초과하여 잘렸음을 표시. 대부분의 dns 구현에서 이 비트는 udp 데이터그램보다는 tcp 접속으로 데 이터를 전송해야 함을 나타내는 신호이다

RD(Recursion Desired): 쿼리일 경우 수신 서버가 메시지를 순환 쿼리로 처리해야 함을 표 시하며 응답일 경우에는 이 메시지가 순환 쿼리에 대한 응답임을 표시한다.

RA(Recursion Available) : 서버가 순환 쿼리를 처리하도록 설정되었음을 표시.

Rcode : 응답 메시지의 성격, 오류 발생 및 오류 종류를 표시한다.(0:오류없음1:포맷오류2:서버실패3:이름오류4:지원안함5:거부6-15:사용되지 않음)

Queries/Answers/Authoritative nameservers/Additional records 분석



 

쿼리부분의 포맷은 다음과 같습니다.

Query Name

Query Type

Query Class

 


패킷에 들어 있는 내용을 쿼리부분 포맷에 대입하면 다음과 같이 나타내어 집니다.

03

w(77)

w(77)

w(77)

04

i(69)

e(65)

t(74)

f(66)

03

o(6f)

r(72)

g(67)

00

Q Type(00 01)

Q Class(00 01)

 

 

 

 


DNS 메시지의 Answers/Authoritative nameservers/Additional records 섹션은 모두 아래와 같은 포맷으로 나타납니다.

 

 

Name

Type

Class

TTL

Resource length

리소스-

-레코드 데이터

 

위 포맷에 Answer 부분의 데이터를 대입해보면 아래와 같습니다.


 

위의 쿼리 부분에서 이어집니다.

03

w(77)

w(77)

w(77)

04

i(69)

e(65)

t(74)

f(66)

03

o(6f)

r(72)

g(67)

00

Q Type(00 01)

Q Class(00 01)

Name(C0 0C)

Type(00 01)

Class(00 01)

TTL(00 00 07 08)

Length(00 04)

리소스 레코드 데이터(40 aa

62 1e)

 

 

Name(C0 0C) : 이름정보를 직접 표시하지 않고 쿼리부분에서 쓰인 주소 값을 이용하기 위해 compression을 합니다. 0C가 위치를 나타내는 포인터가 됩니다.

Type(00 01) : 포함된 RR의 타입을 나타냅니다. A타입

Class(00 01) : RR클래스 코드를 나타냅니다. IN 클래스

TTL(00 00 07 08) : 캐시 제한시간. 십진수로 변경해보면 1800초 임을 알 수 있습니다.

Length(00 04) : 이어서 나올 리소스 레코드 데이터 길이입니다.

리소스 레코드 데이터(40 aa 62 1e) : ip 주소값 64.170.98.30 이 들어가 있습니다.

'Major > Network' 카테고리의 다른 글

powershell에서 IP 바꾸기  (0) 2012.06.30
패킷분석(DNS, IP 등) 스크랩  (0) 2011.06.02
Ipconfig  (0) 2011.06.02
주요 포트 정리  (0) 2011.03.26
네트워크 클래스의 구분  (0) 2011.03.26
Comments