기타/CS
[HTTP] HyperText Transfer Protocol
Systema
2025. 3. 2. 17:08
1. HTTP란?
HTTP (HyperText Transfer Protocol)
HTTP는 웹에서 클라이언트(브라우저)와 서버 간 데이터를 주고받는 프로토콜입니다.
웹 페이지, API 요청, 파일 다운로드 등의 모든 웹 통신에서 사용됩니다.
HTTP 특징
- 비연결성 (Stateless) : 한 번의 요청-응답 후 연결이 종료됨.
- 무상태성 (Stateless) : 각각의 요청은 독립적이며, 이전 요청 정보를 기억하지 않음.
- TCP/IP 기반 : HTTP는 기본적으로 TCP(전송 제어 프로토콜)를 사용하여 데이터 전송.
- 주요 버전 :
- HTTP/1.1: 기본적인 웹 통신 방식.
- HTTP/2: 멀티플렉싱 지원(여러 요청 동시 처리), 헤더 압축.
- HTTP/3: QUIC 기반으로 더 빠른 데이터 전송.
2. HTTP 요청 (HTTP Request)
클라이언트(브라우저 또는 API 클라이언트)가 서버에 정보를 요청하는 방식입니다.
HTTP 요청의 기본 구조
GET /index.html HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0
Accept: text/html
구성 요소
1) 요청 라인 (Request Line)
- HTTP 메서드 : GET, POST, PUT, DELETE, PATCH 등.
- URL (경로, 리소스 위치) : /index.html
- HTTP 버전 : HTTP/1.1
2) 헤더 (Headers)
요청에 대한 추가 정보를 전달.
예시:
- Host : 요청을 보내는 서버 도메인 (http://www.example.com)
- User-Agent : 클라이언트(브라우저, 앱)의 정보 (Mozilla/5.0)
- Accept : 응답에서 원하는 데이터 형식 (text/html)
3) 바디 (Body, 선택적)
- POST, PUT 요청에서 데이터를 전송할 때 사용.
- JSON, XML, Form 데이터 등을 포함할 수 있음.
주요 HTTP 요청 메서드
메서드 | 설명 |
GET | 리소스를 조회 (데이터 가져오기) |
POST | 새로운 리소스를 생성 (데이터 전송) |
PUT | 기존 리소스를 수정 (전체 변경) |
PATCH | 기존 리소스를 부분 수정 (일부 변경) |
DELETE | 리소스를 삭제 |
3. HTTP 응답 (HTTP Response)
서버가 클라이언트의 요청에 대해 반환하는 응답입니다.
HTTP 응답 구조
HTTP/1.1 200 OK
Date: Sun, 02 Mar 2025 12:00:00 GMT
Server: Apache/2.4.41 (Ubuntu)
Content-Type: text/html
Content-Length: 1256
<html>
<body>Hello, World!</body>
</html>
구성 요소
1) 상태 라인 (Status Line)
- HTTP 버전 : HTTP/1.1
- 상태 코드(Status Code) : 200
- 상태 메시지(Status Message) : OK
2) 헤더 (Headers)
- Date : 응답 시간 (Sun, 02 Mar 2025 12:00:00 GMT)
- Server : 서버 정보 (Apache/2.4.41 (Ubuntu))
- Content-Type : 응답 데이터 유형 (text/html)
- Content-Length : 응답 데이터의 크기 (1256 바이트)
3) 바디 (Body)
- 클라이언트가 요청한 데이터 (HTML, JSON 등)
HTTP 응답 상태 코드
상태코드 | 의미 |
200 OK | 요청 성공 |
201 Created | 새로운 리소스 생성 |
204 No Content | 요청 성공, 내용 없음 |
301 Moved Permanently | 리소스 영구 이동 |
302 Found | 리소스 임시 이동 |
400 Bad Request | 잘못된 요청 |
401 Unauthorized | 인증 필요 |
403 Forbidden | 접근 금지 |
404 Not Found | 요청한 리소스를 찾을 수 없음 |
500 Internal Server Error | 서버 내부 오류 |
502 Bad Gateway | 게이트웨이 오류 |
503 Service Unavailable | 서버 과부하 또는 점검 중 |
4. 정리
- HTTP (HyperText Transfer Protocol)은 웹에서 클라이언트와 서버 간 데이터를 주고받는 프로토콜이다.
- 요청(Request)은 GET, POST, PUT, DELETE 등의 메서드를 사용하여 서버에 데이터를 요청한다.
- 응답(Response)은 상태 코드(200 OK, 404 Not Found 등)와 함께 요청된 데이터를 반환한다.
- HTTP는 기본적으로 Stateless(무상태성)을 가지며, 이를 보완하기 위해 쿠키, 세션, 토큰 등이 사용된다.