hongcheol / CS-study

cs지식을 정리하는 공간
MIT License
242 stars 30 forks source link

웹 동작 방식 & DNS #97

Open rhddbsghks opened 3 years ago

rhddbsghks commented 3 years ago

웹 동작 방식


웹도식화


1,2  사용자가 웹 브라우저에 웹 페이지의 URL 주소를 입력한다.

3. 웹 브라우저는 URL 주소 중에서 도메인 네임(domain name) 부분을 DNS 서버에서 검색한다.

4. DNS 서버에서 해당 도메인 네임에 해당하는 IP 주소를 찾고 사용자가 입력한 URL 정보와 함께 전달한다.

5. IP 주소와 URL 정보는 HTTP 프로토콜을 사용하여 HTTP 요청 메시지(HTTP Request)를 생성한다. 

6. 이렇게 생성된 HTTP 요청 메시지는 TCP 프로토콜을 사용하여 인터넷을 거쳐 해당 IP 주소의 컴퓨터로 전송된다.

7. 도착한 HTTP 요청 메시지는 HTTP 프로토콜을 사용하여 웹 페이지 URL 정보로 변환된다.

8. 웹 서버는 도착한 웹 페이지 URL 정보에 해당하는 데이터를 검색한다.

9. 검색된 웹 페이지 데이터는 또다시 HTTP 프로토콜을 사용하여 HTTP 응답 메시지(HTTP Response)를 생성한다. 

10. 이렇게 생성된 HTTP 응답 메시지는 TCP 프로토콜을 사용하여 인터넷을 거쳐 원래 컴퓨터로 전송된다.

11. 도착한 HTTP 응답 메시지는 HTTP 프로토콜을 사용하여 웹 페이지 데이터로 변환된다.

12. 웹 브라우저는 변환된 웹 페이지 데이터를 출력한다.



DNS

Domain Name System 이란?

IP 주소는 IPv4 기준 12개 숫자와 .으로 구성되어 있어 외우기가 힘들다. 이를 좀 더 알아보기 쉽게 'naver.com', 'google.com'과 같이 문자와 .으로 표현한 주소를 도메인 이름(Domain Name)이라고 한다.

네트워크에서 이러한 도메인 이름을 숫자로 된 IP 주소로 변환해주는 TCP/IP 서비스를 DNS라 하며 계층 구조를 가지는 분산데이터베이스 구조이다.

Hostname은 네트워크에 연결된 장치들에게 부여되는 각각의 고유한 이름

ex) naver.com 이라는 Domain Name 내에서 news, comic, mail 등의 Hostname을 사용해 서비스를 구분한다.

-> news.naver.com, comic.naver.com, mail.naver.com


도메인 계층



DNS 동작 원리

1. 도메인을 먼저 Local DNS 서버게 "www.naver.com" Query

2. Local DNS 서버에 정보가 없다면 Root DNS 서버에 "www.naver.com" Query

3. Root DNS 서버(Root Name Server)에서 "com 도메인"을 관리하는 TLD Name 서버 정보 전달

4. TLD Name 서버에 "www.naver.com" Query

5. TLD Name 서버에서 "name.com" 관리하는 DNS 정보 전달

6. "naver.com" 도메인을 관리하는 DNS 서버에 "www.naver.com"에 대한 IP 주소 Query

7. Local DNS 서버에게 222.122.195.6 응답 

8. Local DNS는 www.naver.com에 대한 IP 주소를 캐싱하고 IP 주소 정보 전달



DNS Server

Local DNS Server (Recursive DNS Server)

사용자가 가장 먼저 접근하는 DNS 서버. DNS 쿼리를 통해 얻은 데이터를 일정 기간 캐시로 저장해둔다. 일반적으로 KT, LG, SK 등의 ISP DNS 서버를 사용한다.

Root Name Server (Root DNS Server )

국제인터넷주소관리기구(ICANN)에서 직접 관리하는 서버로 인터넷상의 모든 TLD DNS 서버 IP 주소를 저장해두고 전 세계에 13개 만이 존재한다.

Root DNS Mirror Server

기존 루트 DNS 서버를 복사한 것으로 미러 서버가 있는 국가는 외국의 루트 서버 없이 자체적으로 인터넷 통신을 관리할 수 있다.

TLD Name Server (Top-Level-Domain DNS Server )

ICANN의 지사인 인터넷 할당 번호 관리기관(IANA)에서 관리하는 서버로 Authoritative Name Server의 주소를 저장해둔다.

Authoritative Name Server (Authoritative DNS Server )

실제 도메인과 IP 주소를 매칭한 정보가 저장/변경되는 서버로 보통 가비아, 후이즈와 같은 도메인/호스팅 업체의 네임서버를 의미한다. 개인 DNS 서버를 구축한 경우에도 여기에 해당한다.



DNS Query 방법

1. 반복적 질의 (Iterative Query)


사용자가 Local DNS 서버에 query를 보내면 Local DNS 서버가 Root name 서버에 query를 보내 TLD 서버의 주소를 반환받고, 다시 TLD 서버에 query를 보낸다. 이렇게 최종 IP 주소를 받을 때까지 요청과 응답을 계속해서 Local DNS 서버가 반복하는 방법이다.


2. 재귀적 질의 (Recursive Query)


사용자가 Local DNS 서버에 query를 보내면 Local DNS server가 Root name 서버에 query를 보내고, Root 서버는 자신의 서버에 없으면 해당 TLD 서버에 요청한다. 이렇게 재귀적으로 실제 도메인 정보를 가지고 있는 서버까지 query가 이동하여 IP 주소를 얻는 방법이다. 재귀적인 방법은 Root 서버에 너무 큰 부담을 준다는 단점이 있다.


실제 DNS 서버는 반복과 재귀적인 방식을 함께 사용하며 Local DNS 서버에는 재귀, Root와 TLD 서버에는 반복, Authoritative 서버에는 재귀/반복적 query를 사용한다.

rhddbsghks commented 3 years ago

[실제 면접 질문] 브라우저 주소창에 "www.naver.com"을 입력했을 때 DNS 서버에서의 처리 과정과 브라우저의 동작과정을 통틀어서 설명해주세요.