🎯 DNS / 웹 통신 흐름
1️⃣ DNS
기본적으로 DNS(Domain Name System Servers)의 역할은 도메인 주소(example.com)를 IP 주소로 변환하는 역할을 합니다.
사용자가 웹 브라우저에서 입력한 URL을 DNS 서버를 통해 IP 주소를 가져와서 이를 통해 서버와 통신을 하게됩니다.
이러한 흐름을 간략하게 그림으로 보면 다음과 같습니다.
웹 브라우저에서 URL을 입력하면, DNS 서버에 도메인에 대한 실제 IP 주소를 요청하게 됩니다.
그리고 받아온 IP 주소를 통해 웹 서버에 요청할 수 있게 되는 것 입니다.
그리고 위 그림에서의 DNS의 동작을 상세히 그림으로 나타내면 다음과 같습니다.
사용자가 도메인 주소를 입력하여 웹 서버에 요청하기까지의 시나리오는 위 순서대로 흘러가게 됩니다. 이 과정에서 Local DNS Server가 중간에서 여러 서버와 통신하고 있는 습니다.
📖 웹 페이지로드와 관련된 4개의 DNS 서버
1) DNS 리커서
리커서는 도서관 어딘가에 특정한 책을 찾아달라고 요청받는 사서로 생각할 수 있습니다. DNS 리커서는 웹 브라우저 등의 애플리케이션을 통해 클라이언트 컴퓨터로부터 쿼리를 받도록 고안된 서버입니다.
2) 루트 이름 서버
루트 서버는 사람이 읽을 수 있는 호스트 이름을 IP 주소로 변환하는 첫 번째 단계입니다. 도서관에서 책장 위치를 가리키는 생인으로 생각할 수 있으며, 일반적으로 다른 더욱 특정한 위치에 대한 참조를 사용합니다.
3) TLD 이름 서버
TLD(최상위 도메인) 서버는 도서관의 특정 책장으로 생각할 수 있습니다. 이 이름 서버는 특정 IP 주소 검색의 다음 단계이며 호스트 이름의 마지막 부분을 호스팅합니다.
4) 권한 있는 이름 서버
최종 이름 서버로서, 책장에 있는 사진처럼 특정 이름을 해당 정의로 변환합니다. 권한있는 이름 서버는 이름 서버 쿼리의 종착점입니다. 권한있는 이름 서버가 요청한 레코드에 대한 액세스 권한이 있다면, 요청한 호스트 이름의 IP주소를 초기 요청한 DNS리커서(사서)에게 돌려 보냅니다.
2️⃣ 웹 통신의 흐름
우리가 Chrom을 실행시켜 주소창에 특정 URL 값을 입력시키면 어떤 일이 일어날까?
1. 브라우저
- 먼저 url에 입력된 값을 브라우저 내부에서 결정된 규칙에 따라 그 의미를 조사합니다.
- 조사된 의미에 따라 HTTP REQUEST 메시지를 만듭니다.
- 만들어진 메시지를 웹서버로 전송합니다.
이 때 만들어진 메시지 전송은 브라우저가 직접하는 것은 아닙니다. 브라우저는 메시지를 네트워크에 송출하는 기능이 없으므로 OS에 의뢰하여 메시지를 전달합니다. 우리가 택배를 보낼 때 직접 보내는 게 아니라, 이미 서비스가 이루어지고 있는 택배 시스템을 이용하여 보내는 것과 같은 이치입니다.
단, OS에 송신을 의뢰할 때는 도메인명이 아니라 IP주소로 메시지를 받을 상대를 지정해야 하는데, 이 과정에서 DNS서버를 조회합니다.
2. 프로토콜 스택, LAN 어댑터
❓프로토콜 스택(운영체제에 내장된 네트워크 제어용 소프트웨어)이 브라우저로부터 메시지를 받습니다.
- 브라우저로부터 받은 메시지를 패킷 속에 저장합니다.
- 수신처 주소 등의 제어 정보를 덧붙입니다.
- 패킷을 LAN 어댑터에 넘깁니다.
- LAN 어댑터는 다음 Hop의 MAC주소를 붙인 프레임을 전기신호로 변환시킵니다.
- 신호를 LAN 케이블에 송출시킵니다.
프로토콜 스택은 통신 중 오류가 발생했을 때, 이 제어 정보를 사용하여 고쳐 보내거나, 각종 상황을 조절하는 등 다양한 역할을 하게 됩니다. 네트워크 세계에서는 비서가 있어서 우리가 비서에게 물건만 건내주면 받는 사람의 주소와 각종 유의 사항을 써줍니다. 여기서는 프로토콜 스택이 비서의 역할을 한다고 볼 수 있습니다.
3. 허브, 스위치, 라우터
- LAN 어댑터가 송신한 프레임은 스위칭 허브를 경유하여 인터넷 접속용 라우터에 도착합니다.
- 라우터는 패킷을 프로바이더(통신사)에게 전달합니다.
- 인터넷으로 들어가게 됩니다.
4. 액세스 회선, 프로바이더(통신사)
- 패킷은 인터넷의 입구에 있는 액세스 회선(통신 회선)에 의해 POP(Ppint Of Presence, 통신사용 라우터)까지 운반됩니다.
- POP를 거쳐 인터넷의 핵심부로 들어가게 됩니다.
- 수 많은 고속 라우터들 사이로 패킷이 목적지를 향해 흘러가게 됩니다.
5. 방화벽, 캐시서버
- 패킷은 인터넷 핵심부를 통과하여 웹 서버측의 LAN에 도착합니다.
- 기다리고 있던 방화벽이 도착한 패킷을 검사합니다.
- 패킷이 웹 서버까지 가야하는지 가지 않아도 되는지 판단하는 캐시서버가 존재합니다.
굳이 서버까지 가지 않아도 되는 경우를 골라냅니다. 액세스한 페이지의 데이터가 캐시서버에 있으면 웹 서버에 의로하지 않고 바로 그 값을 읽을 수 있습니다. 페이지의 데이터 중에 다시 이용할 수 있는 것이 있으면 캐시 서버에 저장됩니다.
6. 웹 서버
- 패킷이 물리적인 웹 서버에 도착하면 웹 서버의 프로토콜 스택은 패킷을 추출하여 메시지를 복원하고 웹 서버 애플리케이션에 넘깁니다.
- 메시지를 받은 웹 서버 애플리케이션은 요청 메시지에 따른 데이터를 응답 메시지에 넣어 클라이언트로 회송합니다.
- 왔던 방식대로 응답 메시지가 클라이언트에게 전달됩니다.
📚 Reference
'CS' 카테고리의 다른 글
CORS / SOP (1) | 2024.02.04 |
---|---|
쿠키와 세션 (1) | 2024.01.27 |
로드 밸런싱 (0) | 2024.01.21 |
OSI 7 계층 (2) | 2024.01.07 |