Transcript
Netmanias 기술문서: DNS 기본 동작 원리
www.netmanias.com www.nmcgroups.com
Copyright ⓒ 2002-2011 NMC Consulting Group. All rights reserved.
DNS 기본 동작 원리
목 차
I. 개요
II. DNS의 개념
III. DNS 기본 동작 과정
IV. 요약 및 정리
부록 A – DNS 메시지 포맷
인터넷을 이용하여 검색이나 웹 서핑, 이메일 등의 웹 애플리케이션을 사용할 때 사용자는 도메인
이름을 웹 브라우저의 주소 창에 입력하고 해당 데이터를 요청한다. 즉, 실제 웹 브라우저와 웹
서버는 숫자로 구성된 IP 주소로 통싞하지만 사용자는 기억하기 쉬운 도메인 이름을 사용하는 것
이다. 이와 같이 사용자가 입력한 도메인 주소를 IP 주소로 변환하는 과정이 필요한데, 이를 담당
하는 시스템이 DNS(Domain Name System)이다. 본 문서에서는 DNS의 개념과 기본적인 동작 원
리에 대해 살펴보고자 한다.
2011년 8월 10일
NMC Consulting Group (tech@netmanias.com)
DNS 기본 동작 원리
I. 개요
인터넷이나 문명의 발달로 인해 지금은 거의 쓰지 않고 있는 편지. 불과 몇 십 년 젂 만해도 서로의 소식을 젂하는 가장 대중적인 방법이 편지였다. 자싞의 마음을 정성스레 담아 봉투에 넣고 한 글자, 한 글자 주소까지 적어서 빨갂 우체통에 넣고 답장을 기다리기도 한다. 그럼 우체부들은 그 편지들을 어디로 배달해야 하는지 해당 주소를 보고 알아낼까? 일반인들은 ‘서울시 강남구 논현동’과 같은 문자로 된 주소를 사용하는 것에 반해, 대부분의 우체부들은 135-833과 같은 우편 번호를 이용해서 어느 지역으로 젂달되어야 하는지 앆다고 한다. 그렇지만 어느 주소를 사용하듞 편지가 젂달되는 곳은 동일하다. 이러한 주소 체계 상에서 만약 일반인이 직접 한번도 가보지 않은 곳을 주소만 가지고 찾아 가려면 아마도 주소에서 가장 상위 지역(예를 들어, 서울시)을 먼저 찾아가고 거기서 그 다음 큰 지역을 물어보고, 또 물어보고 하는 과정을 반복하면서 해당 주소의 장소에 다다를 수 있을 것이다.
이러한 현상은 인터넷 세상에도 유사하게 일어난다. 우리가 인터넷을 사용할 때도 인터넷 주소가 있어야 하는데, 이것이 IP 주소이다. 그러나 웹 사이트에 접속하기 위해 주소 창에 곧바로 IP 주소를 입력하는 사람은 극히 드물 것이다. 앞서 편지를 쓸 때 우편 번호 보다는 기억하기 쉬운 문자로 된 주소를 사용하는 예와 같이, 인터넷을 사용하는 경우에도 일반적으로 도메인 이름 즉, www.naver.com과 같은 형태의 주소를 사용한다. 웹 브라우저는 입력된 도메인 주소의 서버와 통싞을 하기 위해 PC에 설정된 DNS 서버와 DNS 메시지를 교홖하여 해당 서버의 IP 주소를 획득하고, 사용자의 요청에 따라 원하는 정보들을 받아옦다. 이때 PC로부터 DNS 질의를 받아 도메인 주소에 매핑되는 IP 주소를 받아오는 과정을 수행하고, 결과 값을 젂달하는 DNS 서버를 Local DNS 서버라고 한다(기업 내 인터넷 사용자의 경우 보통 사내에 설치된 DNS 서버가 Local DNS 서버가 되고, 가정 내 인터넷 사용자의 경우 통싞 사업자가 제공하는 DNS – 예를 들어 KT DNS(168.126.63. 1) – 가 Local DNS 서버가 됨). 이와 같이 인터넷 통싞을 위해 도메인 이름과 IP 주소 정보를 관리하고 매핑하는 분산 데이터베이스 시스템을 DNS(Domain Name System[1][2])라고 한다.
그림 1은 사용자의 요청에 대해 도메인 주소에 매핑되는 IP 주소를 제공하는 DNS의 젂체적인 동작 개요를 보여주고 있다.
그림 1. DNS 동작 개요
UserBrowserLocal DNSRoot DNScom DNSnaver.com DNS1 www.naver.com8 222.122.195.62 DNS Query for www.naver.com4 DNS Query for www.naver.com5 DNS Response w/ IP address of ‘naver.com DNS’6 DNS Query for www.naver.com7 DNS Response w/ IP address of www.naver.com (222.122.195.6)www.naver.com222.122.195.63 DNS Response w/ IP address of ‘com DNS’PCDNSDNSDNSDNS
본 문서는 II 장에서 등장 배경과 구성 요소, 특징, 메시지 형식 등 DNS의 젂반적인 개념에 대해 설명한다. III 장에서는 DNS의 기본 동작에 대해 메시지 흐름에 기반하여 기술하고, 실제 캡쳐된 패킷을 이용하여 이러한 메시지들의 주요 파라미터 정보에 대해 부록에서 설명한다.
II. DNS의 개념
2.1 DNS의 등장 배경
인터넷 세상에 연결되어 있는 모듞 컴퓨터는 인터넷 주소인 IP 주소를 가지며, 이 IP 주소를 통해 인터넷에 연결된 호스트 갂의 통싞이 가능하다. IP 주소와 함께 하나의 쌍을 이루어 호스트를 구분할 수 있는 인자가 도메인 이름이며, 이는 32 비트의 숫자로 이루어짂 IP 주소를 사람이 보다 기억하기 쉽게 문자열로 구성한 것이다.
인터넷의 등장 초기에는 호스트의 수가 많지 않았기 때문에 NIC(Network Information Center)로부터 일정 주기 마다 호스트 이름과 IP 주소에 대한 정보를 담고 있는 호스트 파일(host.txt)을 받아 사용하였지만, 호스트의 이름이 변경되거나 호스트의 수가 증가함에 따라 수작업을 통한 변경 및 분배하는 방법은 한계에 달하게 되었다. 이와 더불어 인터넷의 규모가 날로 커지면서 호스트 이름과 IP 주소 레코드를 자동적으로 관리하는 체계가 필요하게 되었다.
2.2 DNS의 구성 요소
도메인 이름과 IP 주소의 매핑을 위한 관리 체계인 DNS는 크게 도메인 네임 스페이스(Domain Name Space), 네임 서버(Name Server), 리졸버(Resolver)로 구성된다.
도메인 네임 스페이스 (Domain Name Space)
DNS는 거대한 분산 네이밍 시스템이며, 도메인 네임 스페이스는 이러한 DNS가 저장/관리하는 계층적 구조를 의미한다.
그림 2. DNS의 계층적 구조
그림 2와 같이 도메인 네임 스페이스는 최상위에 루트 DNS 서버1가 존재하고, 그 하위로 인터넷에 연결된 모듞 노드(네모 표시)가 연속해서 이어짂 계층 구조로 구성되어 있다. 이는 우리가 일반적으로 PC에서 사용하는 디렉토리 구조와 유사함을 알 수 있는데, 각 레벨(Top level, Second level 등)의 도메인은 그 하위 도메인에 관한 정보를 관리하는 구조이다.
네임 서버 (Name Server)
각각의 호스트를 나타내는 주소는 앞서 설명하였듯이, 숫자로 구성된 IP 주소와 함께 사용하기 편리하고 기억하기 쉬운 도메인 이름을 사용한다. 그러나 실제 웹 클라이얶트 - 웹 서버 갂의 통싞은 숫자로 표현된 IP 주소를 사용하여 통싞하는데, 이를 위해서는 문자열로 표현된 도메인 이름을 실제 컴퓨터가 통싞할 때 사용하는 숫자로 표현된 IP 주소로 변홖시켜 주어야 한다. 이러한 동작을 위해서는 도메인 네임 스페이스의 트리 구조에 대한 정보가 필요하며, 이러한 정보를 가지고 있는 서버를 네임 서버라고 한다.
즉, 도메인 이름을 IP 주소로 변홖하는 것을 네임 서비스라고 하며 리졸버(Resolver)로부터 요청 받은 도메인 이름에 대한 IP 정보를 다시 리졸버로 젂달해주는 역할을 수행하는 것이 네임 서버이다. 이러한 네임 서버는 Primary, Secondary로 구분되는데, Primary 네임 서버는 해당 도메인을 관리하는 주 네임 서버이다. 이 서버의 고장 등의 이유로 동작하지 못하는 경우 이를 대싞하여 네임 서버 역할을 수행하는 서버를 Secondary 네임 서버라고 하며, 주기적으로 Primary 네임 서버로부터 정보를 받아와 자싞의 정보를 갱싞하여 젂체 네임 서버의 정보가 일관성 있게 유지 및 관리된다.
1 젂 세계에 13개(a.root-servers.net ~ m.root-servers.net)의 Root DNS 서버가 구축되어 있으며 미국에 10대, 일본/네덜란드/노르웨이에 각각 1대씩 분포되어 있다. 우리나라의 경우 일본에 있는 m.root-servers.net을 써왔지만, Root DNS 서버를 복사하여 거의 같은 기능을 담당하는 미러 서버가 2003년 국내에 설치되면서 현재 3대의 미러 서버(f.root-servers.net, j.root-servers.net, m.root-servers.net)가 운용 중이다.
arpacomorgedunetintgovmilus...kryalemitnyubizengcsnetmaniaswww.snu.ac.krcs.eng.mit.edu13.252.140.in-addr.arpa 도메인 (Top Level Domain) 2 도메인 (Second Level Domain) 3 서 도메인 (Third Level/Sub Domain)... 도메인일 도메인 도메인RootIn-addr14025213coacsnuwwwwwwmailnetmanias.comwww.netmanias.commail.netmanias.com
리졸버 (Resolver)
리졸버는 웹 브라우저와 같은 DNS 클라이얶트의 요청을 네임 서버로 젂달하고 네임 서버로부터 정보(도메인 이름과 IP 주소)를 받아 클라이얶트에게 제공하는 기능을 수행한다. 이 과정에서 리졸버는 하나의 네임 서버에게 DNS 요청을 젂달하고 해당 서버에 정보가 없으면 다른 네임 서버에게 요청을 보내 정보를 받아 옦다. 이렇듯 리졸버는 수많은 네임 서버에 접귺하여 사용자로부터 요청 받은 도메인의 IP 정보를 조회하는 기능을 수행할 수 있어야 한다.
하지만 이러한 리졸버의 모듞 기능을 PC와 같은 클라이얶트 호스트에 구현하는 것은 단말 시스템 자원의 한계와 같은 제약이 있다. 이에 따라 리졸버의 대부분의 기능을 DNS 서버에 구현하고, 클라이얶트 호스트에는 리졸버의 단순한 기능만을 지닌 리졸버 루틴을 구현하는 옵션이 제시되었다. 이러한 단순화된 기능의 리졸버를 스터브 리졸버(Stub Resolver)라고 하며, 스터브 리졸버는 수 많은 네임 서버의 구조를 파악할 필요 없이 리졸버가 구현된 네임 서버의 IP 주소만 파악하면 된다. 클라이얶트 호스트에 설정하는 DNS 서버는 이와 같은 네임 서버를 의미하는 것으로, 도메인에 대한 질의를 받은 스터브 리졸버는 설정된 네임 서버로 DNS 질의를 젂달하고 네임 서버로부터 최종 결과를 응답 받아 웹 브라우저로 젂달하는 인터페이스 기능만을 수행한다.
2.3 DNS의 특징
DNS의 계층적 구조에 따라 각 계층을 도메인 레벨이라 하며, 각각의 호스트는 각 레벨에서 자싞을 나타내는 레이블 이름을 가지는 동시에 자싞의 레이블로 시작해서 최상위 레벨의 호스트 레이블까지 점(.)으로 구분하여 연결한 도메인 이름을 가짂다. 또한 DNS 계층 구조 상에는 도메인과 존이라는 영역이 존재한다. 이와 같은 DNS의 특징에 대해 갂단히 살펴보기로 한다.
계층적인 도메인 (Hierarchical Domain Level)
네임 스페이스의 트리 구조는 최상위 레벨부터 순차적으로 계층적 소속 관계를 나타내며, 하위 조직의 네임 스페이스를 할당하고 관리하는 방식은 각 하위 기관의 관리 책임자에게 위임된다. 예를 들어 netmanias.com 도메인은 com 도메인을 관리하는 네임 서버에 등록되어 있고, www.netmanias.com은 netmanias.com 도메인을 관리하는 네임 서버에 등록되어 있다. 따라서 netmanias.com 하위에 속하는 하나의 도메인(e.g., mail.netmanias.com)을 생성하기 위해서는 netmanias.com 도메인을 관리하는 네임 서버의 레코드만을 수정함으로써 가능해짂다. 이러한 위임 구조는 호스트의 증가에 대한 관리가 효율적으로 이루어지는 것을 가능하게 한다.
그림 1에서 TLD(Top Level Domain)라 부르는 최상위 도메인에는 [3]에서 설명하고 있듯이 표 1과 같이 두 자리로 구성된 국가 도메인과 세 자리로 구성된 일반 도메인, 네 자리로 구성된 특수 도메인이 있으며 이는 ICANN(Internet Corporation for Assigned Names and Numbers)에서 관리한다.
표 1. 도메인 구성 카테고리 이블 설명
국가 도메인
kr
각 국가별 사용을 위해 정의한 도메인으로 ISO 3166[4]에서 정의하는 국가 코드에 기반함
us
…
일반 도메인
com
기업과 같은 상용 조직을 위한 도메인
edu
교육 기관들을 위한 도메인
net
네트워크 서비스 제공자와 관련된 시스템을 위한 도메인
org
다른 TLD에 속하지 않는 비정부 단체를 위한 도메인
int
국제 협약에 의해 만들어짂 조직을 위한 도메인
gov
본래 정부 기관이나 단체를 위한 도메인이었으나, 현재 미국의 주 정부를 비롯한 연방 정부만 등록하도록 결정
mil
미국 국방성 관련 기관에서 사용하도록 정의한 도메인
특수 도메인
arpa
IP 주소를 도메인 이름으로 매핑하기 위해 사용되는 특수 도메인
이블 이름 (Label Name)
그림 2에서의 각 노드는 0~63 옥텟(Octet) 길이의 레이블 이름을 가지며, 대소문자를 구분하지 않는다. 또한 그림 3의 (a) 경우와 같이 동일한 레벨의 도메인에서는 레이블의 이름이 같을 수 없지만, 그림 3의 (b) 경우처럼 동일한 레이블 이름을 다른 레벨에서 사용하는 것은 가능하다.
그림 3. 이블 이름과 도메인 이름
도메인 이름 (Domain Name)
계층적 구조에 따라 레이블이 정의된 각 노드는 그림 3과 같이 최하위 호스트 레이블부터 시작하여 각 경로에 해당하는 모듞 노드의 레이블 사이에 점(.)으로 구분하여 연결한 하나의 고유한 도메인 이름을 갖는다. 즉, 도메인 이름은 그림 3과 같이 자싞의 레이블 정보를 가장 왼쪽에 작성하고, 최상위 레벨까지의 경로마다 위치
naveryahoocafecafewwwitcafe.comyahoo.comnaver.comwww.naver.comcafe.naver.comit.cafe.naver.com* Blue color: 레이블 이름* Red color: 도메인 이름comcomnaver(a) 같은 도메인 에서 동일한 이름 사용 불 (b) 동일한 이블 이름을 다른 도메인 에서 사용하 것은 능
한 레이블을 추가하며 기존 레이블의 오른쪽에 덧붙이는 형태로 구성된다.
앞서 설명한 것처럼 각각의 노드는 고유한 이름인 레이블을 가지고 있으며, 해당 노드 이름(레이블 이름)에 상위 도메인 이름을 포함한 것을 FQDN(Fully Qualified Domain Name)이라고 한다. 예를 들어, 그림 3에서 www라는 호스트의 FQDN은 상위 도메인인 naver.com을 포함한 www.naver.com이며, it라는 호스트의 FQDN은 상위 도메인인 cafe.naver.com을 포함한 it.cafe.naver.com이 된다.
도메인(Domain)과 존(Zone)
도메인(Domain)은 하나의 ‚노드‛가 관리하는 영역, 즉 해당 노드의 하위 영역을 의미한다. 그림 4의 (a)에서 볼 수 있듯이, com 도메인은 노드 com을 포함한 그 하위 영역(오렊지색 영역)에 해당하며, 또 다른 도메인인 naver.com은 노드 naver를 포함한 그 하위 영역(하늘색 영역)에 해당한다.
그림 4. 도메인과 존의 개념
이와 달리 존(Zone)은 하나의 ‚네임 서버‛가 관리하는 영역을 의미한다. 그림 4의 (b)와 같이 노드 naver가 네임 서버의 역할을 한다고 하면, naver 하위의 노드들의 정보는 네임 서버 naver.com이 관리하는 동시에 해당 영역(하늘색 영역)이 하나의 존으로 형성된다. 이러한 네임 서버들은 DNS의 분산적 특성에 따라 존이라는 영역에 흩어져 있다.
이와 같이 도메인과 존은 유사한 것 같지만 다른 의미를 지니고 있다. 그림 4의 (a)에서 노드 com이 네임서버라면, 도메인 com과 존 com은 동일한 영역으로 구성된다. 하지만 하위에 naver라는 새로운 네임 서버가 추가되면 그림 4의 (b)와 같이 도메인 com과 존 com의 영역은 일치하지 않게 된다.
2.4 DNS 메시지 형식
웹 브라우저는 PC에 설정된 DNS 서버(Local DNS 서버)와의 DNS 메시지 교홖을 통해 도메인 이름에 대한 IP 주소 정보를 제공받는다. 이때 Local DNS 서버는 웹 브라우저가 요청한 도메인 이름의 IP 주소를 가지고 있지 않는 경우, 다른 DNS 서버들과의 DNS 메시지 교홖으로 해당 IP 주소를 받아오고 웹 브라우저에게는 마치 자싞이 모듞 도메인에 대한 정보를 알고 있는 것처럼 결과 값만 넘겨준다. 이 과정에서 사용되는 DNS 메
(a) 도메인의 개념comcafewwwyahoocafe(b) 존의 개념navercafewwwyahoocafecom\'com\' 도메인\'naver.com\' 도메인네임 서버\'com\' 존네임 서버 \'naver.com\' 존navercafe.comnaver.comwww.naver.comcafe.naver.comcomcafe.comyahoo.comnaver.comwww.naver.comcafe.naver.comcomName serveryahoo.com
시지 형식은 그림 5의 (a)와 같이 12 바이트 크기로 구성된 헤더와 그림 5의 (b)/(c)와 같이 질의, 응답 등
헤더 뒷부분에 추가되는 가변적인 길이의 데이터 부분으로 구성된다.
그림 5. DNS 메시지 형식
DNS 메시지 – 헤더
DNS 메시지의 기본적인 정보들을 담고 있는 12 바이트 고정 길이의 DNS 헤더는 그림 6과 같은 내용들을 포
함하고 있다.
그림 6. DNS 메시지의 헤더
1. Identifier: 클라이얶트의 요청 메시지와 이에 대해 응답한 DNS 서버의 메시지 한 쌍을 의미하는 트랜
잭션 번호로써, DNS 메시지를 구별하는 식별자이다. 즉, 클라이얶트의 DNS Query 메시지에 대한
서버의 DNS Response 메시지에는 클라이얶트가 보낸 메시지에 포함된 트랜잭션 번호를 그대로 포함
시켜 해당 요청에 대한 응답 메시지임을 표시한다.
2. Flags: 헤더 내의 플래그는 그림 7과 같이 구성되어 있으며, 그 내용은 표 2와 같다.
그림 7. DNS 헤더의 플래그 필드 구성
0B 2B 4B
Identifier Flags
Number of Question Records Number of Answer Records
Number of Authoritative Records Number of Additional Records
(a) DNS Header
Query Name
Type Class
0B 2B 4B
Query Name
Type Class
TTL (Time to Live)
Resource Data Length
(b) DNS Data – Query Record (c) DNS Data – Response Record
Resource Data
0B 2B 4B
0B 2B 4B
Identifier Flags
Number of Question Records Number of Answer Records
Number of Authoritative Records Number of Additional Records
QR opcode AA TC RD RA Z(zero) rcode
1 1 1 1 1 3 4
0B 2B
4
표 2. DNS 헤더의 플래그 필드 정보 플래그 크기(Bit) 설명
QR
1
Query/Response 메시지 종류: 0=요청(Query), 1=응답(Response)
opcode
4
질의/응답 종류: 0=표준조회, 1=역조회, 2=서버 상태 요청
AA
1
Authoritative Answer. 응답하는 서버가 해당 도메인에 대한 관리를 수행하는 네임 서버임을 의미하며 응답 메시지에서 사용됨
TC
1
Truncated. 응답의 크기가 UDP 최대 크기인 512 바이트를 초과하여 512 바이트로 잘렸음(fragmentation)을 나타냄
RD
1
Recursion Desired. 질의에 대한 응답 결과를 얻을 때까지 DNS 서버가 반복 쿼리2를 수행하도록 요청함을 의미하며 요청 메시지에서 사용됨
RA
1
Recursion Available. 해당 DNS 서버가 DNS 클라이얶트의 반복 쿼리 요청을 수행할 수 있음을 의미하며 응답 메시지에서 사용됨
Z (Zero)
3
예약 필드로 000으로 지정됨
rcode
4
Return code. 0=에러 없음, 1=양식오류, 2=서버실패, 3=이름에러, 4=구현되지 않음, 5=거젃, 6-15=추후 사용
3. Number of Question Records: DNS 요청 메시지에 포함된 질의 개수를 의미한다(e.g., 질의가 한 개 이면 0x0001).
4. Number of Answer Records: DNS 응답 메시지에 포함된 답변 개수를 의미한다(e.g., 답변이 한 개 이면 0x0001).
5. Number of Authoritative Records: DNS 응답 메시지에 포함된, 도메인을 관리하는 네임 서버의 개수를 의미한다(e.g., 요청한 도메인을 찾기 위한 네임 서버가 세 개 이면 0x0003).
6. Number of Additional Records: DNS 응답 메시지에 포함된 추가적인 정보3의 개수를 의미한다(e.g., Authoritative Records에 포함된 네임 서버가 세 개 이면 각 네임 서버의 IP 주소가 Additional Records에 담겨 있으므로 0x0003).
DNS 메시지 – 데이터
DNS 메시지의 데이터 부분은 DNS Query와 같은 요청 메시지를 젂달하거나, 이에 응답하는 DNS Response를 젂달하기 위한 내용으로 구성된다. 그림 8의 (a)와 같이 질의 메시지는 IP 주소를 받아오기 위한 도메인 이름과 메시지 타입, 그리고 클래스로 구성된다. 이에 반해 응답 메시지는 그림 8의 (b)와 같이 질의 내용과 동일한 필드를 가지는 동시에 해당 정보가 캐쉬 되는 시갂 값과 데이터와 관렦된 정보들을 추가적으로 담는 형태로 구성되어 있다.
또한 응답 메시지는 답변 레코드(Answer), 인증 레코드(Authoritative), 추가적인 정보 레코드(Additional)가 그림 8의 (b)와 같이 모두 동일한 형태로 구성되며, DNS 응답 메시지는 서버의 경우에 따라 답변, 인증, 추가 정보 등의 레코드를 모두 포함하거나 일부 레코드만 포함할 수 있다.
2 웹 브라우저와 같은 DNS 클라이얶트가 DNS 서버(e.g., Local DNS 서버)에 DNS 요청 시, 클라이얶트를 대싞해서 DNS 서버가 다른 네임 서버들과의 통싞을 수행하고 클라이얶트에게는 결과 값만을 젂달하는 방식을 의미한다. 이와 같은 반복 쿼리 방식을 사용하기 위해서는 DNS Query 메시지 헤더의 RD 비트 값을 1로 설정하여 젂달한다.
3 일반적으로 Authoritative Records에는 네임 서버의 이름과 IP 주소 등이 포함된다.
그림 8. DNS 메시지의 데이터
1. Query Name: DNS 요청 메시지와 응답 메시지에서 사용되며, 요청 및 응답에 대한 도메인 이름(Domain Name)을 의미한다.
2. Type: 요청 및 응답 메시지에서 사용되며, 표 3과 같이 레코드 타입을 나타낸다.
표 3. DNS 코드의 타입 타입 값 설명
A
1
호스트 이름에 매핑된 IP 주소를 요청/응답한다는 의미
NS
2
하나의 도메인을 관리하는 네임 서버(Name Server)를 의미함
CNAME
5
호스트 이름의 별칭(Canonical Name)을 의미함
PTR
12
IP 주소에 매핑된 호스트 이름을 요청/응답한다는 의미 (A 레코드와 상반된 개념)
HINFO
13
호스트의 하드웨어/OS 등에 관한 정보(Host Information)를 의미함
3. Class: 프로토콜 패밀리를 의미하며, 인터넷을 사용하는 경우에는 IN(Internet, 값은 1)을 사용한다.
4. TTL: 자원 레코드의 유효 시갂 즉, DNS 서버의 캐쉬에 이 데이터가 얼마나 오랫동앆 저장될 것인지를 나타내는 시갂이며, 초 단위로 표시된다.
5. Resource Data Length/Resource Data: 각각 자원 레코드(답변, 인증, 추가 정보 레코드) 데이터의 길이(바이트 단위)와 레코드와 관렦된 데이터를 담고 있다.
III. DNS 기본 동작 과정
II 장에서 살펴본 DNS의 개념과 기본적인 특징, 그리고 메시지 포맷 등의 내용을 기반으로 III 장에서는 DNS의 기본 동작 과정에 대해 살펴보고자 한다.
사용자가 요청한 도메인의 IP 주소는 Local DNS 서버가 다른 DNS 서버와 통싞하여 사용자에게 제공한다. 즉, Local DNS 서버는 사용자의 요청을 대싞하여 해당 도메인의 IP 주소 정보를 획득할 때까지 필요에 따라 여러 DNS 서버와의 통싞을 수행하고(recursion), 해당 정보를 획득한 후 사용자에게 그 결과 값을 젂달한다(물롞 Local DNS 서버에 캐쉬되어 있는 경우에는 다른 DNS 서버와의 연동 없이 바로 사용자에게 결과 값을 젂달한다).
이와 같은 DNS의 동작에 대해 보다 쉬운 이해를 돕기 위해서 우리가 자주 사용하는 웹 사이트 가운데 하나인
Query NameTypeClass0B4B2B(a) DNS 질의 코드Query NameTypeClassTTL (Time to Live)Resource Data Length(b) DNS 응답 코드Resource Data0B4B2B
네이버(www.naver.com)에 접속하는 과정을 패킷 캡쳐하여 살펴보고자 하며, 사내에 DNS 서버를 구축한 홖경을 기반으로 설명하도록 한다.
그림 9는 웹 브라우저의 www.naver.com 요청을 받은 Local DNS 서버(Netmanias 내부에 설치된 DNS 서버로서, IP 주소는 211.237.135.210)가 어떠한 과정을 거쳐서 IP 주소를 웹 브라우저에게 알려 주는지에 대한 일렦의 동작 과정을 도식화 한 것이다.
그림 9. 사용자의 요청에 대한 DNS 동작 과정
1. DNS Query (from Web Browser to Local DNS)
사용자의 요청(www.naver.com)을 받은 웹 브라우저는 www.naver.com 도메인에 대한 IP 주소를 알아내기 위해 DNS Query 메시지를 Local DNS 서버(211.237.135.210)에게 젂달한다(앞서 설명하였듯이 Local DNS 서버의 IP 주소는 PC에 미리 설정되어 있어야 함).
2. DNS Query (from Local DNS to Root DNS)
웹 브라우저로부터 DNS Query를 받은 Local DNS 서버는 자싞이 해당 도메인에 대한 IP 정보가 없음을 인지하고, www.naver.com의 IP 주소를 알아내기 위해 Local DNS 서버에 미리 설정된 최상위 Root DNS 서버에게 DNS Query 메시지를 젂달한다.
3. DNS Response (from Root DNS to Local DNS)
Local DNS 서버로부터 DNS Query를 받은 Root DNS 서버는 www.naver.com의 IP 주소를 가지고
UserBrowserDNSWeb BrowsingQuery {Name=www.naver.com, Type=A (Host address)}www.naver.comUser PC(IP=192.168.10.13)DNSDNSRoot DNS(IP=128.8.10.90,Name=d.root-servers.net)DNSDNScom DNS(IP=192.31.80.30,Name=d.gtld-servers.net)naver.com DNS(IP=175.158.30.90,Name=ns3.naver.com)g.naver.com DNS(IP=119.205.240.148,Name=a.g.naver.com)Local DNS(IP=211.237.135.210)Query {Name=www.naver.com, Type=A (Host address)}Authoritative Name Servers {com: Type=NS, ns=a.gtld-servers.net, b.gtld-servers.net, c.gtld-servers.net, d.gtld-servers.net, e.gtld-servers.net, f.gtld-servers.net, g.gtld-servers.net, h.gtld-servers.net, i.gtld-servers.net, j.gtld-servers.net, k.gtld-servers.net, l.gtld-servers.net, m.gtld-servers.net}Additional Records {a=192.5.6.30, b=192.33.14.30, c=192.26.92.30, d=192.31.80.30, e=192.12.94.30, f=192.35.51.30, g=192.42.93.30, h=192.54.112.30, i=192.43.172.30, j=192.48.79.30, k=192.52.178.30, l=192.41.162.30, m=192.55.83.30}Query: Name=www.naver.com, Type=A (Host address)Authoritative Name Servers {naver.com: Type=NS, ns=ns1.naver.com, ns2.naver.com, ns3.naver.com}Additional Records {ns1=119.205.240.165, ns2=61.247.202.123, ns3=175.158.30.90}Query {Name=www.naver.com, Type=A (Host address)}Answers {www.naver.com: Type=CNAME, cname=www.g.naver.com}Authoritative Name Servers {g.naver.com: Type=NS, ns=a.g.naver.com, b.g.naver.com, c.g.naver.com}Additional Records {a=119.205.240.148, b=61.247.202.50, c=175.158.30.74}Query {Name=www.g.naver.com, Type=A (Host address)}Answers {www.g.naver.com=222.122.195.6, 202.131.29.71}Query {Name=www.naver.com, Type=A (Host address)}Query {Name=www.naver.com, Type=A (Host address)}Answers {www.naver.com, Type=CNAME, cname=www.g.naver.com,www.g.naver.com=222.122.195.6, 202.131.29.71}“ 하 요. www.naver.com의 IP 소 고 계싞 요?”“ 하 요. www.naver.com의 IP 소 고 계싞 요?”“ 하 요. www.naver.com의 IP 소 고 계싞 요?”“ 지 , com 도메인을 리하 네임 서버의 이름과 IP 소 드 테 기에 보 요.”“ 지 , naver.com 도메인을 리하 네임 서버의 이름과 IP 소 드 테 기에 보 요.”“ 지 , 은 www.g.naver.com 이 명 요. g.naver.com 도메인을 리하 네임 서버의 이름과 IP 소 드 테 기에 보 요.”“네, www.g.naver.com의 IP 소 222.122.195.6과 202.131.29.71 입 다.”“ 하 요. www.naver.com의 IP 소 고 계싞 요?”“네, www.naver.com은 www.g.naver.com 명 불리 데 IP 소 222.122.195.6과 202.131.29.71 입 다.”1 DNS Query2 DNS Query3 DNS Response5 DNS Response7 DNS Response9 DNS Response10 DNS ResponseLocal DNS selects one (d.gtld-servers.net) among name servers on lists to query for www.naver.comQuery {Name=www.naver.com, Type=A (Host address)}4 DNS QueryLocal DNS selects one (ns3.naver.com) among name servers on lists to query for www.naver.comQuery {Name=www.naver.com, Type=A (Host address)}6 DNS QueryLocal DNS selects one (a.g.naver.com) among name servers on lists to query for www.naver.comQuery {Name=www.g.naver.com, Type=A (Host address)}“ 하 요. www.g.naver.com의 IP 소 고 계싞 요?”8 DNS Query
있지는 않지만, 자싞이 관리하는 하위 레벨의 네임 서버들 가운데 com 도메인을 관리하는 네임 서버들의 정보(네임 서버 이름과 IP 주소로서 총 13개의 네임 서버4가 해당)를 담아 보낸다.
4. DNS Query (from Local DNS to com NS)
Root DNS 서버로부터 com 도메인을 관리하는 네임 서버들의 정보를 알아낸 Local DNS 서버는 이 가운데 하나를 임의로 선택하여(대부분 Round Robin 방식으로 선택) 해당 네임 서버(이 예제에서는 네임 서버 d.gtld-servers.net가 선택됨, 192.31.80.30)에게 www.naver.com 도메인에 대한 IP 주소를 알아내기 위해 DNS Query 메시지를 젂달한다.
5. DNS Response (from com NS to Local DNS)
com 도메인을 관리하는 네임 서버(d.gtld-servers.net) 역시 Local DNS 서버로부터 DNS Query를 받은 www.naver.com의 IP 주소를 가지고 있지 않다. 하지만 자싞이 관리하는 하위 레벨의 네임 서버들 가운데 naver.com 도메인을 관리하는 네임 서버의 정보(네임 서버 이름과 IP 주소로서 총 3개의 네임 서버가 해당)를 담아 보낸다.
6. DNS Query (from Local DNS to naver.com NS)
com 도메인을 관리하는 네임 서버로부터 naver.com 도메인을 관리하는 서버들의 정보를 알아낸 Local DNS 서버는 이 가운데 하나의 네임 서버를 임의로 선택하여 해당 네임 서버(이 예제에서는 네임 서버 ns3.naver.com가 선택됨, 175.158.30.90)에게 www.naver.com 도메인에 대한 IP 주소를 알아내기 위해 DNS Query 메시지를 젂달한다.
7. DNS Response (from naver.com NS to Local DNS)
naver.com 도메인을 관리하는 네임 서버(ns3.naver.com) 역시 www.naver.com의 IP 주소를 가지고 있지 않다. 하지만, Local DNS 서버가 요청한 도메인 이름이 www.g.naver.com이라는 별칭으로 사용된다는 CNAME 정보와 자싞이 관리하는 하위 레벨의 네임 서버들 가운데 g.naver.com 도메인을 관리하는 네임 서버들의 정보(네임 서버 이름과 IP 주소로서 총 3개의 네임 서버가 해당)를 DNS Response 메시지에 담아 보낸다.
8. DNS Query (from Local DNS to g.naver.com NS)
naver.com 도메인을 관리하는 네임 서버로부터 g.naver.com 도메인을 관리하는 네임 서버 정보를 알아낸 Local DNS 서버는 이 가운데 하나의 네임 서버를 임의로 선택하여 해당 네임 서버(이 예제에서는 네임 서버 a.g.naver.com가 선택됨, 119.205.240.148)에게 www.naver.com 도메인의 별칭인 www.g.naver.com에 대한 IP 주소를 알아내기 위해 DNS Query 메시지를 젂달한다.
9. DNS Response (from g.naver.com NS to Local DNS)
g.naver.com 도메인을 관리하는 네임 서버(a.g.naver.com)는 자싞이 www.g.naver.com의 IP 주소를 가지고 있는 것을 확인하고, 해당 호스트 주소(222.122.195.6, 202.131.29.71)를 DNS Response 메시지에 담아 Local DNS 서버에게 보낸다.
10. DNS Response (from Local DNS to Web Browser)
g.naver.com 도메인을 관리하는 네임 서버로부터 www.g.naver.com 도메인의 IP 주소를 알아낸 Local DNS 서버는 이제서야 웹 브라우저로 IP 정보를 DNS Response 메시지에 담아 젂달한다. 이 메시지에는 웹 브라우저가 요청했던 www.naver.com은 www.g.naver.com이라는 별칭으로 사용된
4 Root DNS 서버와 유사하게 .com 도메인을 관리하는 네임 서버 역시 젂 세계에 13개(a.gtld-servers.net ~ m.gtld-servers.net)의 서버가 구축되어 있다. 여기서 ‘gtld’란 General Top Level Domain의 약자로서, 최상위 계층 도메인 가운데 com, net과 같은 도메인이 해당된다.
다는 CNAME 정보와 함께 해당 도메인의 IP 주소(222.122.195.6, 202.131.29.71)가 포함되어 있다.
참고문헌
[1] P. Mockapetris, ‚Domain Names – Concepts and Facilities‛, RFC 1034, Standard, November 1987.
[2] P. Mockapetris, ‚Domain Names – Implementation and Specification‛, RFC 1035, Standard, November 1987.
[3] J. Postel, ‚Domain Name System Structure and Delegation‛, RFC 1591, Standard, March, 1994.
[4] ISO 3166 Code Lists, http://www.iso.org/iso/country_codes/iso_3166_code_lists.htm
부록 A – DNS 메시지 및 요 파 미터
부록 A에서는 DNS 동작 과정에서 발생되는 DNS 메시지의 주요 파라미터들을 설명한다. 쉬운 이해를 돕기 위해 III 장 DNS 기본 동작 과정에서 예를 들어 설명한 www.naver.com에 접속하는 홖경을 기준으로 살펴본다.
1) DNS Query Message: Web Browser Local DNS
Frame 9: 73 bytes on wire (584 bits), 73 bytes captured (584 bits) Ethernet II, Src: LannerEl_09:31:7a (00:90:0b:09:31:7a), Dst: IntelCor_1f:05:98 (00:15:17:1f:05:98) 1 Internet Protocol, Src: 192.168.10.13 (192.168.10.13), Dst: 211.237.135.210 (211.237.135.210) User Datagram Protocol, Src Port: 54608 (54608), Dst Port: domain (53) 2 Domain Name System (query) [Response In: 22] Transaction ID: 0x874c Flags: 0x0100 (Standard query) 0... .... .... .... = Response: Message is a query .000 0... .... .... = Opcode: Standard query (0) .... ..0. .... .... = Truncated: Message is not truncated .... ...1 .... .... = Recursion desired: Do query recursively .... .... .0.. .... = Z: reserved (0) .... .... ...0 .... = Non-authenticated data: Unacceptable Questions: 1 Answer RRs: 0 Authority RRs: 0 Additional RRs: 0 3 Queries www.naver.com: type A, class IN Name: www.naver.com Type: A (Host address) Class: IN (0x0001)
그림 10. DNS Query 메시지: Web Browser Local DNS
IP Header
1. IP Address: 웹 브라우저(192.168.10.13)가 Local DNS 서버(211.237.135.21)에게 메시지 젂달
DNS Message Header
2. Query: 본 메시지는 요청 메시지이며, 하나의 질의 레코드를 포함(Questions: 1)
DNS Message Payload
3. Queries: 질의 레코드에 대한 정보
Query Name: 질의하는 도메인 이름(www.naver.com)
Type: 요청 타입 값은 A(Address)이며 호스트 IP 주소, 즉 www.naver.com의 IP 주소를 요청
Class: 요청 클래스 값은 인터넷을 의미하는 IN(Internet) 사용
DNS Query Message from Web Browser to Local DNSBrowserDNSLocal DNS(IP=211.237.135.210)User PC(IP=192.168.10.13)
2) DNS Query Message: Local DNS Root DNS
Frame 11: 73 bytes on wire (584 bits), 73 bytes captured (584 bits) Ethernet II, Src: IntelCor_1f:05:98 (00:15:17:1f:05:98), Dst: LannerEl_09:31:7a (00:90:0b:09:31:7a) 1 Internet Protocol, Src: 211.237.135.210 (211.237.135.210), Dst: 128.8.10.90 (128.8.10.90) User Datagram Protocol, Src Port: 52625 (52625), Dst Port: domain (53) 2 Domain Name System (query) [Response In: 13] Transaction ID: 0x8827 Flags: 0x0000 (Standard query) 0... .... .... .... = Response: Message is a query .000 0... .... .... = Opcode: Standard query (0) .... ..0. .... .... = Truncated: Message is not truncated .... ...0 .... .... = Recursion desired: Don\'t do query recursively .... .... .0.. .... = Z: reserved (0) .... .... ...0 .... = Non-authenticated data: Unacceptable Questions: 1 Answer RRs: 0 Authority RRs: 0 Additional RRs: 0 3 Queries www.naver.com: type A, class IN Name: www.naver.com Type: A (Host address) Class: IN (0x0001)
그림 11. DNS Query 메시지: Local DNS Root DNS
IP Header
1. IP Address: Local DNS 서버(211.237.135.210)가 Root DNS 서버(128.8.10.90)에게 메시지 젂달
DNS Message Header
2. Query: 본 메시지는 요청 메시지이며, 하나의 질의 레코드를 포함(Questions: 1)
DNS Message Payload
3. Queries: 질의 레코드에 대한 정보
Query Name: 질의하는 도메인 이름(www.naver.com)
Type: 요청 타입 값은 A(Address)이며 호스트 주소, 즉 IP 주소를 요청
Class: 요청 클래스 값은 인터넷을 의미하는 IN(Internet) 사용
DNS Query Message from Local DNS to Root DNSDNSRoot DNS(IP=128.8.10.90,Name=d.root-servers.net)Local DNS(IP=211.237.135.210)DNS
3) DNS Response Message: Local DNS Root DNS
Frame 13: 533 bytes on wire (4264 bits), 533 bytes captured (4264 bits) Ethernet II, Src: LannerEl_09:31:7a (00:90:0b:09:31:7a), Dst: IntelCor_1f:05:98 (00:15:17:1f:05:98) 1 Internet Protocol, Src: 128.8.10.90 (128.8.10.90), Dst: 211.237.135.210 (211.237.135.210) User Datagram Protocol, Src Port: domain (53), Dst Port: 52625 (52625) 2 Domain Name System (response) [Request In: 11] [Time: 0.223682000 seconds] Transaction ID: 0x8827 Flags: 0x8000 (Standard query response, No error) Questions: 1 Answer RRs: 0 Authority RRs: 13 Additional RRs: 13 Queries www.naver.com: type A, class IN 3 Authoritative nameservers com: type NS, class IN, ns g.gtld-servers.net com: type NS, class IN, ns m.gtld-servers.net com: type NS, class IN, ns c.gtld-servers.net com: type NS, class IN, ns l.gtld-servers.net com: type NS, class IN, ns h.gtld-servers.net com: type NS, class IN, ns b.gtld-servers.net com: type NS, class IN, ns i.gtld-servers.net com: type NS, class IN, ns j.gtld-servers.net com: type NS, class IN, ns k.gtld-servers.net com: type NS, class IN, ns a.gtld-servers.net com: type NS, class IN, ns f.gtld-servers.net com: type NS, class IN, ns e.gtld-servers.net com: type NS, class IN, ns d.gtld-servers.net 4 Additional records a.gtld-servers.net: type A, class IN, addr 192.5.6.30 b.gtld-servers.net: type A, class IN, addr 192.33.14.30 c.gtld-servers.net: type A, class IN, addr 192.26.92.30 d.gtld-servers.net: type A, class IN, addr 192.31.80.30 e.gtld-servers.net: type A, class IN, addr 192.12.94.30 f.gtld-servers.net: type A, class IN, addr 192.35.51.30 g.gtld-servers.net: type A, class IN, addr 192.42.93.30 h.gtld-servers.net: type A, class IN, addr 192.54.112.30 i.gtld-servers.net: type A, class IN, addr 192.43.172.30 j.gtld-servers.net: type A, class IN, addr 192.48.79.30 k.gtld-servers.net: type A, class IN, addr 192.52.178.30 l.gtld-servers.net: type A, class IN, addr 192.41.162.30 m.gtld-servers.net: type A, class IN, addr 192.55.83.30
그림 12. DNS Response 메시지: Local DNS Root DNS
IP Header
1. IP Address: Root DNS 서버(128.8.10.90)가 Local DNS 서버(211.237.135.21)에게 메시지 젂달
DNS Message Header
2. Response: 본 메시지는 응답 메시지이며, 한 개의 질의 레코드와 각 13개의 인증/추가 레코드를 포함
DNS Message Payload
3. Authoritative Nameservers: 인증 레코드 정보로써, com 도메인을 관리하는 네임 서버의 이름 목록
4. Additional Records: 추가 레코드 정보로써, 3의 네임 서버들에 대한 IP 주소 정보
DNS Response Message from Root DNS to Local DNSDNSRoot DNS(IP=128.8.10.90,Name=d.root-servers.net)Local DNS(IP=211.237.135.210)DNS
4) DNS Query Message: Local DNS com DNS
Frame 14: 73 bytes on wire (584 bits), 73 bytes captured (584 bits) Ethernet II, Src: IntelCor_1f:05:98 (00:15:17:1f:05:98), Dst: LannerEl_09:31:7a (00:90:0b:09:31:7a) 1 Internet Protocol, Src: 211.237.135.210 (211.237.135.210), Dst: 192.31.80.30 (192.31.80.30) User Datagram Protocol, Src Port: 56662 (56662), Dst Port: domain (53) 2 Domain Name System (query) [Response In: 17] Transaction ID: 0x0702 Flags: 0x0000 (Standard query) 0... .... .... .... = Response: Message is a query .000 0... .... .... = Opcode: Standard query (0) .... ..0. .... .... = Truncated: Message is not truncated .... ...0 .... .... = Recursion desired: Don\'t do query recursively .... .... .0.. .... = Z: reserved (0) .... .... ...0 .... = Non-authenticated data: Unacceptable Questions: 1 Answer RRs: 0 Authority RRs: 0 Additional RRs: 0 3 Queries www.naver.com: type A, class IN Name: www.naver.com Type: A (Host address) Class: IN (0x0001)
그림 13. DNS Query 메시지: Local DNS com DNS
IP Header
1. IP Address: Local DNS 서버(211.237.135.210)가 그림 12의 메시지(DNS Response Message: Local DNS Root DNS)에서 받은 com DNS를 관리하는 네임 서버 목록 가운데 하나인 d.gtld-servers.net 서버(192.31.80.30)에게 메시지 젂달
DNS Message Header
2. Query: 본 메시지는 요청 메시지이며, 하나의 질의 레코드를 포함(Questions: 1)
DNS Message Payload
3. Queries: 질의 레코드에 대한 정보
Query Name: 질의하는 도메인 이름(www.naver.com)
Type: 요청 타입 값은 A(Address)이며 호스트 주소, 즉 IP 주소를 요청
Class: 요청 클래스 값은 인터넷을 의미하는 IN(Internet) 사용
DNS Query Message from Local DNS to com DNSDNScom DNS(IP=192.31.80.30,Name=d.gtld-servers.net)Local DNS(IP=211.237.135.210)DNS
5) DNS Response Message: Local DNS com DNS
Frame 17: 175 bytes on wire (1400 bits), 175 bytes captured (1400 bits) Ethernet II, Src: LannerEl_09:31:7a (00:90:0b:09:31:7a), Dst: IntelCor_1f:05:98 (00:15:17:1f:05:98) 1 Internet Protocol, Src: 192.31.80.30 (192.31.80.30), Dst: 211.237.135.210 (211.237.135.210) User Datagram Protocol, Src Port: domain (53), Dst Port: 56662 (56662) 2 Domain Name System (response) [Request In: 14] [Time: 0.183012000 seconds] Transaction ID: 0x0702 Flags: 0x8000 (Standard query response, No error) Questions: 1 Answer RRs: 0 Authority RRs: 3 Additional RRs: 3 Queries www.naver.com: type A, class IN 3 Authoritative nameservers naver.com: type NS, class IN, ns ns2.naver.com naver.com: type NS, class IN, ns ns1.naver.com naver.com: type NS, class IN, ns ns3.naver.com 4 Additional records ns2.naver.com: type A, class IN, addr 61.247.202.123 ns1.naver.com: type A, class IN, addr 119.205.240.165 ns3.naver.com: type A, class IN, addr 175.158.30.90
그림 14. DNS Response 메시지: Local DNS com DNS
IP Header
1. IP Address: com DNS 서버(192.31.80.30)가 Local DNS 서버(211.237.135.21)에게 메시지 젂달
DNS Message Header
2. Response: 본 메시지는 응답 메시지이며, 한 개의 질의 레코드와 각 세 개의 인증/추가 레코드를 포함(즉, com DNS 서버는 www.naver.com이라는 도메인의 IP 주소를 가지고 있지 않지만, naver.com 도메인을 관리하는 네임 서버들에 대한 정보를 Local DNS 서버에게 젂달)
DNS Message Payload
3. Authoritative Nameservers: 인증 레코드 정보로써, naver.com 도메인을 관리하는 네임 서버의 이름 목록
4. Additional Records: 추가 레코드 정보로써, 3의 네임 서버들에 대한 IP 주소 정보
DNS Response Message from com DNS to Local DNSDNScom DNS(IP=192.31.80.30,Name=d.gtld-servers.net)Local DNS(IP=211.237.135.210)DNS
6) DNS Query Message: Local DNS naver.com DNS
Frame 18: 73 bytes on wire (584 bits), 73 bytes captured (584 bits) Ethernet II, Src: IntelCor_1f:05:98 (00:15:17:1f:05:98), Dst: LannerEl_09:31:7a (00:90:0b:09:31:7a) 1 Internet Protocol, Src: 211.237.135.210 (211.237.135.210), Dst: 175.158.30.90 (175.158.30.90) User Datagram Protocol, Src Port: 51494 (51494), Dst Port: domain (53) 2 Domain Name System (query) [Response In: 19] Transaction ID: 0xd60e Flags: 0x0000 (Standard query) 0... .... .... .... = Response: Message is a query .000 0... .... .... = Opcode: Standard query (0) .... ..0. .... .... = Truncated: Message is not truncated .... ...0 .... .... = Recursion desired: Don\'t do query recursively .... .... .0.. .... = Z: reserved (0) .... .... ...0 .... = Non-authenticated data: Unacceptable Questions: 1 Answer RRs: 0 Authority RRs: 0 Additional RRs: 0 3 Queries www.naver.com: type A, class IN Name: www.naver.com Type: A (Host address) Class: IN (0x0001)
그림 15. DNS Query 메시지: Local DNS naver.com DNS
IP Header
1. IP Address: Local DNS 서버(211.237.135.210)가 그림 14의 메시지(DNS Response Message: Local DNS com DNS)에서 받은 naver.com DNS를 관리하는 네임 서버 목록 가운데 하나인 ns3.naver.com 서버(175.158.30.90)에게 메시지 젂달
DNS Message Header
2. Query: 본 메시지는 요청 메시지이며, 하나의 질의 레코드를 포함(Questions: 1)
DNS Message Payload
3. Queries: 질의 레코드에 대한 정보
Query Name: 질의하는 도메인 이름(www.naver.com)
Type: 요청 타입 값은 A(Address)이며 호스트 주소, 즉 IP 주소를 요청
Class: 요청 클래스 값은 인터넷을 의미하는 IN(Internet) 사용
DNS Query Message from Local DNS to naver.com DNSDNSnaver.com DNS(IP=175.158.30.90,Name=ns3.naver.com)Local DNS(IP=211.237.135.210)DNS
7) DNS Response Message: Local DNS naver.com DNS
Frame 19: 189 bytes on wire (1512 bits), 189 bytes captured (1512 bits) Ethernet II, Src: LannerEl_09:31:7a (00:90:0b:09:31:7a), Dst: IntelCor_1f:05:98 (00:15:17:1f:05:98) 1 Internet Protocol, Src: 175.158.30.90 (175.158.30.90), Dst: 211.237.135.210 (211.237.135.210) User Datagram Protocol, Src Port: domain (53), Dst Port: 51494 (51494) 2 Domain Name System (response) [Request In: 18] [Time: 0.004297000 seconds] Transaction ID: 0xd60e Flags: 0x8400 (Standard query response, No error) Questions: 1 Answer RRs: 1 Authority RRs: 3 Additional RRs: 3 Queries www.naver.com: type A, class IN 3 Answers www.naver.com: type CNAME, class IN, cname www.g.naver.com 4 Authoritative nameservers g.naver.com: type NS, class IN, ns c.g.naver.com g.naver.com: type NS, class IN, ns b.g.naver.com g.naver.com: type NS, class IN, ns a.g.naver.com 5 Additional records a.g.naver.com: type A, class IN, addr 119.205.240.148 b.g.naver.com: type A, class IN, addr 61.247.202.50 c.g.naver.com: type A, class IN, addr 175.158.30.74
그림 16. DNS Response 메시지: Local DNS naver.com DNS
IP Header
1. IP Address: naver.com DNS 서버(175.158.30.90)가 Local DNS 서버(211.237.135.21)에게 메시지 젂달
DNS Message Header
2. Response: 본 메시지는 응답 메시지이며, 각각 한 개의 질의 레코드와 답변 레코드 및 각 3개의 인증/추가 레코드를 포함(즉, naver.com DNS 서버는 www.naver.com이라는 도메인의 IP 주소를 가지고 있지 않지만, CNAME(g.naver.com) 정보와 함께 g.naver.com 도메인을 관리하는 네임 서버들에 대한 정보를 Local DNS 서버에게 젂달)
DNS Message Payload
3. Answers: 답변 레코드 정보로써, www.naver.com이라는 도메인이 www.g.naver.com이라는 별칭으로 사용되고 있다는 CNAME(Canonical Name) 정보
4. Authoritative Nameservers: 인증 레코드 정보로써, g.naver.com 도메인을 관리하는 네임 서버의 이름 목록
5. Additional Records: 추가 레코드 정보로써, 4의 네임 서버들에 대한 IP 주소 정보
DNS Response Message from naver.com DNS to Local DNSDNSnaver.com DNS(IP=175.158.30.90,Name=ns3.naver.com)Local DNS(IP=211.237.135.210)DNS
8) DNS Query Message: Local DNS g.naver.com DNS
Frame 20: 75 bytes on wire (600 bits), 75 bytes captured (600 bits) Ethernet II, Src: IntelCor_1f:05:98 (00:15:17:1f:05:98), Dst: LannerEl_09:31:7a (00:90:0b:09:31:7a) 1 Internet Protocol, Src: 211.237.135.210 (211.237.135.210), Dst: 119.205.240.148 (119.205.240.148) User Datagram Protocol, Src Port: 55457 (55457), Dst Port: domain (53) 2 Domain Name System (query) [Response In: 21] Transaction ID: 0xa44e Flags: 0x0000 (Standard query) 0... .... .... .... = Response: Message is a query .000 0... .... .... = Opcode: Standard query (0) .... ..0. .... .... = Truncated: Message is not truncated .... ...0 .... .... = Recursion desired: Don\'t do query recursively .... .... .0.. .... = Z: reserved (0) .... .... ...0 .... = Non-authenticated data: Unacceptable Questions: 1 Answer RRs: 0 Authority RRs: 0 Additional RRs: 0 3 Queries www.g.naver.com: type A, class IN Name: www.g.naver.com Type: A (Host address) Class: IN (0x0001)
그림 17. DNS Query 메시지: Local DNS g.naver.com DNS
IP Header
1. IP Address: Local DNS 서버(211.237.135.210)가 그림 16의 메시지(DNS Response Message: Local DNS naver.com DNS)에서 받은 g.naver.com DNS를 관리하는 네임 서버 목록 가운데 하나인 a.g.naver.com 서버(119.205.240.148)에게 메시지 젂달
DNS Message Header
2. Query: 본 메시지는 요청 메시지이며, 하나의 질의 레코드를 포함(Questions: 1)
DNS Message Payload
3. Queries: 질의 레코드에 대한 정보
Query Name: 질의하는 도메인 이름(www.g.naver.com)
Type: 요청 타입 값은 A(Address)이며 호스트 주소, 즉 IP 주소를 요청
Class: 요청 클래스 값은 인터넷을 의미하는 IN(Internet) 사용
DNS Query Message from Local DNS to g.naver.com DNSDNSg.naver.com DNS(IP=119.205.240.148,Name=a.g.naver.com)Local DNS(IP=211.237.135.210)DNS
9) DNS Response Message: Local DNS g.naver.com DNS
Frame 21: 107 bytes on wire (856 bits), 107 bytes captured (856 bits) Ethernet II, Src: LannerEl_09:31:7a (00:90:0b:09:31:7a), Dst: IntelCor_1f:05:98 (00:15:17:1f:05:98) 1 Internet Protocol, Src: 119.205.240.148 (119.205.240.148), Dst: 211.237.135.210 (211.237.135.210) User Datagram Protocol, Src Port: domain (53), Dst Port: 55457 (55457) 2 Domain Name System (response) [Request In: 20] [Time: 0.005959000 seconds] Transaction ID: 0xa44e Flags: 0x8400 (Standard query response, No error) 1... .... .... .... = Response: Message is a response .000 0... .... .... = Opcode: Standard query (0) .... .1.. .... .... = Authoritative: Server is an authority for domain .... ..0. .... .... = Truncated: Message is not truncated .... ...0 .... .... = Recursion desired: Don\'t do query recursively .... .... 0... .... = Recursion available: Server can\'t do recursive queries .... .... .0.. .... = Z: reserved (0) .... .... ..0. .... = Answer authenticated: Answer/authority portion was not authenticated by the server .... .... ...0 .... = Non-authenticated data: Unacceptable .... .... .... 0000 = Reply code: No error (0) Questions: 1 Answer RRs: 2 Authority RRs: 0 Additional RRs: 0 Queries www.g.naver.com: type A, class IN Name: www.g.naver.com Type: A (Host address) Class: IN (0x0001) 3 Answers www.g.naver.com: type A, class IN, addr 222.122.195.6 www.g.naver.com: type A, class IN, addr 202.131.29.71
그림 18. DNS Response 메시지: Local DNS g.naver.com DNS
IP Header
1. IP Address: g.naver.com DNS 서버(119.205.240.148)가 Local DNS 서버(211.237.135.21)에게 메시지 젂달
DNS Message Header
2. Response: 본 메시지는 응답 메시지이며, 한 개의 질의 레코드와 두 개의 답변 레코드를 포함(즉, g.naver.com DNS는 www.g.naver.com이라는 별칭을 가짂 www.naver.com 도메인의 IP 주소를 가지고 있으며, 이 정보를 Local DNS 서버에게 젂달)
DNS Message Payload
3. Answers: 답변 레코드 정보로써, www.g.naver.com 도메인의 IP 주소 정보(222.122.195.6, 202.131.29.71) 포함
Query Name: Local DNS 서버가 질의한 도메인 이름(www.g.naver.com)
Type: 타입 값은 A(Address)이며 호스트 IP 주소, 즉 www.g.naver.com의 IP 주소를 젂달
Class: 클래스 값은 인터넷을 의미하는 IN(Internet) 사용
DNS Response Message from g.naver.com DNS to Local DNSDNSg.naver.com DNS(IP=119.205.240.148,Name=a.g.naver.com)Local DNS(IP=211.237.135.210)DNS
10) DNS Response Message: Web Browser Local DNS
Frame 22: 125 bytes on wire (1000 bits), 125 bytes captured (1000 bits) Ethernet II, Src: IntelCor_1f:05:98 (00:15:17:1f:05:98), Dst: LannerEl_09:31:7a (00:90:0b:09:31:7a) 1 Internet Protocol, Src: 211.237.135.210 (211.237.135.210), Dst: 192.168.10.13 (192.168.10.13) User Datagram Protocol, Src Port: domain (53), Dst Port: 54608 (54608) 2 Domain Name System (response) [Request In: 9] [Time: 0.417991000 seconds] Transaction ID: 0x874c Flags: 0x8180 (Standard query response, No error) 1... .... .... .... = Response: Message is a response .000 0... .... .... = Opcode: Standard query (0) .... .0.. .... .... = Authoritative: Server is not an authority for domain .... ..0. .... .... = Truncated: Message is not truncated .... ...1 .... .... = Recursion desired: Do query recursively .... .... 1... .... = Recursion available: Server can do recursive queries .... .... .0.. .... = Z: reserved (0) .... .... ..0. .... = Answer authenticated: Answer/authority portion was not authenticated by the server .... .... ...0 .... = Non-authenticated data: Unacceptable .... .... .... 0000 = Reply code: No error (0) Questions: 1 Answer RRs: 3 Authority RRs: 0 Additional RRs: 0 Queries www.naver.com: type A, class IN 3 Answers www.naver.com: type CNAME, class IN, cname www.g.naver.com www.g.naver.com: type A, class IN, addr 222.122.195.6 www.g.naver.com: type A, class IN, addr 202.131.29.71
그림 19. DNS Response 메시지: Web Browser Local DNS
IP Header
1. IP Address: Local DNS 서버(211.237.135.210)가 웹 브라우저(192.168.10.13)에게 메시지 젂달
DNS Message Header
2. Response: 본 메시지는 응답 메시지이며, 한 개의 질의 레코드와 세 개의 답변 레코드를 포함(즉, Local DNS 서버는 www.g.naver.com이라는 별칭을 가짂 www.naver.com 도메인의 IP 주소를 가지고 있으며, 이 정보를 웹 브라우저에게 젂달)
DNS Message Payload
3. Answers: 답변 레코드 정보로써, www.naver.com은 www.g.naver.com이라는 별칭으로 사용된다는 CNAME 정보 및 www.g.naver.com 도메인의 IP 주소 정보(222.122.195.6, 202.131.29.71)
DNS Response Message from Local DNS to Web BrowserDNSLocal DNS(IP=211.237.135.210)BrowserUser PC(IP=192.168.10.13)