웹 브라우저 요청 흐름 간단 정리

woong·2024년 4월 7일
0
post-thumbnail

웹 브라우저 요청 흐름을 간단하게 정리해보았다.

중간에 수많은 과정들이 더 존재하지만 정말 간단하게 이해 위주로 정리한 글이다.


HTTP란?

HTTP(Hypertext Transfer Protocol)는 웹에서 데이터를 주고받는 서버-클라이언트 모델의 프로토콜이다.

웹 브라우저가 서버와 통신하는 규칙이라고 생각하면 쉽다.

HTTP 와 HTTPS는 차이점을 간단히 설명하면 HTTP 메시지는 일반 텍스트이므로, 권한이 없는 당사자가 인터넷을 통해 쉽게 액세스하고 읽을 수 있다. 반면, HTTPS는 모든 데이터를 암호화된 형태로 전송한다.

HTTP에 데이터 암호화가 추가된 프로토콜이 HTTPS인 것이다.

또 다른 차이점으로는 HTTP는 기본적으로 80포트를 사용하고 HTTPS는 443포트를 사용한다는 차이점이 있다.


요청 흐름

1. DNS를 통한 ip주소 확인

https://www.google.com/ 을 클릭하게 되면 어떤 과정을 거치면서 통신이 되는지 살펴보자.

먼저 도메인의 ip주소를 찾기위해 DNS서버를 조회하여 도메인이 어떤 ip주소를 가지고 있는지 알아낸다.

여기서 도메인은 www.google.com 이 부분을 의미하고 DNS란 도메인이 가리키는 ip주소를 찾아주는 역할을 한다.

비유하여 설명하자면 DNS는 전화번호부의 역할을 한다고 생각하면 이해하기 쉽다. 도메인(사람 이름) <---> ip(전화번호)

2. HTTP요청 메시지 생성

그런다음 웹브라우저가 HTTP 요청메시지를 다음과 같이 생성한다. (간략하게 표현하였음)

GET /search?q=hello&hl=ko HTTP/1.1
HOST: www.google.com

3. TCP/IP 연결

TCP/IP프로토콜을 이용해서 데이터를 전송하기 전에 먼저 3 Way Handshake를 통해 서버와 연결한다.

Client > Server : TCP SYN
Server > Client : TCP SYN ACK
Client > Server : TCP ACK

이 과정을 설명하자면 클라이언트는 먼저 서버에게 접속 요청을 한다. (SYN 패킷을 보낸다.)

요청을 받은 서버는 클라이언트에게 요청을 수락한다는 ACK 와 SYN flag 가 설정된 패킷을 발송한다.

클라이언트는 서버에게 ACK을 보내면 이후 연결이 이루어지고 데이터가 오고간다.

간단히 비유하지면 연결받아줘(클라이언트) -> 오케이(서버) -> 나도 오케이(클라이언트)

4. TCP/IP 패킷 생성

이후 데이터를 전송하기 전에 TCP/IP 패킷으로 HTTP 메시지를 감싼다.

TCP/IP 패킷에는 대표적으로 출발지 ip, port / 목적지 ip, port 정보등이 담겨 있다.

아래 그림을 보면 이해하기 더 쉽다.

5. 데이터 전달

이후 인터넷의 수많은 서버노드들을 통해 요청 패킷이 구글 서버에 도착하게 된다.

그러면 구글 서버는 TCP/IP 패킷에 감싸져 있는 데이터를 추출하고 해석 한다.

이후 서버는 클라이언트에게 보낼 HTTP응답 메시지를 만든다.

HTTP/1.1 200 OK
Content-Type: text/html;charset=UTF-8
Content-Length: 3154

<html>
  <body>....</body>
</html>

그 이후 구글 서버도 클라이언트가 서버에게 요청을 보낼때와 같이 전송할 데이터에 TCP/IP 패킷을 씌우고 다시 클라이언트에게 패킷을 전송하게 된다.

클라이언트는 응답 패킷을 받아 안에 있는 데이터(html)를 추출해 렌더링 하는 과정을 거친다.

profile
안녕하세요! 👋

0개의 댓글