[HTTP] 웹 브라우저 요청 흐름
✔ 웹 서비스가 작동하기 위한 수 많은 약속들
- 데이터를 주고받는 약속은 2가지로 구분이 된다
- TCP / UDP
TCP/UDP
TCP (전화기)
- 1 : 1 연결만 가능
- 데이터가 손실되면 재전송 요청을 하므로, 신뢰성 높음
- 데이터의 순서와 무결성 보장
- 속도가 상대적으로 느림
- 높은 신뢰도를 요한 서비스에 적합
UDP (라디오)
- 1: N 연결 가능
- 정보를 받았는지 확인치 않고 일방적으로 전송
- 데이터의 순서와 무결성 보장하지 않음
- 속도가 상대적으로 빠름
- IPTV, 실시간 스트리밍에 적합
✔ 브라우저 요청 흐름
https://www.google.com:443/생략 입력 시 어떻게 페이지를 반환하는 것인가?
웹 브라우저 서버 요청 과정
- 웹 브라우저는 DNS 서버 조회를 통해 200.200.200.2(구글 서버) 결과를 받는다
- 위 조회를 통해 IP정보, PORT정보를 얻은 후 웹 브라우저는 HTTP 메시지를 생성
HTTP 메시지 생성
GET /search?q=hello&hl=ko HTTP/1.1
Host: www.google.com
HTTP 요청 분류
- GET(POST, PUT, DELTE)
- 서버에 요청하는 방식
- Path
- 리소스의 위치 정보
- Query
- 서버에 전달하는 쿼리 파리미터 정보
- Version
- HTTP 버전 상태
- HOST
- 요청을 받는 서버쪽 정보
HTTP 메시지 전송
- 웹 브라우저가 HTTP 메시지 생성
- 소켓 라이브러리를 통해 OS계층에 전달
- TCP/IP 연결(IP, PORT)
- 데이터 전달
- LAN 장비를 통해 인터넷으로 전달
- TCP/IP 패킷 생성, HTTP 메시지 포함
- 전송 데이터가 HTTP 메시지를 의미 한다
인터넷 망에 해당 HTTP 메시지 전달
- 요청 패킷을 인터넷망에 던지면 수 많은 노드를 거쳐 구글 서버에 도착한다.
구글 서버에 요청 패킷 도착
- 요청 패킷이 도착하면 구글 서버는 TCP/IP 패킷을 버린후 HTTP 메시지만 꺼낸다
- 후에 해당 HTTP 메시지를 해석한 결과를 검색 엔진을 통해 데이터를 찾는다
구글 서버 HTTP 응답 메시지 생성
HTTP/1.1 200 OK
Content-Type: text/html;charset=UTF-8
Content-Length: 3423
<html>
<body>...</body>
<html>
구글 서버에서 나오는 HTTP 응답 메시지 분류
- HTTP 버전 및 응답 결과
- HTTP/1.1 200 OK
- Content-Type
- 응답하는 데이터가 HTML형식이고, 언어는 UTF-8로 되있다.
- Content-Lengh
- 실제 HTML의 길이를 의미
- 클라이언트의 요청 타입에 따라 응답 결과(프로그램, HTML, 정적파일)이 달라진다.
HTTP 응답 메시지 Client에 도착
- 구글 서버도 똑같이 응답 패킷을 만들고 Client에게 응답 패킷을 전달 한다.
- 또한 TCP/IP 패킷으로 데이터를 감싼 후에 데이터를 전달 해준다.
클라이언트의 브라우저에서 응답 HTTP 메시지를 오픈
HTTP/1.1 200 OK
Content-Type: text/html;charset=UTF-8
Content-Length: 3423
<html>
<body>...</body>
<html>
- 위 정보는 구글 서버의 응답 HTTP 메시지다.
- 클라이언트에서는 해당 HTTP 메시지를 읽은 후 웹 브라우저에서 랜더링을 수행한다.
댓글남기기