HTTP란 무엇인가?
HTTP(HyperText Transfer Protocol)는 웹 상에서 데이터를 주고받기 위한 애플리케이션 계층 프로토콜이다.
우리가 브라우저 주소창에 URL을 입력하면, 브라우저는 서버와 HTTP 규약에 따라 통신을 수행한다.
HTTP는 클라이언트-서버(Client-Server)구조를 기반으로 하며,
요청(Request)과 응답(Response)이라는 두가지 메시지 형태로 동작한다.
즉, 클라이언트(브라우저)가 서버에 요청(Request)을 보내고, 서버는 해당 요청에대한 응답(Response)을 반환한다.
HTTP는 기본적으로 TCP/IP 위에서 동작하며, TCP의 신뢰성 있는 전송을 이용해 데이터를 교환한다.
(TCP가 연결 관리-패킷 재전송을 담당하고, HTTP는 데이터의 의미를 정의함)
HTTP의 계층적 위치

HTTP는 OSI 7계층 모델 중 애플리케이션 계층(Application Layer)에 속한다.
즉, HTTP는 TCP(4계층)위에서 동작하며, IP(3계층)을 통해 실제 데이터가 전송된다.
데이터는 다음과 같은 캡슐화 과정을 거쳐 송신된다.
HTTP Request → TCP Segment → IP Packet → Ethernet Frame
HTTP의 핵심 구조
HTTP는 두 가지 특징을 가진다. 이 두가지 특징 덕분에 HTTP는 단순하고 확장성 높은 구조를 유지할 수 있다.
- 비연결성 :
요청(Request)과 응답(Response)이 한번 교환되면 연결이 종료된다.
다음 요청 시에는 다시 TCP 연결을 맺어야 한다.
(HTTP/1.1 이후에는 Keep-Alive로 일정 시간 연결 유지 가능)
- 무상태성 :
서버는 이전 요청의 상태를 기억하지 않는다. 모든 요청은 독립적으로 처리된다.
이를 보완하기 위해 Cookie, Session, Token 기반 인증이 사용된다.
HTTP 요청 메시지 구조
HTTP 요청(Request)는 크게 3가지로(blank line 제외) 나뉜다.

- start line
HTTP Request Message의 시작 라인으로 3가지 부분으로 구성된다
- HTTP method : 요청의 의도를 나타낸다. (예 : GET, POST, PUT, DELETE 등)
- Request target : 요청 대상의 URL
- HTTP version : version에 따라 Request 메시지 구조나 데이터가 다를 수 있기 때문에, 프로토콜 version을 명시한다.
- header
요청에 대한 추가 정보(metadata)를 담고 있으며, Key:Value 형태로 구성된다.
대표적인 헤더 :
- Host : 요청하려는 서버의 도메인 이름과 포트
- User-Agent: 클라이언트(브라우저, 앱)의 정보
- Referer: 바로 직전에 머물렀던 웹 링크의 주소
- Accept: 클라이언트가 처리 가능한 미디어 타입 종류 나열
- If-Modified-Since: 수정된 리소스만 다시 요청
- Authorization: 인증 토큰을 서버로 보낼 때 쓰이는 Header
- Origin: 요청이 시작된 출처(CORS 정책 관련)
- Cookie: 쿠키 값 전송
- body
요청 본문(Body)은 서버로 전송할 데이터를 담는다.
GET 요청에서는 일반적으로 비어있지만,
POST/PUT/PATCH 요청에서는 폼 데이터나 JSON 데이터를 포함한다.

HTTP 응답 메시지 구조
HTTP 응답(Response)은 요청에 대한 서버의 처리 결과를 담는다.
구조는 요청과 유사하며, 다음 3부분으로 구성된다.(blank line 제외)

