www.naver.com을 입력했을 때 발생하는 과정 그리고 DNS
- 리다이렉트, 캐싱, DNS, IP 라우팅 & ARP, TCP 연결 구축을 거쳐 요청, 응답이 일어나는 TTFB(Time to First Byte)가 시작되고 이 후 컨텐츠를 다운받아 브라우저 렌더링 과정을 거쳐 네이버라는 화면이 나타나게 됨
리다이렉트
- 웹 서버가 클라이언트(웹 브라우저)에게 요청한 URL 대신 다른 URL로 이동하도록 지시하는 방법
- HTTP 응답 상태 코드와 함께 사용되며 사용자가 원래 요청한 리소스 대신 다른 리소스로 안내
캐싱
- 캐싱은 요청된 값의 결과를 저장하고 동일한 요청이 다시 들어올 때 저장된 값을 반환하는 기술
- 이를 통해 성능을 향상시키고 서버 부하를 줄일 수 있음
- 캐싱은
브라우저 캐시
와 공유 캐시
로 나눌 수 있음
- 브라우저 캐시(private cache)
- 사용자의 웹 브라우저가 요청한 리소스(예: HTML, CSS, JavaScript, 이미지 등)를 저장
- 동일한 리소스를 재요청할 때, 서버에 다시 요청하지 않고 로컬에 저장된 캐시를 사용
- 공유 캐시(Proxy cache)
- 프록시 서버나 CDN(Content Delivery Network) 등 중간 서버가 요청된 리소스를 저장
- 여러 사용자가 동일한 리소스를 요청할 때, 원 서버에 요청을 보내지 않고 프록시 서버에서 직접 응답
DNS(Domain Name System)
- 계층적인 도메인 구조와 분산된 DB를 이용한 시스템으로 FQDN(Fully Qualified Domain Name)을 인터넷 프로토콜인 IP로 바꿔주는 시스템
- DNS는 도메인 이름을 IP 주소로 변환하는 네임서버(Name Server)와 클라리언트의 DNS 쿼리를 네임서버로 전달하고 응답을 클라이언트에게 전달하는 리졸버(Resolver)로 구성되어 있음
예를들어, www.naver.com
에 DNS 쿼리가 오면 오른쪽부터 역순으로
[Root DNS] → [.com DNS] → [.naver DNS] → [.www DNS] 과정을 거쳐 완벽한 주소를 찾아 IP 주소를 매핑
DNS 캐싱
- 미리 해당 도메인 이름을 요청했다면 로컬 PC에 자동적으로 저장
브라우저 캐싱
chrome://net-internals/#dns
IP 라우팅 & ARP(Address Resolution Protocol)
라우팅 프로토콜
- RIP(Routing Information Protocol)
- 거리 벡터 라우팅 프로토콜 중 하나로 라우터가 네트워크 상의 경로를 설정하고 패킷을 전달하는 방법을 규정
동작 방식
-
거리 벡터 알고리즘 : RIP은 경로의 거리를 홉 수(hop count)로 측정
- 홉 수는 패킷이 목적지까지 도달하기 위해 거쳐야 하는 라우터의 수
-
라우팅 업데이트 : 라우터는 일정한 간격으로 인접 라우터들에게 자신의 라우팅 테이블을 브로드캐스트
함 (기본적으로 30초마다 업데이트가 이루어짐)
-
최대 홉 수 : RIP은 최대 15홉까지만 허용, 16홉이 되면 그 경로는 도달할 수 없는 것으로 간주
-
라우팅 루프 방지 : RIP은 라우팅 루프를 방지하기 위해 몇 가지 메커니즘을 사용
- 스플릿 호라이즌(Split Horizon) : 특정 경로에 대한 정보를 그 경로로부터 들어온 인터페이스를 통해 다시 보내지 않음
- 홀드다운 타이머(Holddown Timer) : 경로가 불안정해질 때 일정 시간 동안 그 경로를 사용하지 않음
-
OSPF(Open Shortest Path First)
- 링크 상태 라우팅 프로토콜로 대규모 네트워크에서 많이 사용됨
동작 방식
- 링크 상태 알고리즘 : OSPF는 링크 상태 정보를 사용하여 네트워크 맵을 생성하고 최단 경로를 계산함
- 라우팅 업데이트 : 라우터는 링크 상태 광고(LSA, Link State Advertisement)를 통해 자신의 링크 상태 정보를 모든 인접 라우터에 전달
- 모든 라우터는 이 정보를 수집하여 링크 상태 DB를 구성
- 영역(Area) : OSPF는 네트워크를 논리적으로 구분하여 관리
- 각 영역은 라우팅 정보를 축소하여 네트워크의 복잡성을 줄이고 성능을 향상시킴
- 가장 중심이 되는 영역은 백본 영역(Area 0)
- 상태 테이블 : OSPF는 세 가지 주요 테이블을 포함
- 인접 테이블 : 인접한 라우터 목록을 포함
- 링크 상태 DB(LSDB) : 전체 네트워크의 토폴로지 정보를 포함
- 라우팅 테이블 : 최적 경로 정보를 포함
TCP 연결 구축
- TCP 3-WAY Handshake은 클라이언트와 서버 간에 TCP 연결을 설정하기 위해 사용되는 세 단계의 프로세스
- 이 과정은 신뢰성 있는 데이터 전송을 보장하기 위한 첫 단계
TCP 3-Way Handshake 과정
1. SYN (Synchronize): 클라이언트가 서버에 연결 요청을 보냄
이 패킷은 SYN 플래그가 설정되어 있음
2. SYN-ACK (Synchronize-Acknowledge): 서버가 클라이언트의 요청을 수락하고, 응답으로 SYN-ACK 패킷을 보냄
이 패킷은 SYN 플래그와 ACK 플래그가 모두 설정되어 있음
3. ACK (Acknowledge): 클라이언트가 서버의 응답을 수신하고, 연결 설정이 완료되었음을 서버에 알리기 위해 ACK 패킷을 보냠
이 패킷은 ACK 플래그가 설정되어 있음
TCP 연결은 HTTP/2
까지 일어남
HTTP/3
은 TCP 연결이 아닌 QUIC 연결이 일어남
컨텐츠 다운로드
브라우저 렌더링
- 받은 데이터를 바탕으로 브라우저 엔진이 브라우저 렌더링 과정을 거쳐 화면을 만듦