
host name
。인터넷상에서Host를 식별하는데 사용하는식별자중 하나
▶ 일반적으로웹서버명/도메인/IP Address를 사용
ex )www.facebook.com
。host name는 사람이 기억하기 용이하지만, 위치에 대한 정보를 제한적으로 제공하며 가변길이의알파뉴메릭으로 구성되어라우터에서 처리하는데 어려움이 존재.
ex )www.eurecom.fr의host name는프랑스에 존재하는것 외의 자세한 위치정보를 제공하지 않음.
▶ 이러한 이유로인터넷상Host는32bit의IP Address를 통해 식별
DNS( Domain Name System )
。Host name을Domain name으로서 IP주소로Mapping하는어플리케이션 계층 프로토콜
▶ 사용자가Domain name을브라우저에 입력 시 이를네트워크가 자동으로매핑된IP주소로 변환하여브라우저에게 제공하여 해당IP주소로 접속하도록 설정
。Host name을 기반으로매핑된IP 주소를DNS Query하는 경우 여러DNS 서버를 거쳐서책임 DNS 서버에서 찾은 후사용자에게응답
▶Local DNS name server -> Root DNS Server -> TLD DNS Server -> 책임 DNS Server를 거친다.
。각DNS Server는DNS의분산 계층 데이터베이스로서 구현
▶ 각각의DNS Server는Host name를IP Address로Mapping하기위한DNS 레코드( Resource Record )를 저장
。DNS 프로토콜은Port 번호 : 53으로서트랜스포트 계층 프로토콜로서UDP를 사용
。사용자가웹브라우저의주소에Host name을 입력하면DNS에 의해Mapping된IP Address로 변환되어Port번호 : 80과 함께 해당HTTP Server의웹페이지로 이동
DNS Query
。제시된도메인에 해당하는IP 주소정보를 요청하는질의
Domain name
。Host namedomain name
ex )Host name( =www.google.com)은Domain name( =google.com)에 속한다.
서브 도메인:
。Domain앞에 추가적으로 붙은 추가문자열Domain
(prod.example.com,dev.example.com에서prod, dev에 해당 )
APEX 도메인
。Domain name중서브 도메인이 없는 순수한최상위 도메인
ex )example.com
DNS가 제공하는 서비스
Domain name를IP Address로 변환
。Domain name으로 mapping한IP Address로 변환.
- Host Aliasing
。복잡한host name를 가진Host에게별칭( alias name )을 부여
ex )relay1.west--coast.enterprise.com의host name을 가진Host에게www.enterprise.com이라는 별칭을 부여
▶별칭으로 접속 시 원본Host name로transfer
。별칭부여 시 원본host name는canonical hostname라고 한다.
- MailServer Aliasing
。복잡한Host name를 가진Mail Server에별칭을 부여
- Load Distribution
。동일 서비스를 제공하는 여러개의Server Host의 각각의IP Address를 단일Host name으로 설정하여Traffic을 분산
▶ 복수의Client가Host name를 입력하여HTTP Request하면,DNS Server는 동일한Host name를 가지는IP Address 집합의IP Address를 각각 순환하면서Client에게 응답하여Traffic을 분산
DNS의분산 계층 데이터베이스구조
。각DNS Server는DNS의분산 계층 데이터베이스로서 구현되어최상위 도메인으로부터 차례대로계층구조로 구성
。Host name를IP Address로Mapping하기위한DNS 레코드( Resource Record )은 마지막계층( =Authoritative DNS Server)에 보관
▶Local DNS name server로부터 전달된DNS Query를 최상위DNS Server에서 시작하여 하위DNS Server로 차례로 전달하여IP Address를 획득하는 구조로 설정됨
。DNS Server는 3개 계층의Name Server들로계층적 구조로 구분
DNS가분산계층 DB인 이유?
- 모든
HTTP 요청에 포함되는domain name에 대해매핑되는 각각의IP주소를응답하므로 매우 큰 규모의요청이 전세계적으로 동시 수행됨
。현재 약3억 6천만개의 도메인이 존재.
▶데이터베이스를계층적 구조로 구분하여트래픽을 효율적으로 처리하도록 설계
Single point of failure
。DNS는Network Application에서 필수적인프로토콜
▶Centralized DB인 경우 고장 발생 시Host name to IP Address가 되지않아 어떠한Network Application도 실행할 수 없다
Centralized DB인 경우 모든Request와Response가 한 곳으로 집중되어traffic volume이 매우 커진다
DNS의분산 계층 데이터베이스구조
Name Server( NS )
。DNS Resolver에서 전달된DNS Query를Zone File기반으로 검색 후IP주소를 응답하는 용도의 서버
。Domain name:lecture.aws.kr.{}
▶{}:DNS Root:DNS Root Server에서 확인
▶kr:Top Level Domain:TLD DNS Server에서 확인
▶aws:도메인:Authoritative DNS Server에서 확인
▶lecture:서브도메인
Root DNS Server
。최상위DNS Server로서 모든최상위 레벨 도메인별TLD DNS Server의Hostname를 가진Zone File을 저장
▶ 전세계에 13개의 논리적 큰범위로 구성
。Local Network의Local DNS name server로부터DNS Query를 전달받은 후Host name의최상위 레벨 도메인( =TLD)에 해당하는TLD DNS Server의IP 주소를DNS Resolver에게 return
ex )host name : google.com에 대한DNS Query를 전달 받은 후.com을 관리하는TLD Server의IP Address를 return.
TLD DNS Server( Top Level Domain )
。.com,.org,.edu,.kr , .uk , .fr같은 기업 , 기관 및 국가별최상위 레벨 도메인에 대한 각각의DNS Server
▶ 해당TLD들은 해당기관에서 관리
ex).kr은KISA에서 관리
。TLD DNS Server는 해당최상위 레벨 도메인의 기관별Authoritative DNS Server의Hostname를 가진DNS Record(Type = NS)를 저장
▶DNS Query의Domain name에 대한Domain을 가지는Authoritative DNS Server의IP 주소를DNS Resolver에게 반환하는 역할을 수행
。최상위 레벨 도메인 : .com을 관리하는TLD Server들은Network Solution에 의해 관리
▶.edu : Educause,.kr : 한국인터넷정보센터
Authoritative DNS Server
。 기관별로 가지는 특정 도메인 (yahoo.com등 )을 담당하는DNS Server로서 실제DNS Record가 저장되는Name Server
▶TLD DNS Server에책임 DNS 서버를 등록 시Client에서DNS Query를 통해 도달 가능
。기관 네트워크내에 속한 모든Host의Hostname-to-IP Mapping정보를 포함하는DNS Record(Type = A)를 저장
▶ 최종적으로DNS Query에 해당하는Host name에 해당하는DNS Record를Client에게 전달하여IP Address를 제공
ex ) 서울시립대의책임 DNS Server는www.uos.ac.kr을 담당
Local DNS name server = default name server = proxy
。DNS 3가지 계층구조에 속하지 않는DNS name Server
。각각의Local Network( ex.residential ISP,company등)에 하나 씩 설치되어Local Network내 모든Host에서DNS Query를 해당Local DNS name server로 전송하도록 설정
▶ 이후 해당DNS name server가DNS Query의Host name에 대한Mapping정보를 가진 경우 해당하는IP Address를 return
▶Mapping정보를 가지지 않는 경우DNS Query를DNS Server 계층으로 전달
。Web Cache와 유사한 역할을 수행
DNS Resolver
。클라이언트와Name Server사이에 위치한서버로서클라이언트 요청에 따라IP주소등의 정보를 확보하는 역할을 수행
▶ 일반적으로ISP에서 관리
。각DNS Resolver에는Root DNS Server들의IP 주소가하드코딩
DNS Query를 처리하는 방식
。어떤Host가Local DNS name server를 통해Host name : www.amazon.com의DNS Query를DNS Server 계층으로 전달하는 경우
0.클라이언트가DNS Resolver에DNS Query를 전달
1.DNS Cache확인
。Host가 최근에 방문한host name의IP 주소를Local DNS name server의캐시에 저장했는지 확인
▶캐시에 없는 경우 다음 방법들을 수행
2-A Iterative Query
。각DNS Query전송 시DNS 계층 서버별로 한번 씩송수신하면서Root DNS Server IP주소->TLD DNS Server IP주소->Authoritative DNS Server IP주소->Domain name에 해당하는 IP주소순서대로 각각IP 주소를 획득 및 접근
1.Local DNS name server가 우선Root DNS Server에DNS Query전달 시.com을 관리하는TLD DNS Server의IP Address를DNS Resolver에게 return
2. 이후Local DNS name server가 해당TLD DNS Server에DNS Query전달 시amazon.com의도메인을 가지는 기관의Authoritative DNS Server의IP Address를DNS Resolver에게 return
3. 이후Local DNS name server가 해당Authoritative DNS Server에DNS Query전달 시www.amazon.com에 대해Mapping된IP Address를 return
4. 최종적으로IP Address를 획득한Local DNS name server는Host에게IP Address를 전달
2-B Recursive Query
。Local DNS name server가Root DNS Server로DNS Query전달 시TLD DNS Server -> Authoritative DNS Server순으로 하위DNS Server에 직접 접근하여IP Address를 획득하여Local DNS name server에게 return.
。Recursive Query의 경우 상위DNS Server일수록Work Load가 더욱 큰 단점이 존재
3Host로응답된IP 주소를 받아서 연결
DNS 캐싱( DNS Caching )
。DNS는 각DNS 구조를 통하여DNS Query가 전달되면서 발생하는Delay를 감소시키기 위해Caching을 사용
。Local DNS name server의 경우 보통 각최상위 도메인별TLD DNS Server의IP Address를Caching하여 차후DNS Query를 수행 시 해당 정보를 참조
▶Root DNS Server를 거치지 않고 바로TLD DNS Server로DNS Query를 전달가능
。보통Authoritative DNS Server에서IP Address를DNS Client에게DNS 레코드를 응답 시TTL를 마킹하여 전달
▶캐싱한IP Address가Outdated되는것을 방지하기위해TTL시점까지만캐싱하도록 설정
DNS 레코드(RR: DNS Resource Record )
。각DNS Server는Domain name을IP Address로mapping하기위한레코드를 저장하며 하나 이상의레코드를 가진DNS Message로DNS Client에게 응답
Domain Zone
。Domain의 정보를 포함하는DNS Record 집합
▶www.practice.kr,lecture.aws.kr등
Zone File
。Domain Zone정보를 저장한DB역할의텍스트 파일
DNS 레코드종류
DNS 레코드 Format:( Name, Value, Type, TTL )
。DNS 레코드는필드를 포함하는 4개의Tuple로 구성
▶Name과Value는Type에 의해 정의됨
DNS 레코드Field 종류
TTL( Time To Leave )
。레코드의 생존기간
▶캐시에서 제거되는 시간을 설정
Type
。DNS 레코드의Type을 지정하여Name과Value를 결정
Type = A
Name = 호스트이름,Value = IP Address
。Host name에 대한IPv4 주소의Mapping을 제공
▶ 주로Authoritative DNS Server에서 사용하는DNS 레코드
Type = NS
Name = 도메인이름,Value = Authoritative DNS Server의 호스트이름
。Domain에 대한 해당 도메인을 관리하는 기관의Authoritative DNS Server의Host name를 제공
▶ 주로TLD DNS Server에서 사용하는DNS 레코드
Type = CNAME
Name = 별칭 호스트이름,Value = 정식 호스트이름
。해당Alias Hostname를 지닌Host에 대한 실제Canonical Hostname를 제공
Type=MX
Name = 메일서버의 별칭 호스트 이름,Value = 메일서버의 정식 호스트이름
。메일서버에서 해당Alias Hostname를 지닌Host에 대한 실제Hostname를 제공
DNS Message Format
。DNS Query와DNS Reply는 동일한메시지 포맷을 사용
- Header Section
identification:
。16bit의식별자로서DNS Query와DNS Reply간 일치를 식별
flag:
。Message가DNS Query인지DNS Reply인지 구분
。Recursive Query의 수행 여부를 표시
。DNS Reply가Authoritative DNS Server로부터의Reply인지 여부를 표시
number
。4개의Number Field로서 다음 4가지Secton의 발생횟수를 지시
- Question Section
。수행할 1개 이상의DNS Query를 정의하는 구간
▶DNS Record의Name과TypeField를 기입
ex )Name = 도메인이름,Type = MX
- Answer Section
。Question Section의DNS Query에 대한DNS 레코드를 정의하는 구간
▶Name과Type의DNS Query를 전달하여 도출된Name,Value,Type,TTL를 포함하는DNS 레코드를 ㅈㅇ의
。단일DNS Query에 대해 여러개의DNS 레코드로 응답할 수 있음
▶Hostname는Load Distribution의 이유로 여러IP Address를 가질 수 있으므로.
- Authority Section
。다른Authoritative DNS Server의DNS 레코드를 포함
- Additional Section
。다른 도움이 되는DNS 레코드를 포함
ex )Type=MX에 대해DNS Query를 하여 특정Authoritative DNS Server의Hostname를 획득 시 부가적인IP Address정보는Additional Section에서 기입
도메인등록
。DNS Registrar의NS 서버에DNS Record를 등록
。도메인 등록 대행( DNS Registrar ) :ICANN에게 인증 및TLD DNS Server의 관리기관과 협의하여도메인 등록의 권한을 지닌 주체
▶AWS Route53이 해당 기능이 존재
DNS DB에DNS Record삽입
。새로 설립된 기관의Web Server에 접근하기위해DNS Record를 추가하는 경우
- 기관 고유의
Authoritative DNS Server구입 및DNS 레코드저장
。서버 Host name과IP Address를Mapping한type = A의DNS 레코드저장
。Mail Server를 추가하는 경우 해당Mail Server에 대한type = MX와type = A의DNS 레코드를 추가
Authoritative DNS Server의Domain name를DNS Registrar에 등록
。Authoritative DNS Server의Domain name과IP Address를DNS Registrar에 제공하여 등록.
ex )networkuptopia.com의 경우DNS Registrar인Network Solutions에 등록한다.
DNS Registrar는 관리하고 있는TLD DNS Server에 해당Authoritative DNS Server의DNS 레코드를 삽입
。Authoritative DNS Server에 대한Type = A,Type = NS의DNS 레코드를TLD DNS Server로 삽입
ex )Type = NS DNS레코드 (networkuptopia.com, dns1.networkuptopia.com, NS) Type = A DNS레코드 (dns1.networkuptopia.com, 212.212.212.1, A)▶
Authoritative DNS Server의Domain name과IP Address를 2개의DNS 레코드에 포함하여TLD DNS Server로 포함