사전적인 정의 부터 보자.
도메인 네임 시스템(Domain Name System, DNS)은 호스트의 도메인 이름을 호스트의 네트워크 주소로 바꾸거나 그 반대의 변환을 수행할 수 있도록 하기 위해 개발되었다.
위키백과에서는 DNS를 이렇게 설명하고 있다.
예를 들면 우리가 자주 접하는 naver.com , google.com 모두 DNS을 가진 DN(Domain Name)이라고 할 수 있다.
이들은 사실 문자열의 탈을 쓴 IP라고 볼 수 있다.
cmd에서 구글과 naver의 DN을 적어 ping을 확인해 보자
보다시피 google.com 의 IP 주소는 172.217.161.174
naver.com의 IP 주소는 210.89.164.90 각각 확인할 수 있다.
(naver.com에서는 ping을 받아오는걸 실패했는데, 네이버에서 막아놨다고 한다.)
이렇게 DN을 통해 자기 컴퓨터가 사이트의 어느 IP 주소로 연결 되는지 확인 할 수 있다. (자신과 가까운 DNS서버를 통해 IP주소를 받아온다.)
아래는 그림은 DNS가 어떻게 작동하는지 보여준다.
1.웹 브라우저에 www.naver.com을 입력하면 먼저 Local DNS에게 "www.naver.com"이라는 hostname"에 대한 IP 주소를 질의하여 Local DNS에 없으면 다른 DNS name 서버 정보를 받음(Root DNS 정보 전달 받음)
Root DNS란?
Root DNS (루트 네임서버) 는 인터넷의 도메인 네임 시스템의 루트 존이다. 루트 존의 레코드의 요청에 직접 응답하고 적절한 최상위 도메인에 대해 권한이 있는 네임 서버 목록을 반환함으로써 다른 요청에 응답한다. 전세계에 961개의 루트 DNS가 운영되고 있다.
2.Root DNS 서버에 "www.naver.com" 질의
3.Root DNS 서버로 부터 "com 도메인"을 관리하는 TLD (Top-Level Domain) 이름 서버 정보 전달 받음
여기서 TLD는 .com을 관리하는 서버를 칭함
4.TLD에 "www.naver.com" 질의
5.TLD에서 "name.com" 관리하는 DNS 정보 전달
6."naver.com" 도메인을 관리하는 DNS 서버에 "www.naver.com" 호스트네임에 대한 IP 주소 질의
7.Local DNS 서버에게 "응! www.naver.com에 대한 IP 주소는 222.122.195.6 응답
8.Local DNS는 www.naver.com에 대한 IP 주소를 캐싱을 하고 IP 주소 정보 전달
최상위 ICANN 아래에 REGISTRY, NIC이 있고 REGISTRY 아래에 우리가 흔이 보는 gTLD 그리고 new gTLD가 있고 NIC아래에는 공공사이트에서 쓰는 ccTLD 도메인 주소가 있다.
여담:
velog.io 와 github.io (깃허브 블로그)는 영국령 인도양 지역의 인터넷 국가 코드 최상위 도메인이다. io 도메인을 쓰면 기존 com, net이 점유하고 있던 도메인들을 벗어나 새롭게 도메인을 확보할 수 있다고 한다. 개별국가 NIC이 관리하고 주로 회사들이 이용해서 비싸다고...