오래 못 할 짓 하지 않기

[ 네트워크 시작 전 ] 4. DNS 본문

3학년 2학기/네트워크 (Network)

[ 네트워크 시작 전 ] 4. DNS

쫑알bot 2024. 6. 28. 14:21
728x90

DNS
Domain Name System

: 전화번호부 라고 생각하면 쉽다.

만약에 '쫄랑이' 이라고 저장되어 있는 사람한테 전화를 걸면

우리는 '쫄랑이' 한테 전화를 걸지만, 실제로는 010-xxxx-oooo 한테 전화를 건 것이다.

 

마찬가지로 우리가 Domain name인 www.helloworld.com 에 들어간다 해도 직접 이 곳이 아닌

해당 도메인을 가진 IP로 들어간다고 보는 게 정확하다.

 

해당 Domain name을 IP로  바꿔주는 게 DNS의 역할이다.

 

 


웹페이지 로딩에 필요한 DNS

도서관에서 책을 찾는다고 해보자.

    도서관 = 웹

    책 = 우리가 원하는 페이지(with 데이터)

 

●  DNS 리커서 : 도서관 어딘가에 있는 특정 책을 찾으러 가는 사서
  → 애플리케이션을 통해 시스템으로부터 쿼리를 수신하는 역할

●  루트 네임 서버 : 도서관의 색인 ( 위치에 대한 참조 역할 )

  → 사람이 읽을 수 있는 호스트 이름 → IP주소로 변환 및 확인

 

●  TLD 네임 서버 : 도서관의 특정 책이 있는 랙

  → 특정 IP 주소 검색의 다음 단계, 호스트 이름의 마지막 부분을 호스팅한다.

    ex)  xxxx.com 에서 TLD 서버는 "com"이다.

 

●  권위 있는 네임 서버 : 책꽂이에 있는 사전

    네임서버 쿼리의 마지막 지점

 


DNS 8단계 

1. 사용자가 웹 브라우저에 ' example.com' 을 입력

   → 인터넷에 있는 DNS 재귀 확인자가 쿼리를 받는다.

 

 2. 그런 다음 확인자는 DNS 루트 이름 서버(.)를 쿼리한다.

   → 걍 다 들고오는 것 같다.

 

3. 루트 서버는 해당 도메인에 대한 정보를 저장하는 TLD DNS 서버의 주소로  ex) .com 혹은 .net

    확인자에게 응답한다

 

   → 내가 원하는 책이 있는 책장을 줘! => com 책장을 줌

 

 

4. 확인자는 .com TLD에 요청을 보낸다. 

  →  3단계에서 받은 .com들 목록에서 example.com을 찾아달라고 요청한다. 

 

 

5. TLD 서버는 해당 도메인 이름 서버의 IP 주소인 example.com 로 응답한다.

  → 요청에 대한 응답을 해준다.

 

 

6. 재귀 확인자가 도메인의 네임 서버로 쿼리를 보낸다.

  → Domain Name을 모아두는 서버가 있다. 그 서버에 example.com이 있는지 확인을 요청한다.

      네임 서버를 IP들의 전화번호부로 생각하면 편할 것 같다. 

 

7. exmaple.com의 IP주소가 DNS server에서 확인자에게 반환된다.

  → 확인 요청 후에 해당 Name에 대한 IP가 있으면 반환

 

8. DNS 확인자가 처음 요청한 도메인의 IP주소로 웹 브라우저에 응답한다.

  → 7단계에서 받은 IP로 이동한다.

 

 

============ 8단계까지 마치면 IP주소를 받을 수 있다. 아래는 추가적인 동작 ============

 

9. 브라우저는 IP 주소에 HTTP 요청을 보낸다.

 

10. 해당 IP의 서버는 브라우저에 렌더링할 웹페이지를 반환한다.   

 

질문1. 1단계에서 받는 쿼리를 시작부터 나눠서 받는 건가?
        ex) 한 번에 다 example.com 을 검색하는 게 아니라 . > .com > example.com으로 검색하는 단계인지

 

 

 

 

DNS Caching

매번 Domain name에 접근할 때 저 8 혹은 10단계를 다 거치기에는 효율성이 너무 떨어진다.

기존에 한 번 쓴 DNS Data는 Cache에 저장하여 효율성을 높인다.

 

 

 

 

 

 

(참고)

 

- 인프런 더코딩클럽 : 컴퓨터구조, 네트워크 기본 개념 정리

- https://velog.io/@kwontae1313/DNSDomain-Name-System