1. 웹 브라우저 요청 흐름
웹 브라우저에 대한 요청흐름에 대해서 살펴보겠습니다. 예시로 된 IP이기때문에 실제와 같지 않습니다.
웹브라우저: 127.0.0.1
구글서버: 127.0.0.2
요청 URL: https://www.google.com:443/search?q=google&oq=google
다음과 같이 웹브라우저와 구글서버 IP, 요청 URL이 주어졌다고 가정하면 어떤일이 발생하게 될까요?
- 웹브라우저가 요청 URL에 접근을 요청합니다.
- DNS(Domain Name System)에서 해당되는 DNS의 IP를 조회해옵니다.
- 조회해 온 127.0.0.2 IP를 바탕으로 HTTP 요청 메시지를 생성합니다.
- HTTP 요청 메시지
1 | GET /search?q=google&oq=google HTTP/1.1 |
- HTTP 요청 메시지를 바탕으로 HTTP 메시지를 웹 브라우저상에 전송합니다.
2. HTTP 메시지 전송과정
- 웹 브라우저가 HTTP 메시지를 생성합니다.
- SOCKET 라이브러리를 통해 해당 HTTP 메시지를 전달합니다.
TCP/IP를 연결(IP,PORT)에 대해서 데이터 전달을 진행합니다. - TCP/IP 패킷을 생성하여, HTTP 메시지를 포함시킵니다.
- 네트워크인터페이스인 LAN 장비를 통하여 인터넷으로 해당 메시지와 데이터를 전송합니다.
- 최종적으로 google.com(127.0.0.2) 서버에 도달하게 됩니다.
3. 패킷 생성
TCP/IP패킷은 어떤 구조로 구성되어있을까요?
출발지 IP, 출발지 PORT, 목적지 IP, 목적지 PORT, 전송 데이터, 그 외 기타의 설정들이 담겨져 있습니다.
즉, 출발지 IP, 출발지 PORT, 목적지 IP, 목적지 PORT는 TCP/IP 패킷으로 구성되어 있으며 HTTP메시지는 TCP/IP 패킷안에 HTTP 메시지가 포함되어 있는 형태로 볼 수 있습니다.
1 | # TCP/IP 패킷(상위 개념) |
4. HTTP 응답 메시지
이제 이렇게 웹 브라우저에 요청에 대한 서버는 응답값은 어떤 형식으로 오게 될까요?
정상적으로 요청에 대한 값을 받고 응답에 대한 패킷을 전달할때 응답패킷 형태로(TCP/IP, HTTP 메시지)를 함께 전송하게 됩니다.
1 | HTTP/1.1 200 OK |
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 메시지