HTTP (Hypertext Transfer Protocol) 기초
HTTP는 웹 서버와 웹 클라이언트(주로 웹 브라우저) 사이에 데이터를 주고받기 위해 사용되는 통신 규약(Protocol)입니다. HTML 문서, 이미지, 동영상, JSON 데이터 등 웹에서 전송되는 모든 데이터의 기반이 됩니다.
1. HTTP의 핵심 원리: 요청과 응답
HTTP 통신은 기본적으로 클라이언트-서버 모델을 따르며, 요청(Request)과 응답(Response) 쌍으로 이루어집니다.
- 클라이언트 요청: 브라우저(클라이언트)가 서버에게 특정 자원(웹 페이지, 파일 등)을 달라고 요청합니다. 요청 시 메서드 (GET, POST 등)와 URL을 사용합니다.
- 서버 응답: 서버는 요청을 처리한 후, 요청한 자원과 함께 요청 처리 결과를 나타내는 상태 코드(Status Code)를 클라이언트에게 보냅니다.
2. HTTP의 특징
- 무상태성 (Stateless): HTTP는 기본적으로 상태를 유지하지 않습니다. 각 요청이 독립적으로 처리되며, 이전 요청이나 이후 요청의 상태를 기억하지 않습니다. (이를 보완하기 위해 쿠키(Cookie)나 세션(Session) 같은 기술을 사용합니다.)
- 비연결성 (Connectionless): 클라이언트가 요청을 보내고 서버가 응답을 보내면, 연결을 바로 끊습니다. (자원을 효율적으로 사용하기 위함)
3. 대표적인 HTTP 상태 코드
서버가 클라이언트에게 보내는 3자리 숫자로, 요청의 결과를 나타냅니다.
| 분류 | 코드 범위 | 의미 | 대표 코드 | 설명 |
|---|---|---|---|---|
| 1xx | Informational | 요청을 받았으며 작업을 계속함 | 100 |
Continue |
| 2xx | Success | 요청을 성공적으로 처리함 | 200 |
OK (성공) |
| 3xx | Redirection | 요청 완료를 위해 추가 작업이 필요함 | 301 |
Moved Permanently |
| 4xx | Client Error | 클라이언트 측의 요청이 잘못됨 | 404 |
Not Found |
| 5xx | Server Error | 서버가 요청을 처리하지 못함 | 500 |
Internal Server Error |
자주 사용되는 코드
| 코드 | 설명 | 의미 |
|---|---|---|
| 200 OK | 요청이 성공적으로 처리되었으며 응답 본문이 전송됨. | 가장 일반적인 성공 응답 |
| 201 Created | 요청이 성공적으로 처리되었으며 새로운 자원이 생성됨. (주로 POST 요청의 결과) |
API 생성 성공 |
| 400 Bad Request | 클라이언트의 문법 오류 등으로 서버가 요청을 이해할 수 없음. | 요청 데이터 문제 |
| 401 Unauthorized | 클라이언트가 인증되지 않았거나 유효한 인증 자격 증명이 없음. | 로그인 필요 |
| 403 Forbidden | 클라이언트는 인증되었으나 자원에 접근할 권한이 없음. | 권한 부족 |
| 404 Not Found | 요청한 자원(URL)을 서버에서 찾을 수 없음. | 가장 흔한 에러 |
| 503 Service Unavailable | 서버가 일시적인 과부하 또는 점검으로 요청을 처리할 수 없음. | 서버 일시 중단 |