오래 못 할 짓 하지 않기
[ 네트워크 시작 전 ] 4. DNS 본문
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
'3학년 2학기 > 네트워크 (Network)' 카테고리의 다른 글
[ 네트워크 시작 전 ] 6. SSL (0) | 2024.06.29 |
---|---|
[ 네트워크 시작 전 ] 5. HTTP (0) | 2024.06.28 |
[ 네트워크 시작 전 ] 3. TCP/IP (0) | 2024.06.28 |
[ 네트워크 시작 전 ] 2. OSI 7계층 (0) | 2024.06.28 |
[ 네트워크 시작 전 ] 1. 큰 흐름 잡기 (0) | 2024.06.26 |