HTTP
웹에서 클라이언트와 서버가 데이터를 주고받기 위한 프로토콜입니다. 브라우저가 서버에 요청하고 응답을 받는 규칙이라고 보면 됩니다.
핵심 특징
- 비연결성(Connectionless): 요청-응답 후 연결 끊음
- 무상태(Stateless): 이전 요청을 기억하지 않음
- 텍스트 기반: 사람이 읽을 수 있는 형태
요청과 응답 구조
[요청]
GET /index.html HTTP/1.1
Host: www.example.com
User-Agent: Chrome/91.0
[응답]
HTTP/1.1 200 OK
Content-Type: text/html
<html>...</html>
HTTP 메서드
| 메서드 | 용도 | 특징 |
| GET | 데이터 조회 | 바디 없음, 캐싱 가능 |
| POST | 데이터 생성 | 바디에 데이터 담음 |
| PUT | 전체 수정 | 리소스 대체 |
| PATCH | 부분 수정 | 일부만 변경 |
| DELETE | 삭제 | 리소스 제거 |
상태 코드
| 코드 | 의미 | 예시 |
| 2xx | 성공 | 200 OK, 201 Created |
| 3xx | 리다이렉션 | 301 영구 이동, 304 캐시 사용 |
| 4xx | 클라이언트 에러 | 400 잘못된 요청, 404 없음 |
| 5xx | 서버 에러 | 500 서버 오류, 503 서비스 불가 |
HTTP 버전 변화
| 버전 | 특징 |
| HTTP/1.0 | 요청마다 연결 새로 맺음 |
| HTTP 1.1 | Keep-Alive로 연결 재사용 |
| HTTP 2 | 멀티플렉싱, 헤더 압축 |
| HTTP/3 | UDP 기반(QUIC), 더 빠른 연결 |
- HTTP: 평문 전송, 보안 취약
- HTTPS: TLS/SSL로 암호화, 현재 표준
무상태의 한계와 해결
로그인 상태 유지가 안 됨 → 쿠키, 세션, JWT로 해결
→ HTTP 1.1과 HTTP 2.0에 대해서 설명해주세요