컴퓨터 과학(CS)

네트워크 DNS

마달랭 2024. 10. 8. 00:10

개요

DNS(Domain Name System)는 인터넷에서 도메인 이름을 IP 주소로 변환해 주는 시스템이다.

쉽게 말해 사용자가 웹사이트에 접속하려고 할 때, 도메인 이름(예: www.example.com)을 입력하면 이 이름을 해당하는 IP 주소(예: 192.168.1.1)로 변환해 주는 역할을한다.

를 통해 사용자는 복잡한 숫자 형태의 IP 주소를 기억할 필요 없이 알아보기 쉬운 도메인 이름만으로 웹사이트에 접속할 수있다.

 

DNS는 인터넷이 원활하게 작동하도록 해 주는 핵심 시스템이다. 웹사이트를 방문할 때마다 수십 번씩 DNS 요청이 일어나며, 그 덕분에 우리는 복잡한 IP 주소 대신 익숙한 도메인 이름만 기억하면 되는 편리함을 누리고 있다.

 

 

DNS의 역할

  • 도메인 이름을 쉽게 기억할 수 있도록 사용하고, DNS는 이 도메인 이름을 해당 IP 주소로 변환해준다.
  • 모든 인터넷 장치는 IP 주소로 통신하기 때문에 이 과정이 필수적이다.
  • DNS는 중앙 서버 하나에 의존하지 않는 전 세계에 분산된 서버들로 구성된 분산 시스템이다.
  • 도메인 이름은 루트 도메인, 최상위 도메인, 2차 도메인 등 계층적으로 구성되어 있다.
  • 예를 들어 http://www.example.com에서 com은 최상위 도메인, example은 2차 도메인, www는 서브 도메인이다.

 

로컬 DNS 서버

사용자가 인터넷에서 도메인 이름을 입력할 때 해당 도메인 이름을 IP 주소로 변환하는 역할을 하는 서버

일반적으로 사용자의 인터넷 서비스 제공업체(ISP) 또는 조직 내부에 위치한 DNS 서버를 의미한다.

