요즘 웹에서 오가는 거의 모든 데이터는
결국 HTTP 메시지로 전송된다.
결론은 하나다.
: “HTTP 위에서 다 돌아간다.”
⸻
현재도 실무에서 기본은 HTTP/1.1 기반 이해다.
그 위에서 2, 3이 성능 개선을 더한 구조라고 보면 된다.
⸻
즉, HTTP는 전송 계층 위에서 동작하는 애플리케이션 프로토콜이다.
HTTP는 기본적으로
요청(Request) → 응답(Response)
클라이언트가 먼저 말 걸고
서버가 답한다.
서버는 “기다리는 입장”이고
클라이언트가 주도권을 가진다.
이 부분이 HTTP에서 제일 중요하다고 느꼈다.
서버가 이전 요청을 기억하지 않는다.
각 요청은 완전히 독립적이다.
장점
단점
⸻
서버가 클라이언트 상태를 기억한다.
Ex. 로그인 상태 유지
단점
⸻
완전한 Stateless는 어렵다.
Ex.
그래서
같은 방식으로 “최소한만 상태 유지”한다.
핵심은 가능한 Stateless로 설계하라.
트래픽이 폭증할 때 살아남으려면 무조건 Stateless가 유리하다.
HTTP는 기본적으로
요청 → 응답 → 연결 종료
연결을 계속 유지하지 않는다.
장점
1시간에 수천 명이 접속해도
실제로 동시에 요청하는 건 훨씬 적다.
한계
그래서 등장한 게
HTTP 지속 연결(Persistent Connection)이다.
연결 유지 → 여러 요청 처리 → 종료
그리고 HTTP/2, HTTP/3에서 더 최적화되었다.
HTTP 메시지는 생각보다 단순하다.
start-line
header
(empty line)
message body
⸻
GET /search?q=hello HTTP/1.1
Host: www.google.com
구성:
METHOD SP PATH SP VERSION
Ex.
⸻
HTTP/1.1 200 OK
Content-Type: text/html
구성:
VERSION SP STATUS_CODE SP REASON
상태코드 Ex.
⸻
헤더에는 부가 정보가 들어간다.
Ex.
사실 HTTP 헤더가 거의 모든 걸 담당한다고 봐도 된다.
⸻
실제 데이터가 들어가는 곳.
바이트로 표현 가능한 모든 데이터 가능.
HTTP는
그래서
“HTTP는 웹 프로토콜”이 아니라
“사실상 인터넷 기본 프로토콜”이 되어버렸다.
출처
모든 개발자를 위한 HTTP 웹 기본 지식 (김영한, 인프런, 2020)