참고 강의 : https://youtu.be/YahjHM9UNCA
리다이렉트, 캐싱, DNS, IP 라우팅, TCP 연결 구축을 거쳐 요청 응답이 발생하는 TTFB(Time to First Byte)가 시작되고, 이후 컨텐츠를 다운 받은 뒤 브라우저 렌더링 과정을 거쳐 네이버 화면이 나옵니다.
서버에 리다이렉트가 설계 되어있다면, 리다이렉트된 주소로 요청이 진행된다. 없다면 요청한 그대로 과정이 진행된다.
해당 요청이 캐싱이 가능한지, 가능하지 않은지를 파악한다.
캐싱이 된 요청이라면 캐싱된 값을 그대로 반환한다.
그렇지 않다면 요청의 다음 단계로 넘어간다.
캐시는 브라우저 캐시와 공유 캐시로 나뉜다.
브라우저 캐시(private cache)
쿠키, 로컬스토리지 등을 포함하여 브라우저 저장소에 저장된 캐시
브라우저 자체가 HTTP를 통해 다운로드 받은 모든 문서를 보유하고 있다.
웹페이지 로딩시 Network 도구를 봤을 때, status가 304인 요청이 있다면 캐시에서 가져왔다는 뜻이다.
공유 캐시
클라이언트와 서버 사이에 있는 캐시로, 서로다른 클라이언트끼리 공유하여 사용할 수 있다. 서버까지 요청을 보내지 않아도 공유 캐시에 저장된 응답을 받을 수 있다.
서버 앞단에 캐싱 계층을 두어 서버로의 요청을 줄이는 역할을 수행한다.
대표적으로 요청한 서버 앞단에 프록시서버를 두어 캐싱을 하는 방법이 있다.
이를 리버스 프록시를 둬서 내부 서버로 포워드 한다고도 말한다.
Node.js 앞단에 Nginx를 프록시서버를 두어 페이지를 캐싱해두는 방법을 주로 사용한다. (그외 aws clout front, coludflare가 있다)
FQDN을 인터넷 프로토콜인 IP로 바꾸어주는 시스템
DNS 네임서버에 요청이 전달되면 도메인을 IP로 변환하고, 리졸버를 통해 응답값을 클라이언트에 전송한다.
FQDN(Fully Qualified Domain Name)
호스트 + 도에민이 합쳐진 완전한 도메인 이름
www가 호스트에 해당하고, naver.com이 도메인에 해당한다.
도메인 변환 과정
Root DNS부터 매핑을 한여 완벽한 주소를 찾아 IP 주소를 매핑한다.
예시) . → .com → .naver → .www 순으로 매핑이 이루어진다.
DNS 캐싱
이미 해당 도메인을 요청한 적이 있다면 로컬 PC에 IP 주소가 자동적으로 저장된다.
브라우저캐싱과 OS캐싱(운영체제별 명령어 통해 확인 가능)이 있다.
라우팅, ARP 과정을 거쳐 실제 서버를 찾는다.
TCP 3way handshake - SSL 연결을 통해 연결을 설정한다.
※ HTTP/3 부터는 UDP 기반의 QUIC를 사용하기 때문에 QUIC 연결이 일어난다.
연결이 성립되면 요청을 보낸 후 응답을 받게 된다.
요청한 컨텐츠를 서버로 부터 다운 받아 브라우저 엔진이 렌더링하여 화면에 페이지가 표시된다.
※ 다운로드가 시작하는 순간이 바로 TTFB(Time To First Byte)이다.