Network 웹 브라우저의 요청 흐름

1. 웹 브라우저 요청 흐름

웹 브라우저에 대한 요청흐름에 대해서 살펴보겠습니다. 예시로 된 IP이기때문에 실제와 같지 않습니다.
웹브라우저: 127.0.0.1
구글서버: 127.0.0.2
요청 URL: https://www.google.com:443/search?q=google&oq=google

다음과 같이 웹브라우저와 구글서버 IP, 요청 URL이 주어졌다고 가정하면 어떤일이 발생하게 될까요?

  1. 웹브라우저가 요청 URL에 접근을 요청합니다.
  2. DNS(Domain Name System)에서 해당되는 DNS의 IP를 조회해옵니다.
  3. 조회해 온 127.0.0.2 IP를 바탕으로 HTTP 요청 메시지를 생성합니다.
  • HTTP 요청 메시지
1
2
GET /search?q=google&oq=google HTTP/1.1
Host:www.google.com
  1. HTTP 요청 메시지를 바탕으로 HTTP 메시지를 웹 브라우저상에 전송합니다.

2. HTTP 메시지 전송과정

  1. 웹 브라우저가 HTTP 메시지를 생성합니다.
  2. SOCKET 라이브러리를 통해 해당 HTTP 메시지를 전달합니다.
    TCP/IP를 연결(IP,PORT)에 대해서 데이터 전달을 진행합니다.
  3. TCP/IP 패킷을 생성하여, HTTP 메시지를 포함시킵니다.
  4. 네트워크인터페이스인 LAN 장비를 통하여 인터넷으로 해당 메시지와 데이터를 전송합니다.
  5. 최종적으로 google.com(127.0.0.2) 서버에 도달하게 됩니다.

3. 패킷 생성

TCP/IP패킷은 어떤 구조로 구성되어있을까요?

출발지 IP, 출발지 PORT, 목적지 IP, 목적지 PORT, 전송 데이터, 그 외 기타의 설정들이 담겨져 있습니다.
즉, 출발지 IP, 출발지 PORT, 목적지 IP, 목적지 PORT는 TCP/IP 패킷으로 구성되어 있으며 HTTP메시지는 TCP/IP 패킷안에 HTTP 메시지가 포함되어 있는 형태로 볼 수 있습니다.

1
2
3
4
5
6
7
8
9
# TCP/IP 패킷(상위 개념)
----------------------------
출발지 IP,PORT
목적지 IP,PORT
----------------------------
# HTTP 메시지(하위 개념)
GET /search?q=google&oq=google HTTP/1.1
Host:www.google.com
----------------------------

4. HTTP 응답 메시지

이제 이렇게 웹 브라우저에 요청에 대한 서버는 응답값은 어떤 형식으로 오게 될까요?

정상적으로 요청에 대한 값을 받고 응답에 대한 패킷을 전달할때 응답패킷 형태로(TCP/IP, HTTP 메시지)를 함께 전송하게 됩니다.

1
2
3
4
5
6
HTTP/1.1 200 OK
Content-Type: text/html;charset=UTF-8

<html>
<body> ~ </body>
</html>

5. 웹 브라우저 렌더링

웹 브라우저의 요청을 통해서 서버에 대한 응답 요청 패킷을 전달받은 웹브라우저는 응답 패킷으로 넘어온 TCP/IP, HTTP 메시지에 포함된 데이터를 바탕으로 HTML 렌더링을 진행합니다.

6. HTTP의 특징

  • The World Wide Web (WWW)은 모든것이 대부분 HTTP형태로 통신
  • Client-Server 구조
  • Stateful : server side에 client와 server의 동작, 상태정보를 저장하는 형태, 세션 상태에 기반하여 server의 응답이 달라짐
  • Stateless : server side에 client와 server의 동작, 상태정보를 저장하지 않는 형태, server의 응답이 client와의 세션 상태와 독립적
  • 비 연결성(Connetionless)
  • HTTP 메시지