이 서버는 DNS 쿼리를 처리하고, 캐싱 기능을 통해 사용자에게 빠르게 응답할 수 있도록 도와준다.

 

  1. 사용자가 웹사이트에 접속하려고 브라우저에 도메인 이름(예: http://www.example.com)을 입력
  2. 로컬 DNS 서버는 자신의 캐시에서 해당 도메인 이름의 IP 주소가 있는지 확인
  3. 만약 최근에 동일한 도메인에 대한 요청을 처리한 적이 있다면, 캐시된 IP 주소를 사용자에게 반환
  4. 캐시에 해당 도메인의 정보가 없다면, 다른 DNS 서버 (루트 서버, TLD 서버, 권한 있는 서버 등)에 질의를 보냄
  5. 로컬 DNS 서버는 최종적으로 권한 있는 DNS 서버로부터 해당 도메인의 IP 주소를 얻어옴
  6. 사용자는 받은 IP 주소를 통해 해당 웹사이트에 접속할 수 있게 된다.

 

루트 DNS 서버

DNS의 최상위 계층에 위치한 서버로, 도메인 이름을 IP 주소로 변환하는 과정에서 첫 번째로 참조되는 서버

전 세계적으로 13개의 논리적 서버 그룹이 존재한다.

이 서버들은 전 세계 여러 위치에 물리적으로 분산되어 있으며, DNS 질의를 처리하는데 중요한 역할을 한다.

  1. 사용자가 http://www.example.com과 같은 도메인 이름을 웹 브라우저에 입력하면, 먼저 로컬 DNS 서버로 전달
  2. 로컬 DNS 서버가 해당 도메인에 대한 정보를 가지고 있지 않으면 루트 DNS 서버로 요청을 보냄
  3. 요청받은 도메인의 최상위 도메인(TLD)을 확인한 후, 해당 TLD 서버의 위치를 로컬 DNS 서버에 반환
  4. 로컬 DNS 서버는 루트 DNS 서버로부터 받은 TLD 서버의 정보를 사용해 해당 TLD 서버에 다시 질의를 보냄
  5. TLD 서버는 해당 도메인에 대한 권한 있는 DNS 서버에서 최종적으로 IP 주소를 반환

 

TLD 서버

DNS에서 최상위 도메인(TLD)에 대한 정보를 관리하는 DNS 서버

최상위 도메인은 .com, .org, .net 같은 일반적인 TLD(gTLD)와, .kr, .jp, .us 같은 국가 코드 TLD(ccTLD)로 나뉜다.

루트 DNS 서버에서 요청받은 최상위 도메인에 대해 하위 도메인의 권한 있는 DNS 서버를 알려주는 역할을 한다.

  1. 사용자가 http://www.example.com과 같은 도메인에 접속하려고 할 때, 이 요청은 먼저 로컬 DNS 서버로 전달
  2. 로컬 DNS 서버는 루트 DNS 서버에 질의를 보내 .com TLD 서버의 위치를 확인
  3. 로컬 DNS 서버는 루트 DNS 서버로부터 받은 .com TLD 서버의 정보를 바탕으로 다시 TLD 서버에 질의
  4. 이 과정에서 TLD 서버는 example.com 도메인을 관리하는 권한 있는 DNS 서버의 위치를 반환
  5. 로컬 DNS 서버는 TLD 서버에서 받은 권한 있는 DNS 서버에 질의하여, 해당 도메인의 최종 IP 주소를 받아온다.
  6. 로컬 DNS 서버는 이 정보를 사용자에게 반환하고, 사용자는 이 IP 주소를 사용해 웹사이트에 접속

 

DNS 작동 과정

  1. 사용자가 웹 브라우저에 도메인 이름을 입력하면, 먼저 로컬 DNS 캐시를 확인한다.
  2. 최근에 방문한 사이트라면, 로컬에 캐시된 정보를 사용하여 IP 주소를 바로 반환해 준다.
  3. 캐시에 없을 경우, 로컬 DNS 서버에 전달된다.
  4. 로컬 DNS 서버가 해당 도메인의 IP 주소를 모르거나 캐시가 만료되었다면, 루트 DNS 서버에 전달된다.
  5. 루트 서버는 해당 도메인의 최상위 도메인(예: .com, .net)의 주소를 반환한다.
  6. TLD 서버는 해당 도메인의 2차 DNS 서버의 IP 주소를 반환한다.
  7. 최종적으로 2차 DNS 서버가 해당 도메인의 정확한 IP 주소를 반환, 이 주소를 사용해 사용자는 웹사이트에 접속한다.

 

DNS의 중요 개념

레코드 : 도메인 이름과 관련된 다양한 정보를 저장하는 데이터 단위

  • A 레코드: 도메인 이름을 IPv4 주소로 변환해 주는 DNS 레코드
  • 예시: http://www.example.com → 93.184.216.34

 

  • AAAA 레코드: 도메인 이름을 IPv6 주소로 변환해 주는 레코드
  • 예시: http://www.example.com → 2001:0db8:85a3:0000:0000:8a2e:0370:7334

 

  • CNAME 레코드: 하나의 도메인 이름을 다른 도메인 이름에 연결할 때 사용하는 레코드
  • 예시: blog.example.com → http://www.example.com

 

  • MX 레코드: 이메일 서버를 지정하는 레코드
  • 예시: example.com → mail.example.com

 

  • NS 레코드: 해당 도메인을 관리하는 네임서버를 나타내는 레코드
  • 예시: example.com → ns1.example.com

 

  • PTR 레코드: IP 주소를 도메인 이름으로 변환해 주는 레코드(역방향 DNS).
  • 예시: 93.184.216.34 → http://www.example.com

 

DNS의 문제점

DNS가 본래 보안을 염두에 두고 설계되지 않았기 때문에 보안, 성능, 프라이버시 측면에서 문제점이 있다.

 

  • DNS 스푸핑과 같이 공격자가 가짜 DNS 응답을 주입해 사용자를 악성 사이트로 유도하는 공격이 있다.
  • DNS 캐시 포이즈닝과 같이 DNS 서버의 캐시에 잘못된 정보를 삽입해, 이후 동일한 도메인에 대한 요청을 받을 때 가짜 IP 주소를 반환하게 만드는 공격도 있다.
  • DNS 요청은 기본적으로 암호화되지 않은 형태로 전송되므로, 네트워크 상의 제3자가 쉽게 요청 내용을 가로챌 수도 있다.
  • DNS 요청 자체는 어떤 웹사이트에 접속하는지 직접적으로 나타내기 때문에, 사용자의 브라우징 정보가 타사에 의해 수집되거나 추적될 수 있다.

 

따라서 DNS에 디지털 서명을 추가하여, DNS 응답이 변조되지 않았음을 검증할 수 있도록 도와주는 DNSSEC나

DNS 요청을 암호화하여 전송하는 프로토콜인 DoH와 DoT등을 통해 보안, 프라이버시를 강화할 수 있다.

 

728x90

'컴퓨터 과학(CS)' 카테고리의 다른 글

네트워크 HTTPS  (1) 2024.10.16
네트워크 기기  (5) 2024.10.09
네트워크 대역폭  (3) 2024.09.30
메모리 관리 페이징  (0) 2024.09.12
프로세스 (process)  (0) 2024.08.28