본문 바로가기

네트워크

DNS(Domain Name Server)의 정체와 통신 방법

1. DNS의 정체와 종류

DNS는 도메인 네임 서버의 줄임말, 

도메인 이름과 이에 해당하는 IP주소 저장해 놓은 데이터베이스 서버이다.

 

내 로컬 네트워크를 뛰어넘어 인터넷에 존재하는 DNS는 수없이 많다.

따라서, 내가 외부의 어떤 도메인의 IP를 주소를 문의할 때는 내 지역과 가장 가까운 DNS를 찾아가는 것이다. 

 

 

2. DNS 찾기는 "효율성"이 모토이다. 

- 먼저 DNS 캐쉬가 있는지 찾은 후 도~~~저히 없다면 이젠 정말 외부 DNS에서 ip주소를 찾아내야 하는 것이다. 

1) 웹브라우저리졸버(프로그램)를 호출한다.

2) 리졸버소켓의 gethostbyname() 이라는 함수를 호출해서 ip 주소를 요청하는 함수를 호출한다. 

3) gethostbyname()은 운영체제 안의 프로토콜 스택에서 UDP 53(포트넘버)로 NIC(네트워크카드)에 IP 주소 문의하는 데이터(패킷)을 보낸다. 

4) NIC(네트워크카드, 랜카드) 는 전달받은 데이터(패킷)을 전기신호로 바꿔서 DNS 서버에 전달한다. 

 

5) DNS 서버의 NIC에서는 전기신호를 받아서 데이터(패킷)으로 해석한다.

6)  DNS 리커서라는 프로그램이 전달받은 데이터(패킷)의 "www.google.com"의 주소는 뭐야? 라는 질문에 대한 답을 찾는다. 캐쉬에 www.google.com의 ip가 있다면 그걸 전달해준다. 

   www. naver.com                       1.1.1.1

   www. nate.com                         2.3.3.3

밧뜨!!  DNS(캐쉬)에서 아무리 찾아도  www.google.com  주소가 없다면???

 

7) 전세계에 13대 밖에 없는 루트 DNS에 문의를 한다. 

나 = 내 컴퓨터 = 내 컴퓨터의 웹브라우저 = 웹브라우저 리졸버 프로그램 중 DNS 리커서:  ".com"을 갖고 있는 DNS서버 ip주소를 가르쳐줘요!!! 

Root DNS : .com을 갖고 있는 상위 DNS 서버를 찾아야겠군!

 

8) Root DNS 는 내가 있는 지역(예: 서울)에서 가장 가까운 DNS ip를 가르쳐주면 그 DNS 서버로 요청을 보낸다.

    그러한 상위에 있는 DNS 서버를 TLD 네임서버라고 부른다.

 

  * TLD(Top-Level Domain) 서버는 DNS(Domain Name System) 계층 구조에서 최상위 도메인(TLD)을 관리하는 서버.

    TLD는 도메인 이름의 가장 오른쪽 부분에 위치하며, 인터넷에서 가장 상위에 있는 도메인을 나타냄.

    ".com", ".net", ".org", ".gov" 등이 TLD에 해당.

 

9) TLD 네임서버는 권한있는 서버의 IP를 알려준다. 

   - google.com이 있는 DNS의 IP를 소개해주는 것!

 

10) 나(DNS 리커서)는 www.google.com IP 주소를 캐싱(임시저장)하고 내 컴퓨터에 NIC(전기신호) --> OS(프로토콜 스택) --> 웹브라우저(프로그램)로 전달한다.