🌐 HTTP란?
📖 정의
**HTTP (HyperText Transfer Protocol)**는 웹에서 데이터를 주고받기 위한 프로토콜입니다. 클라이언트(브라우저)와 서버 간의 통신 규칙을 정의하며, 웹의 근간이 되는 기술입니다.
🎯 비유로 이해하기
우편 시스템
HTTP를 우편 시스템에 비유하면:
편지 보내기 (HTTP Request)
├─ 보내는 사람: 클라이언트 (브라우저)
├─ 받는 사람: 서버
├─ 편지 내용: 요청 데이터
└─ 우편 규칙: HTTP 프로토콜
답장 받기 (HTTP Response)
├─ 보내는 사람: 서버
├─ 받는 사람: 클라이언트
├─ 답장 내용: 응답 데이터
└─ 상태: 성공/실패
레스토랑 주문
고객 (클라이언트)
↓ 메뉴판 보기 (GET 요청)
웨이터 (HTTP)
↓ 주문 전달
주방 (서버)
↓ 음식 준비
웨이터 (HTTP)
↓ 음식 전달 (응답)
고객 (클라이언트)
💡 HTTP의 핵심 개념
요청과 응답
클라이 언트 ────요청(Request)───→ 서버
←───응답(Response)────
요청 (Request)
- 클라이언트가 서버에게 무엇을 원하는지 전달
- 메서드, URL, 헤더, 바디로 구성
응답 (Response)
- 서버가 클라이언트의 요청에 대한 결과 전달
- 상태 코드, 헤더, 바디로 구성
HTTP의 특징
1. 무상태성 (Stateless)
├─ 각 요청은 독립적
├─ 이전 요청을 기억하지 않음
└─ 쿠키/세션으로 상태 관리
2. 클라이언트-서버 구조
├─ 역할 분리
├─ 클라이언트: UI/UX
└─ 서버: 데이터/비즈니스 로직
3. 무연결성 (Connectionless)
├─ 요청-응답 후 연결 종료
├─ 서버 리소스 절약
└─ Keep-Alive로 개선 가능
📚 시리즈 문서
이 시리즈는 HTTP의 핵심 개념을 단계별로 다룹니다:
1. HTTP 메서드
GET, POST, PUT, DELETE 등
- HTTP 메서드의 종류와 용도
- RESTful API 설계
- 멱등성과 안전성
- 실전 예제
2. HTTP 상태 코드
200, 404, 500 등
- 2xx (성공), 4xx (클라이언트 오류), 5xx (서버 오류)
- 각 상태 코드의 의미
- 실무에서 자주 보는 코드
- 에러 처리 방법
3. HTTP 헤더
요청/응답 헤더
- 헤더의 역할과 종류
- Content-Type, Authorization 등
- CORS 관련 헤더
- 캐싱 헤더
4. 쿠키와 세션
상태 관리
- HTTP의 무상태성 극복
- 쿠키의 동작 원리
- 세션 vs 토큰
- 보안 고려사항
🔍 HTTP의 진화
HTTP/0.9 (1991)
├─ GET 메서드만 지원
└─ HTML만 전송
HTTP/1.0 (1996)
├─ 헤더 개념 도입
├─ POST, HEAD 추가
└─ 상태 코드 도입
HTTP/1.1 (1997)
├─ Keep-Alive 기본
├─ 파이프라이닝
├─ PUT, DELETE 등 추가
└─ 호스트 헤더 필수
HTTP/2 (2015)
├─ 바이너리 프로토콜