본문 바로가기

WIZnet DNS/5.DNS 질의 Message

DNS 질의 메세지 설명

이번 시간에는 DNS Header 설명에 이어서 DNS 질의 Message에 대한 설명을 진행하겠습니다.

DNS Data(실제 전달될 Data)는 Data앞에 DNS Header가 붙게 됩니다. 이러한 DNS Header는 지난시간 DNS 통신에 대하여 ! 에 설명을 언급했습니다.

만약, DNS Header을 모르시거나, 혹은 DNS가 어떤 것인지 모르시는 분들은 아래의 링크를 참조해주셔서 Step by step으로 구독해주시기 바랍니다.

DNS시작하기 ! – https://jinheeahn.wordpress.com/2015/08/28/1-dns-시작하기

DNS 통신에 대하여! – https://jinheeahn.wordpress.com/2015/09/07/2-dns 통신에 대하여

DNS Header - https://jinheeahn.wordpress.com/2015/09/08/3-dns-message/

그리고 Wireshark DNS packet 잡기도 연재하였으니 아래의 링크를 확인해주세요.

Wireshark로 DNS pakcet 잡기 - https://jinheeahn.wordpress.com/2015/09/21/dns-wireshark pakcet 잡기


이제 DNS Question (질의 메세지)을 시작하겠습니다.

  • 질의 메세지 구성

–Query name string , Type, class로 구성

–특징 : 질의는 저장할 필요가 없으므로 TTL 항목을 사용하지 않음.

제목 없음8


  • 질의 명 스트링(Query name string) : 가변길이, 최대길이는 63byte

–질의의 대상(즉, DNS 갱신 대상)인 영역 이름

–연이은 다수의 라벨로 구성

–각 라벨은 길이를 나타내는 1 바이트 필드로 시작

–`0` 나타나면, 이름의 끝을 의미

ex)이름 스트링이 www.ktword.co.kr 이면,

제목 없음9


  • 질의 타입(Query type) : 16 비트 (Client가 요청하는 질의 유형)

–1 (A) : 32bit IPv4 Address

–2 (NS) : 네임서버 도메인 네임 지정

–5 (CNAME) : Canonical Name (정식이름), 원래 도메인 네임을 매핑

–6 (SOA) : Start of Authority, Zone의 속성 정보 지정

–13 (HINFO) : 호스트의 CPU와 OS 정보

–28 (AAAA) : 128bit IPv6 Address

–15 (MX) : Mail exchange. 메일서버의 도메인 네임 지정

–252 (AXFR) : 전체 DNS 영역 전달에 대한 요청 (질의에서만 사용됨)

–255 (ANY) : 모든 레코드에 대한 요청 (질의에서만 사용됨)

–질의 등급(Query class) : 16 비트


  • DNS가 사용하는 특정 프로토콜을 나타냄

–1 : IN (Internet) => 인터넷인 경우

–3 : CS => COAS network

–4 : HS => Hesoid server (MIT 개발)


위의 나열되어 있는 설명들과 같이 DNS 질의 메세지는 크게 Query name string , Type, class로 구성되어 있습니다.

자 이제, 질의 메세지가 어떻게 구성이 되어있는지 알았으니 DNS 질의 메세지가 진짜 저런 방식으로 구성이 되어있는지 확인이 필요하겠습니다. 실제 Packet을 확인해보아야 이해가 될테니 Wireshark tool로 Capture하여 확인해보면 될 것 같습니다.

지난 시간 Wireshark에 대하여 간략하게 소개를 드렸었습니다. (아래 링크 참조)

이번 시간에는 좀 더 정확한 Wireshark를 통해서 Packet 분석하는 방법을 알아보겠습니다.

Wireshark로 DNS pakcet 잡기 - https://jinheeahn.wordpress.com/2015/09/21/dns-wireshark pakcet 잡기

첨언을 드리자면, 이 Wireshark라는 Tool이 생각보다 굉장한 tool이라는 점을 말씀드립니다. 하지만 반대로 말하자면, 결국 네트워크 Software 엔지니어들은 Application을 제작 시 실제로는 Wireshark tool에 맞게 제작을 해야한다는 아쉬운(?)점이 있다는 점 명심하시기 바랍니다.

자, 아래의 그림과 같이 지난 게시글과 동일하게 Wireshark Pakcet을 잡아보았었습니다.

여기서 저는 "www.google.co.kr"에 대한 Packet을 Capture하여 분석하겠습니다.

제목 없음10

위 Packet을 좀 더 풀어서 해석해드리면, 아래의 그림처럼 설명이 됩니다.

Packet 순서에 대해 간단하게 설명드리면, Frame -> Ethernet -> Internet -> User Datagram Protocol -> Domain Name System 순으로 Data가 Capture되어 있는 것을 보실 수 있습니다.

이 순서는 네트워크의 기초인 OSI 7계층 Protocol을 기반으로 된 것인데요. OSI 7계층은 실제로 많은 네트워크의 표준 Protocol로 사용되고 있습니다. 하지만, 실제 네트워크를 이용해본 결과, 통신을 할때 불필요한 Protocol Layer들이 존재하였는데요. 이 불필요한 Protocol Layer를 없애고 다시금 새로운 Protocol Layer를 만들었는데 이를 TCP/IP 4계층 Protocol이라 합니다.

이 TCP/IP 4계층 Protocol은 아래그림과 같이 Application, Transport(host-to-host), IP(Internet), Network Access(Ethernet Physical) 로 나뉘게 됩니다.

제목_없음

그래서 Wireshark로 Capture한 Packet을 보면 TCP/IP 4계층에 맞게 Packet이 구성되어진 것을 확인 할 수 있습니다.

Frame + Ethernet = Network Access(Ethernet Physical)

Internet = IP Packet

User Datagram Protocol = Transport (TCP / UDP)

Domain Name System = Application DNS

이러한 순서대로 작성된 Layer들이 최종 하나의 Packet의 형태로 제작되어 각 다른 Peer(컴퓨터)에 Data로 전송되게 됩니다.

아래 그림을 참조하시면 그림으로 설명되어 있는데요. 한번 직접 Capture해서 비교해보세요.

각 Layer에 대한 자세한 설명은 Google에 검색해보시면 무궁무진한 자료가 많으니 확인해주세요.

제목 없음11

자, 이제 각 영역에 대해 간단한 설명을 드리겠습니다. (아래 그림 참조)

Ethernet  영역, IP 영역, Transport 영역에 대한 간단한 설명입니다.

제목 없음12

이 설명이 어떤 설명인지 잘 모르시겠다면, TCP/IP 4계층의 보다 정확한 설명과 이해가 필요합니다.

Packet이 어떠한 순서대로 제작되는지 공부가 필요합니다.

이런 TCP/IP 4계층의 순서대로 Ethernet -> IP -> UDP를 거쳐 Layer를 하나씩 처리하면 최종 Data인 Application(DNS)가 나오게 됩니다.

아래 그림은 단순 이해를 쉽게하기 위해서 각 Packet이 어떤 것인지 설명하는 것이구요.

밑의 Hex 값의 각 번호는 화살표와 매칭되어 있으니 비교하시면서 확인해주시면 되겠습니다.

제목 없음13

다음 시간은 DNS 응답 Packet에 대한 설명을 이어서 진행하겠습니다.