브라우저에 www.google.com을 검색했을 때 일어나는 일을 짚어보면서 웹의 통신 흐름을 알아보는 글입니다.
큰 흐름 살펴보기
1. 브라우저 캐시 체크
브라우저 캐시 -> OS캐시 -> 라우터 캐시 -> ISP 캐시에서 google.com과 대응하는 IP 주소를 찾는다
브라우저 캐시에서 google.com에 대한 데이터가 있는지 찾습니다. 브라우저 캐시에 데이터가 없다면 OS캐시를 찾아보게 됩니다. 그 다음 라우터 캐시, ISP(Internet Service Provider)캐시를 확인합니다.
캐시
캐시는 데이터나 정보를 일시적으로 저장하는 장소를 가리킵니다. 컴퓨터 시스템에서 캐시는 빠른 액세스를 위해 사용되며, 데이터에 다시 액세스할 때 더 빠르게 데이터에 접근할 수 있도록 도와줍니다.
라우터
라우터는 네트워크에서 데이터 패킷을 전달하는 장치입니다. 일반적으로 두 개 이상의 네트워크를 연결하고, 데이터 패킷이 출발지에서 목적지로 안전하게 전달되도록 합니다. 이를 위해 라우터는 네트워크 주소 정보를 사용하여 패킷의 경로를 결정하고, 이러한 경로를 따라 패킷을 전달합니다.
즉, 집에서 사용하는 공유기를 생각하시면 됩니다.
ISP
인터넷 서비스 제공자(Internet Service Provider, ISP)는 인터넷에 접속할 수 있는 서비스를 제공하는 기업이나 기관을 가리킵니다. ISP는 전화선, 케이블, 광섬유 등과 같은 통신 인프라를 통해 고객에게 인터넷 액세스를 제공합니다.
즉, 인터넷 통신사를 생각하시면 됩니다.
2. DNS(Domain Name Service)에서 IP 주소 획득
[1] 브라우저 캐시 체크에서 IP 주소를 획득하지 못 했다면 DNS서버에 DNS 쿼리를 보냅니다. 이를 Recursive search라고 하고, ISP의 DNS recursor가 담당합니다.
3. 브라우저와 서버가 TCP Connect를 한다
IP 주소를 찾게 되었다면 TCP/IP를 사용해 서버에 연결 신호를 보냅니다.
TCP 부분은 데이터를 잃지 않고 잘 보내는 방법을 담당하고, IP부분은 주소에 맞게 잘 보내는 쪽을 담당합니다.
TCP 연결을 하는 방법을 3way handshaking이라고 합니다.
처음에 클라이언트 측에서 SYN 신호를 보냅니다 (SYN-SENT), 이 떄 포트를 열 것을 요청하는 겁니다. 그러면 서버측에서 SYN과 ACK를 보내고, 클라이언트 측에서 자신이 보낸 정보가 맞는지 체크한 수 서버에게 ACK를 보냅니다.
이 방법을 통해 클라이언트와 서버 서로 안전하게 정보를 교환할 수 있게 됩니다.
TCP/IP(Transmission Control Protocol/Internet Protocol)
전송 제어 규약(TCP)와 인터넷 규약(IP)은 데이터가 어떻게 웹을 통해 데이터를 주고 받는지에 대한 규약입니다.
이를 사용하겠다는 것은 IP주소 체계를 따르며 TCP의 특성을 활용해 송신자와 수신자의 논리적 연결을 생성하고 신뢰성을 유지할 수 있도록 하겠다는 의미입니다.
3. 브라우저가 HTTP 요청을 보내고 서버가 응답을 생성한다.
TCP 연결이 된 후 클라이언트가 GET요청을 통해 www.google.com 웹페이지를 요청합니다. 요청을 할 때 사용자의 브라우저 정보나 쿠키 등이 포함됩니다.
그러면 Google 서버는 이 요청에 대한 응답으로 페이지에 대한 정보를 제공합니다.
4. 브라우저가 HTML content를 보여준다
웹 브라우저는 위 요청으로 받은 HTML 문서를 파싱하여 사용자가 볼 수 있도록 렌더링 한다. 그리고 그 안의 자원들을 캐시에 저장한다.
'CS' 카테고리의 다른 글
[CS] OSI 7계층이란 (0) | 2024.03.31 |
---|---|
[디자인패턴] 싱글톤 패턴과 의존성 주입 (1) | 2024.03.23 |
[CS] HTTP와 HTTPS란 무엇이고 어떤 차이가 있을까? (0) | 2024.03.20 |
[CS] URL이란 무엇이고 어떻게 구성되어 있을까? (0) | 2024.03.16 |
[CS] MSA 아키텍처 스타일이 뭘까? (0) | 2023.11.01 |