Domain Name System
IP주소와 도메인 네임과 매핑을 어떻게 시킬 것인가?
이 매핑을 시켜주는 것이 DNS입니다.
- 분산 Database
- application-layer protocol (응용 계층 프로토콜)
- 사용자 어플리케이션이 아닌 인터넷의 core function
DNS의 전송계층의 프로토콜로 UDP, 53번 포트를 씁니다.
DNS의 서비스
- Hostname and IP address translation
- 호스트 앨리아싱 으로 복잡한 호스트 이름을 가진 호스트는 하나 이상의 별명을 가질 수 있습니다.
- 메일 서버 앨리아싱 : 메일 서버 호스트 이름에 대한 별칭 호스트 이름 허용
부하분산
- 중복 웹 서버와 같은 여러 중복 서버들 사이에 부하를 분산하기 위해서도 사용 가능
- 클라이언트가 주소 집합으로 매핑되어 있는 호스트 이름에 대한 DNS 질의를 하면, 서버는 IP 주소 집합 전체를 응답
- 이때 각 응답 내에서의 주소 순서를 회전시킴
- 일반적으로 클라이언트는 주소 집합 내의 첫 번째 주소로 요청
- 따라서 DNS 회전은 여러 중복 서버들 사이에 트래픽 분산 효과를 나타냄
Centralize DNS가 아닌 이유 (중앙)
- 하나의 DNS 서버가 고장나면 전체가 중단되기 때문에
- 트래픽 양
- centralize database와 거리문제
- 유지보수
계층에 대한 분석
Client가 www.amazon.com에 에 대한 IP 주소를 찾기 위한 과정
- Client는 .com의 DNS 서버를 찾기 위해 root server에 요청합니다.
- Client는 다시 주소에서 .com의 DNS 서버에게 amazon.com DNS 서버를 요청합니다.
- Client는 다시 amazon.com의 DNS 서버에게 웹서버 주소를 알려달라고 요청합니다.
Local Name Server
각 조직들은 각 조직의 Local Name Server를 가집니다. 이는 "default name server"라고 부르기도 합니다.
로컬 네임 서버의 역할
호스트가 DNS 쿼리를 하게 되면 DNS쿼리는 쿼리는 로컬 DNS server에게 항상 전달됩니다. 이 Local DNS server과 reply를 하게 됩니다.
Root name server
도메인에 대한 IP가 해결되지 않았을 때 하는 것이 루트 네임 서버입니다. 루트 네임 서버가 동작하지 않으면 제대로 동작하지 못하기에 아주 중요한 역할을 하는 것입니다.
ICANN이라는 기관에서 루트 네임 서버를 관리하고 있습니다.
TLD and Authoritative Servers
TLD(Top Level Domain servers)
.com, .org, .net, 과 .uk, .fr, .ca, .kr 등의 국가 도메인에 책임을 지는 것입니다.
Authoritative DNS servers
각각의 조직 및 기관이 소유하고 있는 DNS server입니다. 회사나 대학 등 기관이 관리하는 DNS 서버이며 hostname과 IP mapping의 책임이 존재합니다.
DNS name resolution 예시
1. 반복적인 질의 방법 *
- 제일 먼저 local name server에게 ip주소를 알려달라는 질의를 합니다. 알면 응답, 알지 못하면 root에게 쿼리를 합니다. 루트는 .edu의 TLD서버를 응답해줍니다. 그럼 local DNS는 TLD DNS server에 접근합니다. 그러면 TLD는 책임 DNS server를 응답으로 알려주고 다시 local DNS는 책임 네임 서버에 질의를 하고 이 책임 네입 서버는 해당 .EDU를 응답하고 그럼 local DNS server를 호스트에게 최종적으로 전달합니다. ( 나중에 깔끔하게 요약할 것 )
2. 재귀적 질의
- 로컬 dns 쿼리
- 루트에게 쿼리
- tld dns에게 쿼리
- 책임 네임 서버에게 쿼리
- 책임 서버 > tld 전달
- tld > 루트 전달
- 루트 > 로컬 dns 전달
- 로컬 dns > 호스트에게 전달
DNS : caching and updating records
지연 성능 향상과 DNS 메세지를 줄이기 위해서 DNS 캐싱을 사용합니다. DNS 캐싱은 어떤 네임서버가 매핑에 대한 정보를 획득했다면 그 획득한 정보를 자신의 로컬 메모리에 그 매핑을 캐싱합니다.
캐싱해놓으면 나중에 동일한 질의가 왔을 때 그 캐싱해놓은 Reply를 할 수 있기 때문에 지연을 향상시키고 메세지의 수를 줄일 수 있습니다.
캐싱은 대부분 타임아웃을 가지고 있습니다. 그래서 지정된 시간동안 타임 메모리에 저장했다가 이 시간이 지나면 삭제를 합니다.
DNS records
이 Resoure Records RR이 저장이 되는데 호스트 이름은 ip 주소로 매핑하기 위해 사용됩니다.
RR format : (name, value, type, ttl)
ttl : rr 생존기간. 자원이 캐시에 보관될 수 있는 시간 제한
Type = A
- name is hostname
- value is IP address
Type : NS
- name is domain
- value is IP address of authorative name server for this domain
Type : CNAME
- name is alias name ofr some "canonical" name
- value is canonical name 별칭
Type : MX
- vaule is canonical name of mailserver associated with name
DNS 프로토콜
쿼리와 Reply사용, 이는 동일한 메세지 포맷으로 사용이 됩니다.
헤더와 바디
identification
어떤 호스트가 DNS 쿼리를 여러개를 보낼 때 DNS 서버로부터 Reply가 여러개가 오기 때문에 어느 쿼리의 Reply인지 연결해주기 위한 식별자
flags
첫번째 부분이 쿼리인지 리플라이인지, 나타내는 flags
recursion이 요구되는지, 가능한지, reply가 책임 네임 서버가 포함되어있는지에 대한 flags
DNS에 대한 공격
DDoS attack
루트 네임 서버에게 대량의 트래픽을 발생
Redirect attacks
- Man-in-middle
- DNS poisoning : 도메인에 대한 ip주소를 가짜 ip주소를 매핑시키도록 조작하는 형태
'IT 프로그래밍 > 컴퓨터네트워크' 카테고리의 다른 글
[컴퓨터네트워크] 응용계층 part3-3 (1) | 2024.10.12 |
---|---|
[컴퓨터네트워크] video streaming and content 분산 프로그램 (7) | 2024.10.08 |
[컴퓨터네트워크] part3-1 이메일 포맷 (2) | 2024.10.06 |
[컴퓨터네트워크] part2.4 state user (0) | 2024.10.06 |
[컴퓨터네트워크] part2.3 웹 (0) | 2024.10.06 |