기타/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(무상태성)을 가지며, 이를 보완하기 위해 쿠키, 세션, 토큰 등이 사용된다.