본문 바로가기

카테고리 없음

DNS 프로토콜

728x90

1. 개요 


네트워크 프로토콜을 사용하여 통신을 할 때에는 Host를 식벽하기 위한 목적으로 IP 주소를 사용한다.

 

하지만 우린 보통 웹브라우저를 사용할때 웹 URL를 입력하지 IP주소를 기억하고 입력하지는 않는다.

 

이러한 웹 URL 과 IP주소사이의 맵핑을 해주는 것이 바로 DNS 프로토콜이다. 

 

 

 

2. DNS 과정

DNS 전체 과정

 

1) 우선 Local DNS 테이블에 해당 주소에 맵핑이 있는지 확인한다.

이렇게 하는 이유는 DNS 를 거치지 않고 로컬에서 변환되기 떄문에 속도가 빠르다는 장점이 있기 때문

 

1-1) 과거의 경우, host 라는 파일에 DNS 맵핑을 모두 저장하는 방식을 사용했으나, DNS 정보가 많을 경우 파일의 크기가 너무 커져서 잘 선호되지 않는다. 현재는 DNS 캐시 테이블을 활용한다.(cmd 창에서 ipconfig /displaydns 로 확인가능)

 

ipconfig /displaydns

 

2) 로컬에 데이터가 없을경우 내 PC의 DNS 클라이언트는 등록된 DNS 서버에 DNS 쿼리를 날린다.

 

3) DNS 서버는 최상위 도메인인 루트 DNS에 DNS 쿼리를 날린다.

 

4) 운이 좋게도 그 루트 DNS가 해당 사이트의 DNS 서버면 응답이 올것이다. 하지만 대부분의 경우 그렇지 않고,

.com DNS 서버의 IP와 함께 이곳으로 쿼리를 날리라는 응답을 날릴것이다

 

5) 마찬가지로 .com DNS 서버에 DNS 쿼리를 날린다.

 

6) .com DNS 서버에도 마찬가지로 DNS 정보가 없다. www.google.com  DNS 서버의 IP와 함께 이곳으로 쿼리를 날리라는 응답을 DNS 서버에 날린다.

 

7) www.google.com  DNS 서버에는 www.google.com  의 DNS 레코드가 있다. 구글 DNS 서버는 DNS 서버에 DNS 레코드 정보를 전달한다.

 

8) DNS 서버는 전달받은 DNS 레코드를 DNS 클라이언트에 전달한다.

 

9) DNS 클라이언트는 전달 받은 DNS 레코드를 로컬에 저장하고, 이를 사용한다. 

 

 

3. DNS 쿼리 우선순위

 

  • 1) DNS cache table 확인 (ipconfig /displaydns)
  • 2) C:\windows\system32\drivers\etc\hosts.ics 파일 내용 확인
  • 3) C:\windows\system32\drivers\etc\hosts 파일 내용 확인
  • 4) 등록된 DNS 서버에게 질의