브라우저 주소창에 www.google.com을 입력하면 어떤 일이 일어나나요?

Kim Young Jae·2022년 10월 4일
0

1. www.google.com을 브라우저 주소창에 입력한다.

2. Browser에 캐싱된 DNS 기록들을 확인, www.google.com 에 대응하는 IP주소가 있는지 확인한다.

DNS의 목적은 편의성 제공이며 캐싱은 네트워크 트래픽을 조절하고 데이터 전송 시간을 줄인다.

  • 가장 먼저 브라우저 캐시를 확인한다. 브라우저는 일정기간 동안의 DNS 기록들을 저장하고 있다. DNS Query가 이 곳에서 가장 먼저 실행이 된다.
  • 그 다음에는 OS 캐시를 확인한다. 브라우저 캐시에 웹사이트 이름의 IP 주소가 발견되지 않으면, 브라우저는 systemcall을 통해 OS가 저장하고 있는 DNS 기록들의 캐시에 접근한다.
  • 그 다음에는 Router 캐시를 확인한다. 컴퓨터에 DNS 기록들을 찾지 못하면 브라우저는 DNS 기록을 캐싱하고 있는 Router와 통신을 해서 찾으려고 한다.
  • 그래도 못 찾는다면 마지막으로, ISP 캐시를 확인한다. ISP는 DNS 서버를 구축하고 있고 브라우저가 마지막으로 DNS 기록이 있기를 바라며 접근한다.

3. 요청한 URL이 캐시에 없으면, ISP의 DNS 서버가 www.google.com을 호스팅하고 있는 서버의 IP주소를 찾기 위해 DNS Query를 날린다.

DNS Query의 목적은 여러 다른 DNS 서버들을 검색해서 해당 사이트의 IP주소를 찾는 것이다. 이러한 검색을 Recursive Search라고 부른다. IP주소를 찾을 때 까지 DNS서버에서 다른 DNS서버를 오가면서 반복적으로 검색한다.
이 상황에서, ISP의 DNS 서버를 DNS recursor라고 부르고 인터넷을 통해 다른 DNS 서버들에게 물어 물어 도메인의 이름의 올바른 IP 주소를 찾는데 책임을 갖고 있다.

4. Browser가 서버와 TCP 연결을 한다.

브라우저가 올바른 IP 주소를 받게 되면 서버와 연결을 한다. 브라우저는 인터넷 프로토콜을 사용해서 서버와 연결이 된다. 웹사이트의 HTTP 요청의 경우 일반적으로 TCP를 사용한다.
클라이언트와 서버간 데이터 패킷들이 오가려면 TCP 연결이 되어야한다. TCP/IP three-way handshak 프로세스를 통해 연결이 이루어진다.

TCP/IP three-way handshak란?

  • 클라이언트 머신이 SYN 패킷을 서버에 보내고 연결을 열어달라고 물어본다.
  • 서버가 새로운 연결을 시작할 수 있는 포트가 있다면 SYN/ACK 패킷으로 대답은 한다.
  • 클라이언트는 SYN/ACK 패킷을 서버로부터 받으면 서버에게 ACK 패킷을 보낸다
    이 과정이 끝나면 TCP 연결이 완성된다.

5. Browser가 웹 서버에 HTTP 요청을 한다.

TCP 연결이 되어있다면, 데이터를 전송하면 된다. 클라이언트의 브라우저는 GET 요청을 통해 서버에게 www.google.com 웹페이지(html)을 요구한다. 요청을 할 때 쿠키나 헤더 정보와 같은 자료들을 포함 할 수 있다.

6. 서버가 요청을 처리하고 response를 생성한다.

서버는 웹서버를 가지고 있다. 이들은 브라우저로부터 요청을 받고 request handler한테 요청을 전달해서 요청을 읽고 response를 생성하게 된다. 이 request handler는 요청과 요청의 헤더, 쿠키를 읽어서 요청이 무엇인지 파악하고 필요하다면 서버에 정보를 업데이트 한다.

7. 서버가 HTTP response를 보낸다.

서버의 response에는 요청한 웹페이지, status code, compression type, 어떻게 인코딩 되어있는지, 어떻게 페이지를 캐싱할지 등이 포함된다.

8. Browser가 HTML content를 보여준다.

브라우저는 HTML content를 단계적으로 보여준다. 처음에는 HTML 스켈레톤을 렌더링하고 그 후에 HTML tag들을 체크해서 추가적으로 필요한 리소스등을 요청한다. 이 정적 우베페이지는 브라우저에 의해 캐싱이 되서 나중에 해당 페이지를 방문 할때 다시 서버로부터 요청하지 않는다. 드디어 원했던 www.google.com의 모습이 보여지게 된다.

profile
프론트엔드 뭐시기 주로 하는 사람

0개의 댓글