들어가며
지난번에는 인터넷에 대해 알아보았다. 이번에는 인터넷 대작전 2번째. DNS가 무엇인지 살펴보려고 한다.
DNS라는 이름을 들어본 적이 없어도, 우리는 이미 DNS를 정말 많이 이용하고 있다. 아마 하루에도 수십 번씩 이용할 것이다. 이렇게나 많이 이용하는 DNS는 무엇이길래 우리의 친구가 되었나.
IP
DNS를 알기 위해서는, 먼저 IP에 대해 조금 알아보고 가야 한다.
인터넷 발명 초기에는 인터넷을 통해 소통하는 방식이 정해져 있지 않았다.
이런 문제를 해결한 사람이 Vint Cerf와 Bob Kahn라는 분들이다. 인터넷의 아버지라 불리고 있다.
- Vint Cerf & Bob Kahn의 젊을 때 사진
이들이 만든 것이 바로 IP(Internet Protocol)이다. IP를 통해 인터넷끼리의 소통을 가능하게 만들었다.
그러면 IP가 무엇이길래 소통이 가능해졌을까?
IP가 소통하는 방식
IP는 모든 인터넷 기기에 고유 번호를 부여하는 것을 말한다. 이 번호는 지도상의 주소와 같은 역할을 한다.
우리가 우편을 보낼 때 목적지(상대방의 주소)를 알아야 제대로 보낼 수 있는 것처럼,
A 컴퓨터로 B 컴퓨터와 소통하기 위해서는 B 컴퓨터의 주소를 알아야 한다. 이 역할을 IP가 해주는 것이다.
IP는 인터넷 통신 중 가장 중요한 프로토콜 중 하나이다.
- IP를 통한 소통(컴퓨터끼리 소통을 할 때, 나의 주소도 함께 보내 답장을 받을 수 있게 한다.)
IPv4 & IPv6
IP는 우리가 흔히 볼 수 있는 모습을 하고 있다. 172.111.11.120 이런 숫자 구성을 흔히 봤을 것이다. 네이버의 ‘내 ip’ 라고 검색하면 바로 알 수 있다.
이 숫자 체계는 앞에는 지역, 뒤에는 네트워크와 기기를 표현한 것이다.
- IP 체계
위 숫자 체계는 IPv4로, 80년대 채택된 방식이다. 위 숫자로는 40억 개의 고유 주소를 만들 수 있는데, 현재로는 40억 개로는 부족하여 IPv6를 새로 만들었다.
IPv6 숫자 체계로는 340 언데실리언 이상의 고유 번호를 부여할 수 있다고 한다. 언데실리언이 어떤 단위인지 찾아봤는데, 10의 36제곱이라 한다. 1,000,000,000,000,000,000,000,000,000,000,000,000이다. 지구 전체 모래알 개수가 10의 21제곱인데 모든 모래알에 고유 번호를 주고도 남는 숫자이다. IPv6는 얼마나 좋았을까?
- IPv4 숫자 체계
- IPv6의 숫자 체계
DNS(Domain Name System)
IP에 대해 충분히 이해했다면, 이제서야 DNS가 무엇인지 알아볼 수 있다. IP는 인터넷상에서 소통을 위해 필요한 주소의 역할을 한다고 위에서 설명했다. 즉, 우리는 상대방의 IP를 기억하고 있어야지만 소통이 가능하다는 것이다. 마치 전화번호처럼 말이다. 그런데, IP 숫자 체계는 우리가 기억하기 너무 힘들다.
우리는 핸드폰에 친구의 번호를 저장할 때, 010-0000-0000으로 저장하지만, 찾을 때는 내가 저장한 이름인 ‘길동이’로 친구를 찾고, 전화를 건다.
DNS가 역할이 바로 이런 것이다. DNS가 없다면, 우리가 어떤 웹사이트(구글, 네이버 등)을 접속하기 위해서는 IP를 기억하고 있어야 한다. 125.209.222.141 이런 숫자들을 기억하고 있어야 한다면, 우리는 20년 전 친구네 전화를 하기 위해 수첩에 번호를 적어뒀던 것처럼 인터넷을 사용하고 있을 것이다.
- 도메인 이름을 입력하면 IP로 응답받는다.
DNS 덕분에 우리는 125.209.222.141가 아닌, naver.com으로 접속할 수 있다. naver는 얼마나 좋았을까?
DNS는 어떻게 작동할까?
여기까지만 DNS를 알아본다면, DNS를 안 것보다 IP에 대해 더 공부한 게 많다. 그러면 아쉬우니까 더 깊게 들어가 보자.
우리가 주소창에 naver.com을 입력했을 때, 우리 눈에 보이지 않는 곳에서 아주 많은 일이 일어난다.
최종적으로 naver.com의 IP를 알기 위해서는 4개의 서버를 거쳐야 한다.
각각 Recursive resolvers(재귀 확인자), root nameserver(루트 네임서버), TLD nameserver(TLD 네임서버), authoritative nameserver(권한 있는 네임서버)다.
그 과정을 알아보자.
먼저, 주소창에 naver.com을 입력하면 naevr.com의 IP를 찾기 위한 여정이 시작된다.
첫 번째로, Recursice resolvers를 확인한다.
Recursive resolvers의 역할은 IP의 데이터를 저장해 두는 곳이다. 우리가 전에 naver.com를 접속했다면, naver.com의 IP를 Recursive resolvers가 기억하고 있다. 그래서 첫 방문이 아니라면, 조금 더 빠르게 접속할 수 있다.
만약, Recursive resolvers에 없는 IP라면, 여정이 길어진다.
두 번째로, Root nameserver에 물어본다.
하나의 서버에서 모든 DNS 정보를 관리할 수가 없기에, DNS 서버를 각 지역에 나누어 도메인을 관리하고 있다. 그중 Root nameserver는 도메인 확장자를 구분하는 역할을 한다. 도메인 확장자란 .com .net .kr등을 말한다. 우리는 .com이니, .com을 관리하는 nameserver로 길 안내를 해준다.
세 번째는 TLD nameserver에 물어본다.
TLD nameserver는 도메인 확장자를 기준으로 DNS를 관리하는 곳이다. Root nameserver 덕분에 우리는 .com만을 관리하는 TLD nameserver로 올 수 있다. TLD는 naver.com의 모든 하위 도메인을 관리하고 있는 Authoritative nameserver로 우리를 연결해 준다.
여기서 하위 도메인이란, blog.naver.com, smartstore.naver.com 과 같은 도메인들을 말한다.
네 번째는 Authoritative nameserver에 물어본다.
Authoritative nameserver는 하위 도메인의 모든 IP를 갖고 있다. 여기서 IP 정보를 우리에게 보내준다. 그러면 우리는 드디어! 웹 브라우저에서 naver.com의 화면을 볼 수 있다. 그럼과 동시에 Recursice resolversd에 IP를 저장해 둔다.
이제 한 번 접속했으니 다음번에는 조금 더 빠르게 naver.com에 접속할 수 있게 된다 !
- 그림으로 표현된 DNS 여정
DNS 등록 과정
DNS 작동 과정을 알아봤으니, 등록 과정도 한 번 살펴보자 !
우리가 사이트를 제작했다면, 다른 사람들도 접속할 수 있도록 IP와 DNS가 필요하다. 우리가 직접 TLD에 등록할 수 없기에, 이런 일들을 대신해주는 Registrar(등록대행자)가 있다. 등록대행자는 공인된 사업체로서, 도메인 이름 등록, 관리 등의 서비스를 제공해 준다.
대표적인 곳으로는 가비아(https://www.gabia.com/)가 있다.
- 가비아에서 원하는 도메인을 검색하고 구입할 수 있다.
첫 번째로, 등록대행자에서 원하는 도메인을 구입한다.
kogong.kr이라는 도메인을 구입했다면, 가비아는 kogong.kr를 관리할 Authoritative name server를 하나 만들어 준다. a.kogong-server.net 이라는 naem server를 만들어줬다고 가정해보자.
두 번째로, kogong.kr을 관리하는 a.kogong-server.net 에 kogong.kr의 IP를 알려준다.
이것을 저장할 때는 ‘kogong.kr A 123.123.123’식으로 저장한다. 여기서 A를 A 레코드라고 부른다. 우리가 kogong.kr에 접속할 때, 최종적으로 A 레코드에 저장되어 있는 123.123.123을 보내준다.
여기서 추가로 CNAME방식으로 저장할 수도 있다. A Records는 kogong.kr ↔ 123.123.123을 연결한다면, CNAME은 서브 도메인이 생겼을 때 blog.kogong.kr의 IP를 kogong.kr에 연결 시키는 것이다.(blog.kogong.kr ↔ kogong.kr) CNAME방식은 IP가 자주 바뀌는 환경에서 유리하다.
세 번째로, kogong.kr과 a.kogong-sever.net의 정보를 TLD nameserver(등록소)에 알려준다.
TLD에 알려줄 때는 ‘kogong.kr NS a.kogong-server.net’식으로 보내준다. 이렇게 하면 TLD는 ‘kogong.kr’이 ‘a.kogong-server.net’ 라는 Authoritative name server에 IP정보가 있다는 걸 알 수 있다.
이제 누군가가 kogong.kr에 접속하려고 할 때, Root nameserver에서 .kr을 보고 .kr을 저장하는 TLD nameserver로 간다. TLD에서는 ‘kogong.kr NS a.kogong-server.net’을 찾고 a.kogong-server.net이라는 naver server에 간다. 최종적으로 ‘kogong.kr A 123.123.123’을 찾고, 123.123.123을 사용자에게 응답해준다.
등록 대행자가 있기에 우리는 간단하게 원하는 도메인과 금액만 지불한다면, Authoritative name server생성, TLD 등록까지 손쉽게 할 수 있다.
마무리
IP & DNS에 대해 간단히 알아봤다. 이것으로 인터넷 알아보기 대작전은 끝.
참조 자료
When to add glue records to your nameservers