HTTP
웹 브라우저 요청 흐름
juuuuuuun
2024. 5. 15. 21:09
https://www.google.com/search?q=hello&hl=ko 라는 링크가 있다고 하자.
여기서 웹 브라우저는 어떻게 요청하고 응답을 받을까?
먼저 www.google.com:443 (여기서 포트번호 443은 생략가능) 를 이용해 DNS 조회한다.
조회에서 얻은 IP에 만든 HTTP 요청 메시지를 보낼 것이다.
이렇게 만든 HTTP 요청 메시지를 SOCKET 라이브러리를 통해 TCP/IP 계층으로 전달한다.
여기서 SYN,ACK을 통해 연결, 순서를 보장해 준다.
이렇게 연결이 되고 데이터를 받았다면 받은 요청 메시지를 TCP/IP 패킷에 포함시켜 패킷 안에 들어있는 IP, PORT번호에 맞는 서버로 보낸다.
서버에 요청 메시지가 도착하면 서버는 응답 번호, 컨텐트 타입 등을 포함한 응답 메시지를 생성해서 클라이언트로 보낸다.
클라이언트는 HTTP 응답 메시지를 보고 내부에 들어 있는 내용들을 랜더링 한다.
정리해보자면
1. 웹 브라우저가 HTTP 메시지를 생성
2. SOCKET 라이브러리를 통해 전달
- TCP/IP 연결, 데이터 전달
3. TCP/IP 패킷 생성, 여기엔 HTTP 메시지를 포함한다.
4. 서버에 도착하면 서버는 응답 메시지를 만들고 클라이언트에 보낸다.
5. 클라이언트는 이 메세지의 내용을 토대로 랜더링 해서 나타낸다.