[네트워크] '이름'으로 통하는 'D'omain 'N'ame 'S'ervice
by rowing0328※ 이 글은 이노그리드 교육 과정의 일부로, 저만의 관점과 해석을 더해 작성되었습니다.
hosts 파일의 한계
ARPANET 시절에는 hosts.txt 파일 한 장에 모든 호스트 이름과 IP 주소를 수동으로 기록했다.
새로운 PC ddd(14.5.1.14)가 추가될 때마다 관리자는 이 파일을 수정하고,
네트워크 전체에 배포한 뒤, 각 시스템을 재시작해야 했다.
노드 수가 수천 대로 늘어나자 이 방식은 한계에 부딪혔다.
- 노드 증가에 따른 관리 비용 급증
- 전 세계 파일 동기화에서 발생하는 충돌
- 사용자가 숫자 IP를 직접 기억해야 하는 불편
DNS(Domain Name Service)의 등장
DNS는 이름-주소 매핑을 중앙집중식 텍스트 파일에서 분산 데이터베이스로 전환한 체계이다.
[ 용어 사전 ]
용어 | 의미 |
Host Name | 개별 컴퓨터를 가리키는 로컬 이름(예: aaa) |
Domain Name | 호스트를 계층적으로 묶은 이름(예: naver.com) |
Name Server | 해당 도메인의 레코드를 저장하고 질의에 응답하는 서버 |
레코드는 데이터베이스에 저장되고,
도메인은 점(.)을 기준으로 상위·하위 계층으로 나뉘어 위임(delegate) 된다.
도메인 이름의 계층 구조
www. naver .com
└─┘ └─┬─┘ └─┬─┘
호스트 2차 최상위(TLD)
- 호스트 (Host)
서비스 종류를 구분한다. www, mail, ftp... - 2차 도메인 (Second-Level Domain)
기업·기관·브랜드 식별자, naver, google... - 최상위 도메인 (TLD, Top-Level Domain)
도메인 계층의 뿌리 역할을 한다.
[ TLD 한 걸음 더 깊이 보기 ]
구분 | 예시 | 특징 |
gTLD(generic) | .com, .net, .org, .info | 용도 제한이 거의 없어서 전 세계가 자유롭게 등록한다. |
sTLD(sponsored) | .gov, .edu, .mil, museum | 특정 커뮤니티·기관이 스폰서가 되어 자격 요건을 제한한다. |
ccTLD(country code) | .kr, .jp, .us | ISO 3166 국가·지역 코드 2자리, 각국 레지스트리가 자체 정책을 운영한다. |
new gTLD | .app, .dev, .shop, .xyz 등 | 2013년 이후 ICANN 확장 프로그램을 통해 대량 도입된 신규 일반 TLD. 브랜드 전용(.google)·도시 전용(.london) 등 다양하다. |
TLD의 관리 권한은 IANA(Internet Assigned Numbers Authority)가 보유하며,
실제 운영은 각 레지스트리(Registry) 단체가 맡는다.
사용자는 레지스트리를 통해 2차 도메인을 등록하고 네임 서버 정보를 설정한다.
국가 코드 도메인의 경우 co.kr (기업), ac.uk (대학), go.jp (정부)처럼
세컨더리 라벨을 추가해 용도를 세분하기도 한다.
www.naver.com 이름 해석 과정
- 클라이언트가 /etc/hosts를 먼저 확인한다.
- 로컬 리졸버(캐시 DNS)에게 www.naver.com의 IP를 요청한다.
- 리졸버가 루트 네임 서버에 질의한다.
- 루트 서버가 .com 네임 서버 주소를 알려 준다.
- 리졸버가 .com NS에 naver.com의 네임 서버를 묻는다.
- .com NS가 naver 네임 서버 주소를 반환한다.
- 리졸버가 naver NS에 www.naver.com의 IP를 요청한다.
- naver NS가 IP(예: 223.130.195.200)를 응답한다.
- 리졸버가 IP를 클라이언트에 전달한다.
- 클라이언트가 해당 IP로 HTTP 요청을 보낸다.
→ 각 단계는 결과를 캐시에 저장해 이후 요청 지연을 줄인다.
[ 리졸버의 역할 ]
리졸버는 DNS 서버에 질의를 보내는 클라이언트다.
애플리케이션(웹 브라우저 등)이 도메인 이름을 넘겨주면, 리졸버는 다음 과정을 수행한다.
- 조회(Query) 전송
DNS 서버(루트나 캐시 및 권한 서버)에 "이 이름의 IP 주소가 뭐냐"를 묻는다. - 응답(Response) 수신
돌아온 결과를 원래 애플리케이션에게 돌려준다.
결국 리졸버가 Name Resolution(DNS 원리를 이용해 IP 주소를 찾는 과정)의 실무를 담당하는 셈이다.
덕분에 사용자나 프로그램은 복잡한 네임 서버 체계를 직접 상대하지 않고도,
친숙한 도메인 이름만으로 통신할 수 있다.
dig 명령으로 질의 흐름 확인
$ dig www.naver.com +trace
+trace 옵션은 루트 → TLD → 권한 네임 서버로 이어지는 위임 과정을 그대로 보여 준다.
ANSWER SECTION에 최종 IP 레코드(A)가 표시되면 이름 해석이 완료된 것이다.
[ 실행 결과 ]
마무리
인터넷을 거닐다 웹 페이지 하나를 띄우는 짧은 순간에도
전 세계 네임 서버들은 층층이 호흡을 맞추며,
우리가 입력한 '이름'을 기계가 이해할 '숫자'로 바꿔 주고 있다.
이 보이지 않는 협업 덕분에
인터넷은 눈 깜빡할 사이에도 정확한 주소를 찾아낸다.
덕분에 우리는 복잡한 IP를 외우지 않아도
의미 있는 단어만으로 원하는 서비스에 도달할 수 있고,
네트워크는 노트가 아무리 늘어나도 무너지지 않고 자연스럽게 확장된다.
DNS가 바로 그 든든한 토대를 형성한다.
참고 자료:
Inflearn Web Site - 그림으로 쉽게 배우는 네트워크
그림으로 쉽게 배우는 네트워크 강의 | 감자 - 인프런
감자 | , 개발자가 꼭 알아야 컴퓨터 네트워크,그림으로 쉽고 재밌게 알려드려요! 😁 [사진] 개발자의 기본기, 컴퓨터 네트워크 📖 기본기가 부족한 개발자가 어떤 걸 학습할지 몰라 방황하는
www.inflearn.com
RFC 1034 - Domain Names: Concepts and Facilities
RFC 1034: Domain names - concepts and facilities
www.rfc-editor.org
블로그의 정보
코드의 여백
rowing0328