대기열, 캐싱, DNS, 라우팅, ARP, 초기연결을 거쳐 컨텐츠를 다운받고, 이후 브라우저 렌더링 과정을 거쳐 네이버라는 화면이 나타나게 된다. 이러한 과정은 모두 캡슐화, 비캡슐화를 통해 이루어진다.
1. 대기열
•
브라우저는 주소창 입력에 대한 요청을 대기열에 넣는다.
2. 캐싱
바로 서버로 요청이 가지 않고, 캐시를 방문하여 이미 캐시가 존재하는지 확인한다.
•
캐싱 : 요청된 결과값을 저장하고 그 값을 다시 요청하면 다시 제공하는 기술
•
공유 프록시 캐시
◦
요청한 서버에서 프록시 서버가 캐싱을 하는 것을 말한다.
◦
node.js로 서버를 구축한다면 보통 nginx 로 프록시 서버를 구축하여 서버를 캐싱 서버로 사용한다.
•
브라우저 캐시
◦
쿠키, 로컬스토리지 등을 포함하는 캐시. 브라우저 자체가 사용자가 HTTP 를 통해 다운로드하는 모든 문서를 보유하는 것을 말한다.
◦
인터넷 사용기록을 삭제하는 것도 바로이 이러한 캐시를 삭제하는 것.
3. DNS
•
브라우저가 요청의 ip 주소를 확인하는 단계이다.
•
DNS 는 도메인 이름과 ip 주소를 매핑해주는 서버이다. 예를 들면, www.naver.com 에 DNS 쿼리가 오게되면, 오른쪽부터 역순으로 root DNS -> .com DNS -> .naver DNS -> .www DNS 과정을 거쳐서 완벽한 주소를 찾아 IP 주소를 매핑하게 된다.
•
DNS 서버로 요청을 전달하는 것은 바로 진행되지 않고, 컴퓨터 메모리에 있는 호스트 파일 등 캐시를 확인한 후에 캐시미스가 일어나면 DNS 서버로 요청을 하게 된다.
4. ip routing /ARP
•
ip 주소가 확인되면, 이제 ip routing 그리고 ARP 를 거쳐서 실제 서버를 찾게 된다.
5. 초기연결
•
이제 브라우저가 TCP 3way handshake 및 SSL 을 통해서 연결을 설정한다. 이후 요청을 보낸 후 서버로부터 응답을 받게 된다. 여기서는 네이버 서버가 되겠다.
6. 컨텐츠 다운
•
브라우저는 서버로부터의 응답을 수신한다.
7. 브라우저 렌더링
•
받은 데이터를 바탕으로 브라우저 엔진이 브라우저 렌더링 과정을 거쳐 화면을 만든다.