컴퓨터 공학 & 통신

[기술 면접/네트워크] 주소창에 www.naver.com을 입력했을 때 일어나는 일

왈왈디 2023. 7. 20. 12:17
728x90

기술 면접의 최단골 질문.

주소창에 www.naver.com(특정 url)을 입력했을 때 컴퓨터에 어떤 일이 일어나는지 알아보자.

 

아래 7가지 단계로 이야기 해볼 수 있다.

 

  1. 리다이렉트
  2. 캐싱
  3. DNS
  4. IP라우팅 & ARP
  5. TCP 연결 구축
  6. 응답 & 콘텐츠 다운로드
  7. 브라우저 렌더링

 

1. 리다이렉트

리다이렉트가 있다면 리다이렉트를 진행하고, 

없다면 그대로 해당 요청에 대한 과정이 진행된다.

 

2. 캐싱

해당 요청이 캐싱이 가능한지 여부를 파악한다.

캐싱되어 있는 요청이라면 캐싱된 값을 반환하며,

캐싱 되지 않은 새로운 요청이라면 그 다음 단계로 넘어간다.

 

캐싱은 요청에 대한 응답을 저장하고 해당 값이 다시 요청되면

서버에 다시 요청하지 않고, 저장된 값을 제공하는 기술이다.

 

캐싱은 브라우저 캐시공유 캐시로 구분된다. 

브라우저 캐시

브라우저 캐시는 쿠키, 로컬 스토리지 등을 말하며, 

개인 캐시(private cache)라고도 부른다.

 

브라우저 자체가 사용자가 HTTP를 통해 다운로드 한 모든 문서를 보유하는 것을 말한다.

예를 들어, 어떤 사이트를 방문한 후 재방문 하면 콘텐츠가 빠르게 나타나는 것을 볼 수 있는데,

브라우저 캐시 덕분이다.

첫 방문, 혹은 캐시 삭제 후 방문한 경우 속도가 훨씬 느린 것을 볼 수 있다.

 

공유 캐시

공유 캐시는 클라이언트와 서버 사이에 있는 캐시로

사용자 간에 공유할 수 있는 응답을 저장한다.

 

대표적인 예가 요청 서버 앞에 둔 프록시 서버의 캐싱이다.

리버스 프록시를 두어 내부 서버로 포워드한다고도 이야기 한다.

 

예를 들어, node.js 서버 앞에 nginx 프록시 서버를 두어

캐싱 서버로 이용할 수 있다.

AWS의 cloudfront 혹은 cloudflare 또한 콘텐츠 전송 네트워크(CDN)을 두어 캐싱할 수 있다.

 

3. DNS(Domain Name System)

캐싱을 거친 후에도 요청해야 하는 경우, 실제 서버에 요청을 보내야 한다.

브라우저가 요청한 FQDN(Fully Qualified Domain Name)

www.naver.com  등의 이름을 DNS를 통해 실제 IP주소를 확인한다.

 

* FQDN

호스트와 도메인이 합쳐진 완전한 도메인 이름을 말한다.

www 등이 호스트 부분이고, naver.com 등을 도메인이라고 한다.

 

DNS계층적인 도메인 구조분산된 데이터베이스를 이용한 시스템으로 

FQDN을 인터넷 프로토콜인 IP로 바꿔주는 시스템이다.

이는 DNS 관련 요청을 네임서버로 전달하고

해당 응답값을 클라이언트에 전달하는 리졸버

도메인을 IP로 변환하는 네임 서버 등으로 이루어져 있다.

 

www.naver.com에 DNS 쿼리가 오면

오른쪽부터 역순으로 

[Root DNS] > [.com DNS] > [.naver DNS] > [.www DNS] 과정을 거쳐

완벽한 주소를 찾아 IP주소를 매핑한다.

 

DNS 캐싱

이전에 해당 도메인 이름을 요청한 적이 있다면 로컬 PC에 자동적으로 저장된다. 

브라우저 캐싱과 OS 캐싱이 있다.

 

4. IP 라우팅

IP주소를 기반으로 IP 라우팅이 일어나며,

ARP 과정을 거쳐 실제 서버를 찾는다.

 

5. TCP 연결 구축

브라우저가 TCP 3웨이-핸드셰이크SSL 연결 등을 통해

연결을 설정한다.

 

참고로, TCP 연결은 HTTP/2까지 일어나며,

HTTP/3는 QUIC을 통해 연결하고 데이터를 주고 받는다.

 

6.  응답 & 콘텐츠 다운로드

이후 요청을 보낸 후 드디어 서버로부터 응답을 받는다.

첫 바이트를 응답받는 순간을 TTFB(Time to First Byte)라 부르기도 한다.

브라우저는 사용자가 요청한 콘텐츠를 서버로부터 다운로드 받는다.

 

7.  브라우저 렌더링

받은 데이터를 바탕으로 브라우저 엔진이 브라우저 렌더링을 거쳐 화면을 구성한다.

 

그럼 사용자가 보는 네이버 화면이 완성된다~~!

 

참고: inflearn 강의 'CS 지식의 정석 - 큰돌'

728x90