DNS(Domain Name System) Server
in Communication on Network
DNS(Domain Name System)는 사람이 읽을 수 있는 도메인 이름(예: www.google.com)을
IP 주소로 변환하는 역할을 한다.
IP 주소로 접속하기 위해서는 모든 서버의 IP를 외우고 있어야 한다.
하지만 도메인 이름을 사용함으로서 암기가 원활해졌고, DNS는 도메인 이름으로 실제 서버의 IP를 찾기위해 사용된다..
DNS 서버 종류
- Caching name servers
- Recursive name servers
- Root name servers
- TLD name servers
- Authoritative name servers
Caching/Recursive
Caching/Recursive name server는 ISP나 local network에 의해 제공된다.
이 두 서버는 아래와 같이 동작한다.
- 처음으로 한 유저가 “www.google.com” 의 IP를 요구한다.
- Recursive 서버가 DNS 절차를 모두 거쳐 IP를 보내준다.
- 다른 유저가 똑같이 구글의 IP를 요구한다.
- Caching 서버에 cache된 이전 요청의 답을 보낸다
위 과정을 통해서 전체 look-up과정을 줄일 수 있다.
DNS 절차
- User가 Caching/recursive 서버에게 IP 주소 요청
- Caching 되어 있다면 바로 응답 아닐 경우 아래 절차 진행
- Recursive 서버가 Root DNS 서버에게 IP 주소를 요청
- Root DNS 서버가 Top Level DNS 서버의 IP 주소 응답
- Recursive 서버가 Top Level DNS 서버에게 IP 주소를 요청
- Top Level DNS 서버가 Authoritative name 서버의 IP 주소 응답
- Recursive 서버가 Authoritative name 서버에게 IP 주소를 요청
- Authoritative name 서버가 IP 주소 응답
DNS Look-up (TCP)
DNS request는 UDP를 사용한다. 하지만 아래는 TCP DNS look-up 과정이다.
- User가 Caching/Recursive Name server에 53번 포트로 SYN 패킷 전송
- SYN-ACK와 ACK를 보내며 3 way hand shake 절차 진행(Connection Established)
- User가 Request 전송 및 Caching/Recursive Name server ACK 전송(여기까지 5 Packets)
- Caching/Recursive Name server가 Root name 서버에 3 hand-shake 절차(3 Packets)
- C/R Name 서버와 Root 서버는 REQ, REQ-ACK, RES, RES-ACK(4 Packets)
- C/R Name 서버와 Root 서버 연결 해제(4 way handshake, 4 Packets)
- 나머지 서버(TLD, Authoritative)와 각 각 11 Packets를 교환하며 IP 확인
결국 최소 5 + 11 + 11 + 11 = 38 패킷 교환
DNS Look-up (UDP)
- User가 C/R 서버에 Req 1 패킷 전송
- C/R 서버가 Root 서버에 Req 전송 및 Res 수신
- 나머지 서버 동일
총 7 패킷 사용
이런 패킷 차이 때문에 DNS look-up 과정에서는 UDP를 사용한다.
하지만 오류가 났을 때는 어떻게 할까?
그냥 다시 보내면 된다.