이 글은 생활코딩 WEB2 - Domain Name System을 통해 습득한 내용을 기반으로 하고 있습니다.

들어가기에 앞서

  • Host란 인터넷에 연결된 컴퓨터 각각 한 대
  • IP AddressHost간의 통신에 필요한 주소
  • IP Address를 하나하나 기억하는 것이 어렵기 때문에 개발된 것이 DNS(Domain Name System)
    • DNS Server에 수많은 IP 주소와 도메인을 저장
    • 웹에서 도메인(www.example.com)을 입력하면 DNS Server에서 도메인의 IP주소(197.0.2.1)을 알려주면 그 IP 주소를 토대로 접속

IP Address와 Hosts의 개념

  2대의 컴퓨터 간의 인터넷 통신을 위해서는 IP 주소가 반드시 필요하다. 컴퓨터 외에도 인터넷이 연결된 것를 Host라고 부른다.   이 때 모든 IP 주소를 기억할 수 없으므로 운영체제마다 hosts라는 파일이 존재한다. 이 파일에 IP와 도메인 이름을 저장해두면, DNS를 사용하지 않고도 다른 Host에 접근할 수 있다.

Hosts 파일을 설정하는 방법

Hosts 위키피디아에 OS별 경로가 나와있다.

IP 주소            도메인 이름
127.0.0.1         localhost
255.255.255.255   broadcasthost
::1               localhost

도메인 이름과 보안

  hosts 파일을 변조해 평소 사용하던 도메인 이름을 입력할 경우, 기존과 다른 사이트로 접속이 가능하다. 이렇게 변조가 가능한 hosts 파일은 보안에 취약하기 때문에 변조가 되지 않도록 해야한다.

  해킹 사례 중 Fishing이라고 불리는 것이 있다. 이는 도메인 이름을 변조하여 은행 사이트와 똑같이 만든 사이트로 접속을 유도해 개인정보를 빼내는 일이다. 이러한 것을 막기 위해 https가 사용된다.

DNS의 태동

before DNS

  과거에는 SRI(Stanford Research Institude)에서 전 세계의 hosts 파일을 관리했었다. 이 기관의 hosts 파일을 덮어쓰기한 후, 내 컴퓨터에서 도메인 이름오로 접속하는 방식이었다.   처음에는 좋은 방식이었지만, 인터넷이 커지면서 점점 문제점이 발견되었다. hosts 파일을 다운로드하지 않으면 추가된 호스트 이름을 사용할 수 없었고 SRI에서 수작업으로 IP와 도메인 이름을 갱신하였으므로 시간과 비용이 들었다.

After DNS

after dns

  DNS에게 “이 IP는 OO이라는 도메인 이름을 가지고 싶습니다”라고 요청하면 DNS에 갱신된 내용이 저장된다. 물론 자동화되어 있다.   이 후, 자신의 컴퓨터에서 WiFi 혹은 인터넷이 연결되면 DNS Server에 있는 IP 주소가 DHCP(Dynamic Host Configuration Protocol, 동적 호스트 구성 프로토콜)를 통해 셋팅된다.   웹 브라우저에서 도메인 이름을 입력하면 먼저 로컬의 hosts 파일을 탐색하고, 없다면 DNS Server에 도메인 이름의 IP를 요청해서 받는다.

Public DNS의 사용

  DNS Server의 IP나 도메인을 알고 있어야 Server에 접근이 가능하다. 이런 정보는 ISP(Internet Service Provider: KT, SK 브로드밴드, SKT 등)가 자동으로 셋팅해준다.   속도가 느리거나 보안, Privacy 이슈로 통신사가 지정한 DNS Server를 사용하고 싶지 않을수도 있다. 이 때 사용할 수 있는 것이 Public DNS Server이다.

  구글에서 Public DNS Server를 검색하면 다양한 곳에서 제공하는 DNS Server를 볼 수 있다.

DNS의 내부 원리

DNS Server

  DNS Server는 IP 주소와 도메인 이름을 기억하는 기능과 Client가 이름을 물어보면 IP를 알려주는 기능을 갖고 있다.

DNS server

  맨 뒤에는 .이 생략되어 있다. 각각의 부분들은 담당하는 Server Computer가 개별적으로 존재한다.   RootTop-level을 담당하는 Server의 목록과 IP를 알고 있으며, Top-levelSecond-level, Second-levelsub의 목록과 IP를 알고 있다. 즉, 상위 목록이 직속 하위 목록을 알고 있다는 것이다.

  Root NameServer의 IP 주소에게 blog.example.com을 물어보면, Root NameServer는 이를 모르기 때문에 Top-level에게 물어본다. 그러면 Top-level은 Second-level에게 물어보고 Second-level은 blog.example.com을 담당하는 sub DNS Server에게 물어보게 되면서, sub에서 IP 주소를 알려준다.

  위 예시처럼 DNS Server는 계층적인 구조를 가지고 있다.

Domain 구조

  • 인터넷상에서 사용되는 Domain은 전 세계적으로 고유하게 존재하는 이름이다.
  • 정해진 규칙 및 체계에 따라야하며, 임의로 생성되거나 변경될 수 없다.
  • 모든 Domain은 .(dot) 또는 루트(root)라 불리는 Domain 아래에 역트리(Inverted Tree)구조로 계층적 구성을 이루고 있다.
  • 루트 도메인 바로 아래 단계를 1단계 도메인 또는 최상위 도메인(TLD, Top Level Domain) 이라고 부르며, 그 아래 단계를 2단계 도메인(SLD, Second Level Domain)이라고 한다.

도메인 이름 등록 과정과 원리

DNS register

register

  • 관계 국제 인터넷주소 관리기구(Internet Corporation for Assigned Names and Numbers, ICANN) - 등록소(Registry) - 등록대행자(Registrar) - 등록자(Registrant)
  • A, NS는 Record Type을 뜻한다. A는 최종적인 IP 주소이며, NS는 Name Server를 뜻한다.

Reference