HTTP(HyperText Transfer Protocol)는 웹 브라우저와 서버 사이에서 HTML 문서, 이미지, 데이터 등을 주고받는 애플리케이션 계층 프로토콜입니다.
클라이언트(브라우저)가 요청을 보내면 서버가 응답합니다. 서버는 먼저 데이터를 보낼 수 없습니다.
각 요청은 독립적으로 처리됩니다. 서버는 이전 요청을 기억하지 않으므로 로그인 상태 유지에는 쿠키나 세션이 필요합니다.
GET /index.html HTTP/1.1
Host: example.com
User-Agent: Mozilla/5.0
Accept: text/html
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 1234
<html>...</html>
| 메서드 | 용도 |
|---|---|
| GET | 리소스 조회 |
| POST | 리소스 생성 |
| PUT | 리소스 전체 수정 |
| PATCH | 리소스 일부 수정 |
| DELETE | 리소스 삭제 |
| HEAD | 헤더만 조회 |
| OPTIONS | 허용 메서드 확인 |
| 범위 | 의미 | 예시 |
|---|---|---|
| 2xx | 성공 | 200 OK, 201 Created |
| 3xx | 리다이렉션 | 301 Moved Permanently, 304 Not Modified |
| 4xx | 클라이언트 오류 | 400 Bad Request, 401 Unauthorized, 404 Not Found |
| 5xx | 서버 오류 | 500 Internal Server Error, 503 Service Unavailable |
| 헤더 | 설명 |
|---|---|
| Content-Type | 본문 데이터 형식 (text/html, application/json 등) |
| Content-Length | 본문 크기 (바이트) |
| Authorization | 인증 정보 |
| Cache-Control | 캐싱 정책 |
| Cookie | 쿠키 데이터 |
HTTP는 평문(plaintext)으로 전송되므로 도청에 취약합니다. 이를 해결한 프로토콜이 TLS를 적용한 HTTPS입니다.