TIL

HTTP 기본

Hyper Text Transfer Protocol

요즘은 HTTP 메시지에 모든 것을 전송한다.

기반 프로토콜

TCP가 안정적이고 좋은 거 아니였나?

→ TCP는 속도가 느리다. UDP를 사용해서 애플리케이션 레벨에서 신뢰성을 확보하고 속도를 높이는 방법을 선택

HTTP 특징

클라이언트 서버 구조

예전에는 클라이언트와 서버라는 개념이 분리되어 있지 않았다.

하지만 분리 후

서버는 비즈니스 로직과 데이터 관리에 집중한다.

클라이언트에는 UI와 사용성에 집중한다.

양쪽이 독립적으로 진화할 수 있다!

ex) 웹, 모바일 등이 만들어져도 서버엔 변화가 적고 트래픽이 증가해서 서버를 증설해도 클라이언트엔 변화가 적다.

무상태 프로토콜 (stateless)

→ 무상태는 응답 서버를 쉽게 바꿀 수 있다.

무한한 서버 증설 가능

Stateless 한계

비연결성

기본적으로 TCP/IP 프로토콜은 연결을 유지한다. 연결을 유지하는 경우 서버 2,3은 아무 일도 하지 않아도 연결을 유지함으로써 자원을 소모한다.

하지만 HTTP는 기본이 연결을 유지하지 않는다.

비연결성 한계와 극복

HTTP 메시지

시작 라인

요청 메시지

GET /search?q=hello&hl=ko HTTP/1.1

응답 메시지

HTTP/1.1 200 OK

HTTP 헤더

Host: www.google.com

Content-Type: text/html;charset=UTF-8

Content-Length: 3423

HTTP 메시지 바디

HTTP는 단순하고 확장 가능하다