status line
HTTP Response의 상태를 간략하게 나타내주는 부분
HTTP Response의 status line 또한 3가지 부분으로 구성
HTTP/1.1 200 OK
- HTTP version
- Status Code (200, 404, 500 등)
- Status Text (OK, Not Found, Internal Server Error 등)
headers
서버가 응답에 대한 정보를 제공한다.
예시 :
Content-Type: text/html; charset=UTF-8
Content-Length: 74251
Cache-Control: public, max-age=31536000
Server: sffe
body
요청한 실제 데이터를 담는다.
HTML, JSON, 이미지, 파일 등 다양한 형식이 가능하다.
HTTP 요청 메서드
요청 메시지의 start line에 포함된 HTTP 메서드(Method)는 서버가 수행해야 할 동작의 "의도(Intent)"를 나타낸다.
| 메서드 | 역할 | 설명 |
| GET | 조회 | 서버의 자원을 요청 |
| POST | 생성 | 새 데이터를 생성하거나 전송 |
| PUT | 전체 수정 | 지정한 자원의 내용을 통째로 갱신 |
| PATCH | 부분 수정 | 자원의 일부만 수정 |
| DELETE | 삭제 | 지정한 자원 삭제 |
| HEAD | 헤더 조회 | 본문 없이 헤더 정보만 요청 |
| OPTIONS | 지원 메서드 조회 | 서버가 허용하는 메서드 확인 |
예를들어, REST API에서
- /users에 GET → 사용자 목록 조회
- /users에 POST → 새 사용자 등록
- /users/1에 DELETE → ID=1 사용자 삭제
이렇게 HTTP 메서드를 통해 CRUD 동작을 정의한다.
상태코드
서버의 응답 결과를 세 자리 숫자로 표현한다.
| 코드 범위 | 의미 | 예시 |
| 1xx | 정보(Informational) | 100 Continue |
| 2xx | 성공(Success) | 200 OK, 201 Created |
| 3xx | 리다이렉션(Redirection) | 301 Moved Permanently, 302 Found |
| 4xx | 클라이언트 오류(Client Error) | 400 Bad Request, 404 Not Found |
| 5xx | 서버 오류(Server Error) | 500 Internal Server Error, 503 Service Unavailable |
상태 코드를 통해 클라이언트는 요청의 처리 결과를 해석하고, 필요한 후속 동작(재시도, 리다이렉션 등)을 수행할 수 있다.
HTTPS와 보안 계층
HTTP는 기본적으로 평문 통신(Plaintext) 이기 때문에
중간자 공격(MITM, Man-in-the-Middle Attack)에 취약하다.
이를 보완한 것이 HTTPS(HTTP Secure)이며,
TLS(Transport Layer Security)를 통해 데이터 암호화하고
SSL 인증서(Certificate)로 서버의 신뢰성 검증한다.
HTTPS = HTTP + TLS (TCP 위에서 암호화된 채널을 형성하여 안전한 통신 보장)
즉, HTTPS는 네트워크 상에서 데이터가 노출되지 않도록 암호화, 인증, 무결성을 모두 보장하는 프로토콜이다.
정리 및 요약
| 특징 | 설명 |
| 애플리케이션 계층 프로토콜 | TCP/IP 기반, 텍스트형 메시지 교환 |
| 클라이언트-서버 구조 | 요청(Request) / 응답(Response) |
| 무상태성(Stateless) | 서버는 이전 상태를 저장하지 않음 |
| 확장성 높은 프로토콜 | 헤더 기반으로 기능 확장 가능 |
| 보안 확장 가능 | TLS 적용을 통해 HTTPS로 암호화 가능 |
HTTP는 단순히 웹페이지를 전송하는 도구가 아닌, 전 세계 모든 웹 서비스의 공통 언어이다.
REST API, GraphQL, WebSocket 등 현대 웹 기술의 대부분이 HTTP 프로토콜의 구조위에 설계되어 있다.
'Study > 인터넷 & 네트워크 기초' 카테고리의 다른 글
| 웹소켓(WebSocket)의 원리와 동작 방식 (0) | 2025.11.10 |
|---|---|
| 소켓의 동작 원리 (0) | 2025.11.10 |
| DNS와 그 작동원리 (0) | 2025.11.04 |
| 3. 브라우저의 작동 원리 (0) | 2025.11.03 |
| 1. 인터넷의 작동 원리 (0) | 2025.11.03 |