DNS(도메인 네임 시스템)란?

Domain Name System의 약자. www.example.com 같은 도메인 이름과 통신에 사용하는 IP 주소를 대응시키는, 전 세계의 서버에서 분산 관리되는 구조.

일본어 명칭: DNS

DNS(도메인 네임 시스템)은(는) 네트워크 기초, 클라우드와 컨테이너의 기초 등 2개 분야의 연습 문제 9개에 나와요.

분야: 네트워크 기초

이름 해석의 흐름

단말은 인터넷 서비스 제공자나 사내 등에 있는 풀 서비스 리졸버(캐시 DNS 서버)에 질의합니다. 리졸버는 캐시에 답이 없으면 루트 서버, .com 등의 TLD 서버, 그 도메인의 권한 있는 DNS 서버 순서로 질의하여 답을 얻고 단말에 돌려줍니다. 각 서버는 '다음은 이 서버에 물어보세요'라고 알려 줄 뿐이므로, 어느 서버도 전체 데이터를 가질 필요가 없습니다.

캐시와 TTL

리졸버는 얻은 답을 레코드에 붙은 유효 기간(TTL) 동안 캐시하고, 같은 질의에는 바로 답합니다. 이로써 질의 수와 대기 시간을 줄일 수 있지만, DNS 설정을 바꿔도 오래된 답의 캐시가 만료될 때까지는 이전 값이 사용될 수 있습니다. 서버를 이전하기 전에 TTL을 짧게 해 두는 것은 이 때문입니다.

주요 레코드와 통신 방식

레코드에는 IPv4 주소를 나타내는 A, IPv6 주소를 나타내는 AAAA, 별칭을 나타내는 CNAME, 메일 배송처를 나타내는 MX, 그 도메인의 권한 있는 DNS 서버를 나타내는 NS 등이 있습니다. 질의에는 주로 UDP 53번 포트가 사용되며, 응답이 클 때 등에는 TCP도 사용됩니다. 엿보기나 가짜 응답에 대한 대책으로 DNSSEC에 의한 서명이나 DNS over HTTPS(DoH) 등의 암호화도 사용되고 있습니다.

도전해 보기: DNS(도메인 네임 시스템) 관련 문제

RTT(왕복 시간)가 100 ms인 웹 서버에 HTTPS(TCP 위의 TLS 1.3)로 새로 접속하여, 첫 요청을 보내고 응답을 받기 시작할 때까지 걸리는 시간에 가장 가까운 것은? DNS 이름 해석은 끝났으며, 서버의 처리 시간과 데이터 전송 시간은 무시한다.

  1. A약 100 ms
  2. B약 300 ms
  3. C약 200 ms
정답과 해설 보기

정답: B. 약 300 ms

먼저 TCP의 3-way 핸드셰이크에 1왕복이 걸립니다(클라이언트는 마지막 ACK와 함께 TLS의 첫 메시지를 보낼 수 있습니다). 다음으로 TLS 1.3 핸드셰이크에 1왕복, 그 후 HTTP 요청과 응답에 1왕복이 걸려 합계 3왕복, 3 × 100 = 300 ms입니다. TLS 1.2에서는 키 교환에 2왕복이 걸리므로 4왕복인 400 ms가 됩니다. 이 대기 시간은 거리로 정해지는 RTT의 횟수로 결정되므로 회선의 대역폭을 늘려도 짧아지지 않습니다. HTTP/3에서 사용되는 QUIC은 전송 계층과 암호의 핸드셰이크를 1왕복으로 합치고, 재접속할 때는 첫 왕복에서 데이터를 보내는 방법(0-RTT)도 제공합니다.

DNS의 주된 역할로 올바른 것은?

  1. AIP 주소를 바탕으로 같은 네트워크에 있는 기기의 MAC 주소를 알아낸다
  2. Bwww.example.com 같은 도메인 이름을 통신에 사용하는 IP 주소로 변환한다(이름 해석)
  3. C통신을 암호화하고 접속한 웹사이트가 진짜인지 확인한다
정답과 해설 보기

정답: B. www.example.com 같은 도메인 이름을 통신에 사용하는 IP 주소로 변환한다(이름 해석)

사람이 기억하기 쉬운 도메인 이름과 통신에 사용하는 IP 주소를 대응시키는 구조가 DNS(Domain Name System)입니다. 브라우저에서 URL을 열면 단말은 먼저 DNS에 질의하여 서버의 IP 주소를 얻은 뒤 그 주소로 접속합니다. DNS의 데이터는 한 대의 서버에 모여 있는 것이 아니라 도메인 이름의 계층별로 나뉘어 전 세계의 서버에서 분산 관리됩니다. 질의에는 주로 UDP 53번 포트가 사용되며, 응답이 클 때 등에는 TCP도 사용됩니다.

자주 묻는 질문

DNS는 몇 번 포트를 사용하나요?

표준으로는 53번 포트입니다. 일반적인 질의는 주로 UDP로 하며, 응답이 큰 경우나 서버 사이에서 존 데이터를 전송하는 경우 등에는 TCP도 사용합니다.

DNS 설정을 바꿨는데 바로 반영되지 않는 이유는 무엇인가요?

리졸버나 단말이 이전 답을 레코드의 TTL 동안 캐시하고 있기 때문입니다. 캐시가 만료되어 새로 다시 질의할 때까지는 오래된 주소가 사용될 수 있습니다.

해설 속 DNS(도메인 네임 시스템)

DNS(도메인 네임 시스템)이(가) 나오는 문제 (9)

  1. RTT(왕복 시간)가 100 ms인 웹 서버에 HTTPS(TCP 위의 TLS 1.3)로 새로 접속하여, 첫 요청을 보내고 응답을 받기 시작할 때까지 걸리는 시간에 가장 가까운 것은? DNS 이름 해석은 끝났으며, 서버의 처리 시간과 데이터 전송 시간은 무시한다.
  2. DNS의 주된 역할로 올바른 것은?
  3. 캐시에 아무것도 들어 있지 않은 풀 서비스 리졸버(캐시 DNS 서버)가 www.example.com의 IP 주소를 알아낼 때 질의하는 순서로 올바른 것은?
  4. TCP/IP의 4계층 모델에서 TCP와 UDP가 속하는 계층은?
  5. ARP의 역할로 올바른 것은?
  6. UDP의 특징으로 올바른 것은?
  7. 프로토콜과 그 서버가 표준으로 사용하는 포트 번호의 조합으로 올바른 것은?
  8. DHCP로 단말이 IP 주소를 얻을 때의 메시지 순서로 올바른 것은?
  9. Kubernetes에서 Pod는 다시 만들어질 때마다 IP 주소가 바뀐다. 다른 애플리케이션이 라벨로 고른 여러 Pod에, 바뀌지 않는 이름과 주소로 접속하여 부하를 분산할 수 있게 하는 리소스는?

관련 용어

HTTP(하이퍼텍스트 전송 프로토콜) 포트 번호(Port Number) DHCP TLS 3-way 핸드셰이크(Three-way Handshake) OSI 참조 모델(OSI Reference Model) ARP(주소 결정 프로토콜) MAC 주소(MAC Address) SSH 서브넷 마스크(Subnet Mask)

용어집으로 돌아가기