새소식

CS

[매일메일] 사용자가 웹사이트에 처음 접근했을 때 발생하는 과정...

  • -

사용자가 크롬에 들어가서 www.naver.com을 입력하면...? 의 과정을 TCP/IP 5 계층을 기준으로 설명해 보겠습니다...

위와 같이 네트워크에서 데이터가 처리되는 5계층이 존재한다.

Application 계층

크롬 브라우저는 HTTP 프로토콜로 네이버의 웹 서버와 통신하려 할 것이다. 이때 브라우저가 요청한 도메인 이름(www.naver.com)에 대한 IP 주소를 알아내기 위해 DNS(Domain Name Service) 서버에 요청을 보낸다. IP 주소를 얻고 나서 이제 브라우저는 네이버 서버와 통신을 시작한다.

Transport 계층

브라우저가 네이버 서버와 통신을 시작하기 위해 TCP 3-Way Handshake 를 한다.

 

[매일메일] TCP 3-way handshake란?

TCP 3-way handshake란 TCP에서 처음에 연결을 수립할 때 사용되는 절차로 클라이언트와 서버 간에 총 3번의 메시지(세그먼트)를 교환하는 과정을 포함한다.클라이언트가 서버에 연결을 요청하기 위해

dockerel.tistory.com

Internet & Data-Link 계층

TCP 연결이 성립된 후 이제 브라우저가 HTTP 요청 메시지를 생성하여 네이버 서버에 전송한다. 예를 들어 브라우저가 GET 요청을 TCP 요청을 통해 80번 포트로 전송한다면 이때 데이터가 패킷 형태로 네트워크를 통해 전송된다. 이때 Internet 계층에서는 IP 주소를, Data-Link 계층에서는 MAC 주소를 사용하여 패킷이 전송된다.

 

그 후에 네이버 서버가 클라이언트인 브라우저의 요청을 수신하고 처리한 후 HTTP 응답 메시지를 생성하여 전송한다. 성공적인 처리를 의미하는 200 상태코드가 오면 브라우저는 해당 응답을 받아 HTML, CSS, JS 등의 데이터를 해석하여 브라우저 화면에 페이지를 렌더링한다.

 

모든 전송이 완료되면 클라이언트와 서버는 4-Way Handshake를 통해 TCP 연결을 종료한다.

➡️ 근데 이건 HTTP의 버전마다 다르다.

 

HTTP/1.0

기본적으로 요청-응답이 끝나면 TCP 연결을 바로 종료한다. 즉 매번 새로운 요청마다 3-Way Handshake를 다시 수행한다.

HTTP/1.1

기본적으로 Keep-Alive가 활성화되어 있어서 한 번 맺은 TCP 연결을 유지하면서 여러 개의 요청을 보낼 수 있다. 하지만 일정 시간 동안 추가 요청이 없으면 서버가 FIN 패킷을 보내면서 4-Way Handshake로 연결을 종료한다.

HTTP/2

하나의 TCP 연결을 유지하면서 여러 개의 요청을 동시에 처리(Multiplexing)할 수 있다.  따라서 TCP 연결을 자주 끊지 않고, 여러 요청을 한꺼번에 처리한 후 일정 시간 후에만 종료한다.

HTTP/3

TCP 대신 QUIC(UDP 기반 프로토콜)을 사용한다. QUIC은 연결을 맺을 때도 빠르고, 끊을 때도 TCP처럼 4-Way Handshake를 할 필요 없이 더 가볍게 처리할 수 있다.

 

HTTP 버전은 나중에 한번 더 정리하는걸로...

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.