쉽게 배우는
데이터 통신
과컴퓨터 네트워크
DNS
학습목표
도메인 이름과 IP 주소를 변환하는 과정이 필요한 이유를 이해한다.
계층 구조의 네임 스페이스, 도메인, 존 개념을 이해한다.
도메인 정보를 관리하기 위한 자원 레코드를 알아본다.
이름 관리를 위한 해석기와 네임 서버의 동작 원리를 이해한다.
DNS 클라이언트와 서버가 전송하는 DNS 메시지를 살펴본다.
3/32
1절. 도메인 서비스
•
호스트 이름과 IP 주소 정보의 관리를 위한 분산 데이터베이스 시스템 IP 주소
•
32 비트 크기•
사용자 편의를 위해 8 비트 크기의 10진수 4개로 표현 – www.xxx.yyy.zzz– 예: 211.223.201.30
주소 클래스
•
클래스 구분 [표 15-1]1절. 도메인 서비스
IP 주소
주소 클래스 [그림 15-1]
•
클래스 A: 224개의 호스트 수용•
클래스 B: 216개의 호스트 수용•
클래스 C: 28개의 호스트 수용•
클래스 D: 멀티캐스팅 지원5/32
1절. 도메인 서비스
DNS
•
도메인 이름: 문자형으로 표기되는 호스트 이름 (일반 사용자가 선호)•
IP 주소: IP 프로토콜에서 호스트 구분을 위하여 반드시 필요•
DNS: 도메인 이름을 이용하여 IP 주소로 변환하는 서비스 /etc/hosts 파일
•
인터넷 초기에 수작업으로 관리•
파일의 내용은 (도메인 이름, IP 주소)의 쌍으로 구성 Infor1.korea.co.kr 211.223.201.28Infor2.korea.co.kr 211.223.201.29 Infor3.korea.co.kr 211.223.201.30
•
인터넷 보급이 확산되면서 DNS를 이용하여 자동으로 처리1절. 도메인 서비스
DNS
분산 데이터베이스
•
해석기 (Resolver)– IP 주소를 얻고자 하는 응용 프로그램이 호출
– 응용 프로그램은 해석기에게 도메인 이름을 매개변수로 제공 – 해석기는 UDP를 이용해 DNS 서버에 변환을 요청
•
nslookup 명령어– DNS 서버: server.korea.co.kr
– information.korea.co.kr의 IP 주소
7/32
1절. 도메인 서비스
DNS 구성 요소
•
도메인 네임 스페이스– 트리 구조의 네임 스페이스를 비롯해 데이터에 대한 이름 관련 규칙을 정의 – 트리에 연결된 호스트는 자원 레코드(Resource Records)로 표현
– DNS 서비스는 자원 레코드의 특정 유형 정보를 얻는 과정
•
네임 서버– 도메인 트리 구조와 트리에 보관된 자원 레코드를 관리하는 프로그램 – 여러 네임 서버가 구역을 분할해 전체 도메인을 관리함
•
해석기– 클라이언트의 요청을 받아 네임 서버로부터 정보을 얻어냄 – 하나의 이상의 네임 서버와 접촉
2절. DNS 데이터베이스
•
DNS: 거대한 분산 데이터베이스•
도메인 네임 스페이스– DNS가 저장, 관리하는 계층적 데이터베이스
– 최상위에 루트가 존재하고, 그 아래로 모든 호스트가 트리 구조로 이어짐 – 레이블: 호스트의 이름
– 도메인 이름: 점(.)으로 구분한 호스트 레이블의 연속
도메인 네임 스페이스
도메인
•
도메인 이름– 최하위 레이블을 왼쪽에 위치하고 상위로 이동하면서 레이블을 표기 – 예: 그림 15-2의 xx.lcs.mit.edu
•
TLD (최상위 도메인)– 루트 호스트 바로 밑에 위치한 호스트 – 예: 그림 15-2의 mil, edu, arpa
•
도메인: 그림 15-2의 edu 도메인, mit.edu 도메인9/32
2절. DNS 데이터베이스
도메인 네임 스페이스
도메인 [그림 15-2]
•
호스트의 도메인 이름 – xx.lcs.mit.edu•
TLD– mil, edu, arpa
•
도메인– edu 도메인
– mit.edu 도메인
2절. DNS 데이터베이스
도메인 네임 스페이스
최상위 도메인
•
RFC 1591의 TLD – .com: 상업적인 용도 – .edu: 교육기관 용도– .net: 네트워크 서비스 제공자와 관련된 시스템 – .org: 다양한 종류의 기관
– .int: 국제적인 목적으로 정의
– .gov: 미국 연방 정부와 관련된 기관 – .mil: 미국 국방성 관련 기관
•
추가: arts, firm, info, nom, rcc, store, web 등•
국가 코드의 활용: .tv, .cc11/32
2절. DNS 데이터베이스
도메인 네임 스페이스
도메인 이름 [그림 15-3]
•
호스트의 명칭•
하위 레이블부터 시작•
레이블 이름을 점(.)으로 연결2절. DNS 데이터베이스
데이터베이스 서비스
계층 구조의 네임 서버 [그림 15-4]
•
각 네임 서버는 자신의 하부에 위치한 호스트 정보만을 관리•
이웃하는 네임 서버끼리 정보가 필요할 때는 상위 네임 서버의 중개가 필요13/32
2절. DNS 데이터베이스
데이터베이스 서비스
도메인 영역 [그림 15-5]
•
존: 임의의 네임 서버가 관리하는 영역•
도메인과 유사하지만 다름2절. DNS 데이터베이스
자원 레코드
•
자원 레코드– 이름과 주소 정보를 저장하기 위한 레코드
– 트리에 연결된 각 호스트의 정보는 자원 레코드와 관계됨
– DNS 네임 서버가 해석기에 반환하는 데이터가 자원 레코드 정보
•
질의 레코드: DNS 클라이언트가 DNS 서버에 정보를 요청하는 용도15/32
2절. DNS 데이터베이스
자원 레코드
•
자원 레코드– Name: 찾고자 하는 가변 길이의 도메인 이름 – Type: 자원의 종류
– Class: 프로토콜 패밀리 (인터넷: IN) – TTL: 캐쉬 정보의 유효 기간
– RD: RD의 크기 – RD: 자원 데이터
2절. DNS 데이터베이스
자원 레코드
Type
•
A: 호스트의 IP 주소 (도메인 이름과 IP 주소 변환)•
NS: 도메인을 관장하는 인증된 네임 서버•
CNAME: 호스트의 별명•
SOA: 존의 시작을 표시•
WKS: 호스트가 제공하는 네트워크 서비스•
PTR: IP 주소를 도메인 이름으로 변환•
HINFO: 호스트 정보17/32
3절. 네임 서버
•
인터넷에서 여러 네임 서버가 유기적으로 동작하여 정보의 일관성 유지 해석기
•
도메인 이름과 호스트 주소 정보를 원하는 응용 프로그램은 해석기에게 요청•
해석기는 DNS 서버와 접촉하는 DNS 클라이언트 역할을 수행 인증 데이터
•
도메인 이름과 관련된 IP 주소를 얻는 과정 – 해석기가 DNS 메시지 형식의 질의를 생성 – 이 질의를 네임 서버에게 전달– 네임 서버는 회신용 DNS 메시지에 결과를 담아 해석기에 회신
•
네임 서버의 부담을 줄이기 위하여 캐시 정보 활용– 인증 데이터: 해당 데이터를 직접 관리할 책임이 있는 네임 서버로부터 받은 정보 – 캐시 데이터: 이전 요청에 의하여 호스트가 보관하던 정보
3절. 네임 서버
해석기
존
•
존은 자원 레코드에 포함된 인증 데이터의 집합체로 정의됨•
관리하는 정보– 존에 속하는 모든 호스트의 전체 자원 레코드 집합체 – 존에 포함된 최상위 호스트
– 위임 서브 존: 자신의 존에 속하지만 인증이 위임된 경우
– 위임된 서버 존에 관한 글루 데이터: 서브 존의 네임 서버에 접근할 수 있도록 해줌
•
그림 15-7의 예: test.info.mit.edu의 호스트 정보를 얻고자 하는 경우 – info.mit.edu를 관리하는 네임 서버의 IP 주소를 알면 간단히 처리– info.mit.edu의 네임 서버가 서브존 도메인 내부에 위치하여 IP 주소를 얻기 곤란 한 경우에 글루 데이터가 필요
19/32
3절. 네임 서버
해석기
존 [그림 15-7]
3절. 네임 서버
요청의 처리
•
호스트 A가 호스트 B의 정보를 원할 때, 호스트 A, B 가– 같은 도메인에 위치하면 이 도메인의 네임 서버가 인증 데이터를 회신 – 다른 도메인에 위치하면 인근 네임 서버에게 요청 호스트(A)를 중개해 줌
•
인근 네임 서버를 찾는 작업은 인증 정보를 찾을 때까지 반복됨•
질의 요청이 처리되는 과정– 인증 데이터가 반드시 필요한지 명시, 혹은 캐시
– 해석기는 질의 요청을 재귀적으로 처리하는 명시, 혹은 비재귀적
21/32
3절. 네임 서버
요청의 처리
재귀적 요청 [그림 15-8]
•
해석기가 최초로 접속을 시도한 네임 서버가 질의 요청을 추적, 관리•
재귀적 요청을 받은 네임 서버가 결과적으로 해석기 역할을 수행•
비재귀적: 요청을 받은 네임 서버가 다른 네임 서버의 포인터 정보를 회신4절. DNS 프로토콜
DNS 메시지
•
DNS 데이터를 요청하거나 응답할 때 DNS 메시지를 전송 DNS 메시지 [그림 15-9]
23/32
4절. DNS 프로토콜
DNS 메시지
DNS 메시지
•
Header– 헤더 값에 따라 다른 필드의 사용 여부 결정
•
Question– 질의 메시지, 응답 메시지 모두 사용 – 네임 서버에 요청하는 문의 사항 – 질의 레코드 사용
•
Answer: 질문에 대한 결과•
Authority: 인증•
Additional: 기타 정보4절. DNS 프로토콜
DNS 메시지
DNS 헤더 [그림 15-10]
25/32
4절. DNS 프로토콜
DNS 메시지
DNS 헤더
•
Identification: 요청과 응답이 연관 관계를 표시•
QR: 질의 메시지, 응답 메시지 구분•
OPCODE: 질의나 응답의 종류•
AA: 인증 권한이 있는 네임 서버•
TC: UDP 최대 크기 초과 여부•
RD: 재귀적 응답•
RA: 반복 응답 가능 여부•
RCODE: 응답 오류4절. DNS 프로토콜
DNS 메시지
UDP의 제한
•
해석기와 네임 서버는 UDP 53 번 포트로 DNS 메시지 전송•
UDP 프로토콜의 최대 전송 크기: 512 바이트•
TCP 53 번 포트를 사용하는 경우– 미리 512 바이트보다 크다는 것을 인지하는 경우에는 처음부터 TCP 사용 – 사전에 인지하지 못하는 경우는 TC=1로 지정되므로, TCP 연결을 사용
27/32
4절. DNS 프로토콜
DNS 프로토콜의 동작 과정
질의 메시지
•
www.korea.co.kr 호스트의 IP 주소를 원하는 경우•
DNS 헤더•
QUESTION: QUCOUNT=1 [그림 15-9, 15-6(b)]이름: www.korea.co.kr 유형: A (Address)
클래스: IN (인터넷)
4절. DNS 프로토콜
DNS 프로토콜의 동작 과정
질의 메시지
•
[그림 15-11]의 도식화29/32
4절. DNS 프로토콜
DNS 프로토콜의 동작 과정
응답 메시지
•
DNS 헤더•
QUESTION: QUCOUNT=1 [그림 15-9, 15-6b]이름: www.korea.co.kr 유형: A (Address)
클래스: IN (인터넷)
4절. DNS 프로토콜
DNS 프로토콜의 동작 과정
응답 메시지
•
ANSWER: ANCOUNT=2 [그림 15-9, 15-6(a)]이름: www.korea.co.kr
유형: CNAME (Canonical Name for an Alias) 클래스: IN (인터넷)
TTL: 2시간 RD의 길이: 2
자원 데이터: Primary name: korea.co.kr 이름: korea.co.kr
유형: A (Address) 클래스: IN (인터넷) TTL: 2시간
RD의 길이: 4
31/32
4절. DNS 프로토콜
DNS 프로토콜의 동작 과정
응답 메시지
•
ANSWER: AUCOUNT=2 [그림 15-9, 15-6(a)]이름: korea.co.kr
유형: NS (Authoritative Name Server) 클래스: IN (인터넷)
TTL: 2시간 RD의 길이: 8
자원 데이터: Name Server: ns.ns1.kr 이름: korea.co.kr
유형: NS (Authoritative Name Server) 클래스: IN (인터넷)
TTL: 2시간 RD의 길이: 10
자원 데이터: Name Server: nsbk.ns2.kr
IT CookBook, 쉽게 배우는