도메인의 구조와 원리
개념 정리다.
도메인이란?
흔히 브라우저로 웹사이트를 들어갈때 뜨는 링크를 말한다.
이런거 말이다.
저기서 전체 주소는 https://naver.com가 되는데, 여기서 "naver.com"을 도메인이라고 한다.
결과적으로는 서버가 위치한 컴퓨터의 IP 주소를 가리키는 것이다.
이런 도메인에 대한 시스템을 도메인 네임 시스템(DNS)라고 부른다.
도메인의 텍스트 형태
도메인은 ..*나 *.*의 구조를 가지는데, 전자는 서브도메인이라 한다.
예를 들어 네이버는 다음과 같은 도메인을 사용한다.
루트 도메인
naver.com
블로그용 서브도메인
blog.naver.com
지식인용 서브도메인
kin.naver.com
여기서 naver을 도메인 이름(Domain name)이라고 부른다. 가장 중요하고, 이게 짧거나 의미있을수록 비싸게 팔리거나, 이미 누가 점유하고 도메인 장사를 하고 있다.
그리고 .com이 최상위 도메인(Top-level domain, TLD)이라고 부르는 부분인데, 국가나 국제단체를 기준으로 매겨진다. 자주 사용되는건 .com이나 .org, .co.kr, .io 같은 것들이 있다.
예전에는 무지성으로 com이나 org만 사용했었는데, "coupa.ng" 처럼 도메인 이름과의 조합을 생각해서 사는 경우가 매우 많아졌다. 그래서 요즘은 io나 ng 같은 도메인이 훨씬 비싸다.
마지막으로 blog나 kin을 서브도메인(subdomain)이라고 부른다. 그리고 서브도메인이 없는걸 루트도메인이라고 부른다.
사실 서브도메인이 다르거나 없어도 도메인네임이 같으면 기본적으로는 같은 도메인이다. 도메인을 구매할때도 도메인을 하나만 사도 네이버처럼 서브도메인으로 나눠서 여러개로 사용할 수 있다.
도메인과 네임서버
도메인 호출 구조를 그림으로 정리하면 이렇다.
https://www.geeksforgeeks.org/working-of-domain-name-system-dns-server/
- 사용자가 브라우저에서 naver.com에 접속하려 하면, 브라우저는 DNS Lookup이라는 절차를 통해 DNS 서버에 naver.com가 무슨 주소인지 물어본다.
- DNS 서버가 IP 주소를 알려주면, 그 주소로 서버에 접속을 한다.
그리고 DNS 서버는 사실.. 꽤나 복잡한 계층으로 구성되어있고, 각자 하는 일도 다르다.
피라미트형으로 하청을 내려주는 형태인데.. 이런 식이다.
- naver.com으로 DNS Lookup을 날리면, 우리가 속한 인터넷 통신사의 DNS 서버에 요청이 간다.
- 통신사 DNS 서버는 먼저 Root DNS 서버에 물어본다. 그러면 Root DNS는 com을 관리하는 TLD DNS 서버의 주소를 알려줄 것이다.
- 그러면 통신사 DNS 서버는 다시 .com을 관리하는 TLD DNS 서버에게 물어볼 것이다. .com DNS 서버는 다시 (예를 들어) 가비아라는 Authoritative DNS 서버가 그걸 관리하고 있다고 알려준다.
- 그러면 통신사 DNS 서버는 다시 가비아에게 naver.com의 주소가 무엇인지 물어볼 것이고, 가비아가 마침내 IP 주소를 알려준다.
하지만 이걸 매번 반복하기에는 비효율이 극심하니, 한번 조회하면 통신사 DNS 서버에서 캐싱해놓고 사용하게 된다.
도메인 호출 과정 확인해보기
유닉스 계열에서는 dig 명령을 통해 도메인이 뭘 어떻게 가져와주는지 조회해볼 수 있다. windows에서는 nslookup을 사용할 수 있는데, dig가 더 정보를 많이 주는 편이다.
예를 들어 네이버를 물어보면
이런식으로 답을 해준다.
223.130.195.95 등이 최종적으로 얻어온 IP 주소다. 여기서 지리적으로 가장 가까운 위치의 IP에 접속해서 사용하는 것이다.
그래서 저것 중 하나로 들어가면 네이버 사이트로 포워딩될것이다.
밑에있는 ns2.naver.com, ns1.naver.com은 네임서버다.
네이버에서 자체적으로 관리하는 네임서버인 것 같다.
다른곳들도 직접 뭘 쓰나 확인해볼 수 있다.
넷플릭스는 aws 도메인을 쓰고
디스코드는 클라우드플레어를 쓴다.
.jpg?type=w800)