1. DNS Query Message
DNS는 UDP 53번 포트를 사용합니다.
Google.com에 접속했을 때 위와같은 DNS query와 DNS response가 전송되는 것을 볼 수 있습니다.
먼저 DNS Query Message를 확인해보면 아래와 같은 것을 볼 수 있습니다.
위의 붉게 표시한 부분이 DNS Header에 해당하는 부분입니다.
DNS message Header는 기본적으로 [트랜잭션 ID, flag, Question count, Answer count, Name server count, Additional Recode count]를 갖고 있습니다.
현재 해당 Packet의 DNS Message 는 아래와 같습니다.
Transaction ID = 0b 8e |
Flags = 0100 |
Questions = 1 |
Answer = 0 |
Authority RRs = 0 |
Additional RRS = 0 |
Queries = www.google.com |
2. Query Flag
트랜잭션 ID는 매 Query에 대한 식별 ID이며, Flags 0x0100은 아래와 같이 맵핑됩니다.
QR |
Opcode |
AA |
TC |
RD |
RA |
000 |
rCode |
0 |
0000 |
0 |
0 |
1 |
0 |
000 |
0000 |
- OR 0 : 이 메시지가 Query 라는 의미
- Opcode 0000 : 표준 질의 또는 표준 질의에 대한 응답
- AA 0 : 네임서버 권한이 인정 X
- TC 0 : 응답메시지가 512 바이트 이하
- RD 1 : 응답 형태가 Recursive인지 Iterative인지 정해주는 것으로 여기서 1은 Recursive 응답을 요구한다는 의미
- RA 0 : 네임서버가 Recursive 질의가 가능한지 나타내며
- rCode : 0 = No Error (1 = Format Error, 2 = ServFail, 3 = DNS존재 X)
3. DNS Response Message
마찬가지로 해당 패킷의 Response Message는 아래와 같은 내용을 갖고있습니다.
Transaction ID = 0b 8e |
Flags = 81 80 |
Questions = 1 |
Answer = 6 |
Authority RRs = 4 |
Additional RRS = 8 |
Queries = www.google.com |
|
Answers = www.google.com addr 108.177.97.104 www.google.com addr 108.177.97.105 www.google.com addr 108.177.97.147 www.google.com addr 108.177.97.99 www.google.com addr 108.177.97.103 www.google.com addr 108.177.97.106 |
|
Authoritative Nameservers = google.com ns ns4.Google.com google.com ns ns1.Google.com google.com ns ns2.Google.com google.com ns ns3.Google.com |
|
Additional records = ns1.google.com addr 216.239.32.10 ns2.google.com addr 216.239.34.10 ns3.google.com addr 216.239.36.10 ns4.google.com addr 216.239.38.10 ns1.google.com addr 2001:4860:4802:32::a ns2.google.com addr 2001:4860:4802:34::a ns3.google.com addr 2001:4860:4802:36::a ns4.google.com addr 2001:4860:4802:38::a |
4. Response Flag
이 Packet의 Transaction ID는 Query의 Transaction ID와 동일하며, Flags는 아래와 같이 매핑됩니다.
QR |
Opcode |
AA |
TC |
RD |
RA |
000 |
rCode |
1 |
0000 |
0 |
0 |
1 |
1 |
000 |
0000 |
- OR 1 : 이 메시지가 response 라는 의미
- Opcode 0000 : 표준 질의 또는 표준 질의에 대한 응답
- AA 0 : 네임서버 권한이 인정 X
- TC 0 : 응답메시지가 512 바이트 이하
- RD 1 : 응답 형태가 Recursive인지 Iterative인지 정해주는 것으로 여기서 1은 Recursive 응답을 요구한다는 의미
- RA 1 : 네임서버가 Recursive 질의가 가능한지 나타내며
- rCode : 0 = No Error (1 = Format Error, 2 = ServFail, 3 = DNS존재 X)
이 응답 메시지로부터 client는 www.google.com이라는 사이트의 address와 Google.com의 네임서버를 얻어올 수 있습니다.
'이론 > 네트워크 이론' 카테고리의 다른 글
[네트워크 이론] 2. 회선교환과 패킷교환 (3) | 2019.09.30 |
---|---|
[네트워크 이론] 1. 네트워크의 종류 (0) | 2019.09.27 |
[와이어샤크 HTTP Handshake] WireShark HTTP Packet Capture (3) | 2019.07.24 |
[네트워크 패킷] Python으로 WOL패킷 송신하기(2/2) (3) | 2019.05.14 |
[네트워크 패킷] Python으로 WOL패킷 송신하기(1/2) (0) | 2019.05.14 |