
웹 브라우저에서 어떤 사이트에 접속하면 화면이 바로 나타납니다.
하지만 내부적으로는 클라이언트와 서버 사이에서 데이터가 교환되는 통신 과정이 존재합니다.
이때 사용되는 대표적인 프로토콜이 바로 HTTP (Hyper Text Transfer Protocol) 입니다.
HTTP의 기본 개념부터 특징, 메시지 구조, 상태 코드, 메서드까지의 핵심 개념을 정리합니다.
1. HTTP란 무엇인가
HTTP는 클라이언트와 서버가 데이터를 주고받기 위해 사용하는 통신 규약(Protocol) 입니다.
웹 환경에서 일반적인 구조는 다음과 같습니다.
- 클라이언트(Client) → 요청(Request)
- 서버(Server) → 응답(Response)
하단의 그림에서도 웹 클라이언트와 서버가 HTTP Request / Response로 통신하는 구조를 확인할 수 있습니다.

HTTP 동작 흐름
- 클라이언트가 서버에게 요청을 보냄
- 서버는 요청을 처리
- 서버가 결과를 응답으로 반환
예시
Client → GET /users
Server → 200 OK + 사용자 데이터
즉 HTTP는 웹 서비스에서 데이터를 요청하고 응답하는 기본적인 통신 방식입니다.
2. HTTP의 특징
HTTP에는 중요한 두 가지 특징이 있습니다.
- 무상태성 (Stateless)
- 비연결성 (Connectionless)
2.1 무상태성 (Stateless)
무상태성은 서버가 클라이언트의 상태를 저장하지 않는 구조를 의미합니다.
즉,
이전 요청 정보를 서버가 기억하지 않습니다.

예시
로그인 후에도 HTTP 자체는 상태를 기억하지 않습니다.
요청1 : 로그인
요청2 : 사용자 정보 조회
HTTP만으로는 로그인 여부를 알 수 없습니다.
그래서 다음 기술이 사용됩니다.
- Cookie
- Session
- Token (JWT)
무상태성의 장점
- 서버 확장성이 높음 (Scale-out 가능)
- 서버 장애 대응이 쉬움
- 서버 구조가 단순해짐
무상태성의 단점
- 클라이언트가 추가 데이터를 보내야 함
- 인증 정보 등을 매 요청마다 포함해야 함
2.2 비연결성 (Connectionless)
HTTP는 기본적으로 요청과 응답이 끝나면 연결을 종료하는 방식입니다.
즉,
요청 → 응답 → 연결 종료

장점
- 서버 자원 효율적 사용
- 동시 접속 처리에 유리
단점
- 매 요청마다 TCP 연결 생성
- 네트워크 비용 증가
이를 개선하기 위해 다음 기술이 등장했습니다.
- HTTP Keep-Alive
- HTTP/2
- HTTP/3
3. HTTP 구성 요소
HTTP는 크게 다음 요소로 구성됩니다.
- HTTP 상태 코드
- HTTP 메시지
- HTTP 메서드
3.1 HTTP 상태 코드 (Status Code)
HTTP 상태 코드는 클라이언트 요청 처리 결과를 숫자로 표현하는 코드입니다.
100 ~ 500번대 상태 코드 분류를 보여주고 있습니다.

상태 코드 분류
코드의미
| 1xx | 정보 |
| 2xx | 성공 |
| 3xx | 리다이렉션 |
| 4xx | 클라이언트 오류 |
| 5xx | 서버 오류 |
대표 상태 코드
200 OK
요청 성공
HTTP/1.1 200 OK
301 Moved Permanently
URL이 변경됨
400 Bad Request
잘못된 요청
404 Not Found
요청 리소스 없음
500 Internal Server Error
서버 내부 오류
3.2 HTTP 메시지
HTTP 통신은 메시지(Message) 단위로 이루어집니다.
- Request Message
- Response Message
자료에서도 HTTP Request Message와 Response Message 흐름을 확인할 수 있습니다.

Request Message
클라이언트 → 서버
예시
GET /users HTTP/1.1
Host: example.com
Authorization: Bearer token
Response Message
서버 → 클라이언트
HTTP/1.1 200 OK
Content-Type: application/json
{
"name": "kim"
}
3.3 HTTP 메시지 구조
HTTP 메시지는 다음과 같은 구조로 이루어집니다.
Start-line / Header / Empty line / Message Body 구조가 나타납니다.

1. Start Line
요청 또는 응답의 시작 라인입니다.
요청
GET /users HTTP/1.1
응답
HTTP/1.1 200 OK
2. Header
메타 데이터를 전달합니다.
예시
Content-Type: application/json
Authorization: Bearer token
Content-Length: 123
대표 헤더
- Content-Type
- Authorization
- Cookie
- Cache-Control
3. Empty Line
Header와 Body를 구분하는 빈 줄
(empty line)
4. Message Body
실제 데이터가 들어가는 영역입니다.
예
{
"id": 1,
"name": "kim"
}
4. HTTP 메서드
HTTP 메서드는 클라이언트가 서버에게 요청의 목적을 전달하는 방식입니다.
주요 HTTP 메서드 종류를 표로 정리하고 있습니다.
주요 HTTP 메서드
Method설명

GET
리소스 조회
GET /users
POST
데이터 생성
POST /users
Body에 데이터 포함
PUT
리소스 전체 변경
PUT /users/1
PATCH
리소스 일부 수정
PATCH /users/1
DELETE
리소스 삭제
DELETE /users/1
5. 정리
HTTP는 웹 서비스에서 클라이언트와 서버가 데이터를 교환하기 위한 핵심 프로토콜입니다.
핵심 특징은 다음과 같습니다.
✔ 클라이언트-서버 구조
✔ 무상태성 (Stateless)
✔ 비연결성 (Connectionless)
또한 HTTP는 다음 구성 요소로 이루어집니다.
- 상태 코드 (Status Code)
- 메시지 (Message)
- 메시지 구조 (Start line / Header / Body)
- 메서드 (GET, POST 등)
'CS' 카테고리의 다른 글
| [CS] HTTP vs HTTPS 차이 (0) | 2026.04.05 |
|---|