콘텐츠로 건너뛰기
Home » Blog » www.naver.com을 쳤을때 생기는 과정과 DNS

www.naver.com을 쳤을때 생기는 과정과 DNS

  • web

www.naver.com을 쳤을 때 생기는 과정과 DNS

  • 리다이렉트, 캐싱, DNS, IP 라우팅, TCP 연결 구축을 거쳐 요청, 응답이 일어나는 TTFB(Time to First Byte)가 시작되고 이 후 컨텐츠를 다운받게 되고 이 후 브라우저 렌더링 과정을 거쳐 네이버라는 화면이 나타나게 된다.

리다이렉트

  • 리다이렉트가 있다면 리다이렉트를 진행하고 없다면 그대로 해당요청에 대한 과정이 진행된다.

캐싱

  • 해당 요청이 캐싱이 가능한지 불가능한지 파악한다.
  • 캐싱이 이미 된 요청이라면 캐싱된 값을 반환하며 캐싱이 되지 않은 새로운 요청이라면 그 다음 단계로 넘어간다.
  • 캐싱은 요청된 값의 결과값을 저장하고 그 값을 다시 요청하면 다시 제공하는 기술이다.
  • 이는 브라우저 캐시와 공유 캐시로 나눠진다.
  • 브라우저 캐시
    • 쿠키, 로컬스토리지 등을 포함한 캐시로 개인캐시(private cache)라고도 한다.
    • 브라우저 자체가 사용자가 HTTP를 통해 다운로드하는 모든 문서를 보유하는 것을 말한다.
    • ex) 어떤 사이트를 갔다가 다시 방문하면 굉장히 빠르게 컨텐츠가 나타난다. → 브라우저 캐시
  • 공유 캐시
    • 클라이언트와 서버 사이에 있으며 사용자간에 공유할 수 있는 응답을 저장할 수 있다.
    • ex) 요청한 서버 앞단에 프록시서버가 캐싱을 하는 것
      • 리버스 프록시를 둬서 내부서버로 포워드한다고도 말한다.
      • Node.js로 서버를 구축한다면 앞단의 프록시서버로 nginx서버를 둬서 이 서버를 캐싱 서버로도 사용할 수 있는 것
      • 또한 AWS Cloudfront 또는 Cloudflare와 같은 콘텐츠 전송 네트워크 (CDN)을 둬서 캐싱할 수 있다.

DNS

  • (Domain Name System)은 계층적인 도메인 구조와 분산된 데이터베이스를 이용한 시스템으로, FQDN을 인터넷 프로토콜인 IP로 바꿔주는 시스템이다.
    • FQDN (Fully Qualified Domain Name)은 호스트와 도메인이 합쳐진 완전한 도메인 이름을 말한다.
    • www등은 호스트, naver.com은 도메인이라고 한다.
  • 이는 DNS 관련 요청을 네임서버로 전달하고 해당 응답값을 클라이언트에게 전달하는 리졸버, 도메인을 IP로 변환하는 네임서버 등으로 이루어져 있다.
  • ex) www.naver.com에 DNS 쿼리가 오면 오른쪽부터 역순으로 [Root DNS] → [.com DNS] → [.naver DNS] → [.www DNS] 과정을 거쳐 완벽한 주소를 찾아 IP 주소를 매핑한다.

DNS 캐싱

  • 미리 해당 도메인이름을 요청했다면 로컬 PC에 자동적으로 저장된다.
  • 브라우저 캐싱과 OS 캐싱이 있다.

IP 라우팅

  • 해당 IP를 기반으로 라우팅, ARP 과정을 거쳐 실제 서버를 찾음

TCP 연결 구축

  • 브라우저가 TCP 3way – handshake 및 SSL 연결 등을 통해 연결을 설정한다.
  • 이후 요청을 보낸 다음 드디어 해당 요청한 서버로부터 응답을 받는다.
  • TCP연결은 HTTP/2 까지만 일어난다. HTTP/3는 TCP연결이 아닌 QUIC연결이 일어난다.

컨텐츠 다운로드

  • 요청한 컨텐츠를 서버로부터 다운받는다.
  • 다운로드를 시작하는 시점을 TTFB(Time To First Byte)라고도 한다.

브라우저 렌더링

  • 받은 데이터를 바탕으로 브라우저 엔진이 브라우저 렌더링 과정을 거쳐 화면을 만든다.