도메인 이름 등록 시스템 구조
Registrant(등록자)
사용자는 93.184.216.34 IP 주소를 가진 컴퓨터를 웹서버로 사용하기 위해 "example.com"이라는 도메인 주소를 쓰려고 한다.
ICANN
DNS system의 최상위에는 ICANN이라는 비영리 단체가 있다. 전 세계에 있는 ip주소를 관리하고 루트 네임서버들에 대한 관리자 역할을 한다. ICANN은 인터넷이라고 하는 체계의 관리자 역할을 하는 거대한 비영리 단체이다.
전 세계에 a.root-servers.net ~ m.root-server.net 총 13개의 루트네임서버가 흩어져있고, 각각의 컴퓨터는 다시 쪼개져서 수백 대의 루트 네임 서버로서 동작하고 있다.
Root name server는 전 세계에 있는 Top-level DNS 의 주소를 기억한다.
"com NS a.gtld-servers.net" 의 의미는 "com 이라고 하는 Top-lever 도메인의 네임서버는 a.gtld-servers.net 이라는 주소에 존재한다."이다. 이러한 내용이 루트 네임 서버에 세팅되어있다. 이러한 정보로 Root 네임서버는 .com을 누가(Top-level 도메인 서버) 관리하고 있는지 알게 된다.
Registry(등록소)
ICANN 하위에 .com, .net, .co.kr, .kr 과 같은 Top-lervel 도메인 네임 서버를 관리하는 기관이다.
Registrar(등록대행자)
등록자의 도메인 등록 작업을 대행해준다.
도메인 네임 등록 프로세스
step 1.
운영자가 실제로 자신의 도메인을 운영하기 위해서는 등록소의 Top-level 도메인에 운영자의 ip주소를 등록할 수는 없고, 운영자는 스스로 서버 1대를 구비해서 네임 서버를 설치해야 한다.
네임 서버를 설치한 컴퓨터가 "a.iana-servers.net"이라고 간주해보자. 이 네임 서버에 운영자의 도메인을 세팅하면 된다.
네임 서버를 직접 구축할 수도 있지만 대부분 등록대행자(ex, 카페24, github pages)가 네임 서버를 제공하는 경우가 많고, 무료로 제공하는 네임 서버를 이용할 수도 있다.
step 2.
서버 운영자는 "example.com"이라는 도메인을 쓰고 싶다고, 등록대행자에게 수수료를 지불하고 요청한다. 등록대행자는 등록소에 도메인을 등록하게 된다.
Root 네임 서버가 Top-level DNS를 알고 있는 것처럼 Top-level DNS도 운영자가 사용할 네임서버가 누구인지 알고 있어야 한다.
"exapm.com NS a.iana-servers.net" (example.com 이라는 네임서버는 a.iana-servers.net 이다.) 이라는 정보를 등록대행자에게 알려준다.
step 3. 등록대행자는 등록소에 "exapm.com NS a.iana-servers.net" 정보를 알려주다.
step 4. 등록소는 자신이 관리하는 Top-level 도메인에 "example.com의 네임서버가 a.iana-servers.net이다"라고 기록해둔다.
step 5.
example.com.을 관리할 네임서버(a.iana-servers.net)에게 "example.com의 ip주소는 93.184.216.34 이다." 라는 것을 세팅해야한다.
네임서버에 접속해서 "example.com A 93.184.216.34 "라고 알려준다.
이제 이 네임서버(a.iana-servers.net)는 example.com의 IP주소를 알게된다.
example.com 이라고하는 구체적인 ip주소를 네임서버가 기억하고 있기 때문에, NS(네임서버)라고 쓰지않고, '최종적인 ip주소'라는 뜻에서 'A' 라고 쓴다.
이러한 'NS', 'A'를 '레코드 타입'이라고 하며, 하나하나의 정보를 '레코드'라고 한다.
클라이언트 컴퓨터에서 도메인에 접속하는 프로세스
step 1.
클라이언트 컴퓨터는 인터넷을 연결하는 순간 ISP(통신사)에서 지정한 DNS 서버의 ip 가 자동으로 세팅되고 이 DNS 서버를 이용해서 자신이 필요한 도메인의 ip를 알아낼 수 있게 된다.
전 세계에 있는 모든 도메인 서버는 Root name server 들의 주소에 대한 정보를 기본적으로 반드시 알고 있다.
따라서 DNS 서버는 지금 ".(루트)의 네임서버가 a.root-servers.net이다" 라는 정보를 알고 있다.
step 2.
example.com 이라고 웹브라우저에 입력하면, 컴퓨터에 설정되어있는 DNS Server(168.126.63.1)에게 example.com 의 ip 주소를 묻게 된다.
step 3. DNS 서버는 루트 네임 서버에게 물어본다.
step 4. 루트 네임서버는 example.com 의 ip 주소를 모르므로, .com을 관리하는 'a.gtld-servers.net'을 알려준다.
step 5. DNS 서버는 a.gtld-servers.net 서버에게 example.com 의 ip 주소를 다시 묻는다.
step 6. a.gtld-servers.net 서버는 ip주소를 모르므로, example.com의 ip주소를 알고있는 네임서버 'a.iana-servers.net' 을 알려준다.
step 7. DNS 서버가 a.iana-servers.net 서버에 접속을 시도하면, 이 네임서버에는 example.com의 a 레코드 주소가 93.184.216.34다 라는 것이 기록되어있기 때문에, 해당 ip주소를 DNS 서버에게 응답해준다.
step 8. DNS 서버는 알아낸 ip주소를 클라이언트 컴퓨터에 알려주게 된다.
step 9. 클라이언트의 컴퓨터는 실제로 93.184.216.34 라는 ip에 해당되는 컴퓨터에 접속해서 인터넷이 동작하게 된다.
'코딩공부 > WEB2 - Domain Name System' 카테고리의 다른 글
[9] DNS record와 CNAME 레코드의 이해 (0) | 2019.09.16 |
---|---|
[8] 나의 도메인네임 갖기 - freenom.com (0) | 2019.09.16 |
[7] nslookup (0) | 2019.09.16 |
[5] 도메인 이름의 구조 (0) | 2019.09.15 |
[1] IP 주소와 hosts (1) | 2019.09.14 |