1. DNS 메세지 헤더 영역 (필수, 12 바이트 고정)
2. DNS 메세지 헤더 항목
ㅇ 트랜잭션 식별자 ID : 16 비트
- 매 질의 마다 고유한 식별 ID 생성
. 바로 이 식별자로써 질의-응답이 연결됨
- (DNS Client가 생성하고, DNS 서버가 이에 대응 사용)
ㅇ 플래그 (16비트) : (QR, Op, AA, TC, RD, RA, 000, rCode)
- QR (Query/Response) : 1 비트
. DNS 메세지가 `DNS 질의(0)`, `DNS 응답(1)` 둘 간을 구분
- Op code (Operation code) : 4 비트
. 0 : `표준 질의` 또는 `표준 질의에 대한 응답`
. 1 : 역 질의 (Inverse Query)
. 2 : 서버의 상태 요구
. 4 : 통지
. 5 : 갱신
- AA (Authoritative Answer, 책임 플래그) : 1 비트
. DNS 응답 메세지에 만 사용됨
. 1 : 네임서버 권한이 인정된 서버일 때
- TC (Truncated) : 1 비트
. 512 바이트 초과 여부
. 0 : 짤리어지지 않음 (not truncated)
. 1 : 응답메세지가 512 바이트 이상이라서 512로 짤리어짐
.. 이 경우에 클라이언트는 TCP 포트를 통해 질의를 재전송하게 됨
- RD (Recursion Desired, 재귀 요구 플래그) : 1 비트
. 1 : 클라이언트가 재귀 질의를 원함
.. 질의메세지에서 지정되며, 응답메세지에서 이를 반복함
.. 재귀질의가 요청되지 않으면, 반복질의로 간주하게됨
- RA (Recursion Available, 재귀 유효 플래그) : 1 비트
. 네임서버가 재귀 질의가 이용 가능한지를 나타냄
- 예약 (Reserved) : 통상, 000 으로 셋팅
. Z : (Zero)
. AD : (Authentic Data, RFC 4035)
. CD : (Checking Diabled, RFC 4035)
- rCode (response code, 응답/오류 코드) : 4 비트
. 0 => No Error, 1 => Format Error(질의를 이해할 수 없음),
2 => ServFail(Server Failure), 3 => 도메인네임 존재 않음 등
※ 플래그 관련 값 ☞ IANA Domain Name System (DNS) Parameters 참조
ㅇ 질의 카운트 (Qusetion count)
- 질의의 수
- QDCOUNT/ZCOUNT (Query Count/Zone Count)
ㅇ 응답 카운트 (Answer count)
- 응답 RR(Resource Record)의 수
- ANCOUNT/PRCOUNT (Answer Count/Prerequisite Count)
ㅇ 네임서버 카운트 (NS count)
- 책임 RR(Resource Record)의 수
- NSCOUNT/UPCOUNT (Authority Record Count/Update Count)
ㅇ 추가정보 카운트 (Additional count)
- 추가 RR(Resource Record)의 수
- ARCOUNT/ADCOUNT (Additional Information Count)