컴퓨터 과학/네트워크

HTTP 메시지 구조 이해하기

Data Jun 2025. 10. 5. 10:07

HTTP는 클라이언트(보통 웹 브라우저)와 서버 간의 데이터를 주고받는 프로토콜입니다.
이때 데이터를 주고받는 단위를 HTTP 메시지라고 하며, 요청(request)과 응답(response) 모두 메시지 형식을 따릅니다.
이번 글에서는 HTTP 메시지가 어떻게 구성되어 있는지 단계별로 살펴보겠습니다.

 

1. HTTP 메시지의 기본 구조

HTTP 메시지는 다음 세 가지 요소로 구성됩니다.

  • 시작 라인(Start Line)
    → 메시지의 성격을 정의합니다. 요청 메시지의 경우 “요청 라인”, 응답 메시지의 경우 “상태 라인”이라고 부릅니다.
  • 필드 라인(Field Line) 또는 헤더(Header)
    → 메시지에 필요한 부가 정보를 전달합니다.
  • 메시지 본문(Message Body)
    → 실제 데이터를 포함하며, 필요할 경우에만 존재합니다.

시작 라인과 헤더 사이, 그리고 헤더와 본문 사이에는 빈 줄(줄바꿈) 이 존재하여 구분됩니다.

 

 

2. 시작 라인(Start-Line)

HTTP 메시지의 첫 줄은 요청인지, 응답인지에 따라 형태가 다릅니다.

 

 

1️⃣ 요청 메시지(Request Message)의 경우

 

요청 라인은 다음 세 부분으로 구성됩니다.

요청 라인 = 메서드(Method) + 요청 대상(Request Target) + HTTP 버전(HTTP Version)

 

1) 메서드(Method)

 서버의 자원(요청 대상)에 대해 어떤 작업을 수행할지를 지정합니다.
 대표적인 메서드는 다음과 같습니다:

  • GET : 자원을 요청 (읽기)
  • POST : 데이터를 서버로 전송 (생성)
  • PUT : 기존 자원 수정
  • DELETE : 자원 삭제

 2) 요청 대상(Request Target)

 요청이 어떤 자원을 대상으로 하는지를 나타내며, 보통 URI 경로가 사용됩니다.
 예를 들어 /hello?q=world는 hello라는 경로와 q=world라는 쿼리 파라미터를 포함합니다.
 만약 하위 경로가 없다면 /로 표기합니다.

 

 3)  HTTP 버전(HTTP Version)

 현재 사용 중인 HTTP 프로토콜 버전을 표시합니다.
 예: HTTP/1.1, HTTP/2

 

 

 2️⃣ 응답 메시지(Response Message)의 경우

 

응답 메시지의 시작 라인은 다음과 같이 구성됩니다:

상태 라인 = HTTP 버전 + 상태 코드 + 이유 구문

 

  • HTTP 버전 : 응답 메시지가 어떤 버전을 따르는지 명시
  • 상태 코드(Status Code) : 요청의 처리 결과를 숫자로 표현 (예: 200, 404, 500 등)
  • 이유 구문(Reason Phrase) : 상태 코드에 대한 간단한 설명 (예: OK, Not Found)

예를 들어:

HTTP/1.1 200 OK
HTTP/1.1 404 Not Found

 

 

3. 필드 라인(Field Line) 또는 헤더(Header)

헤더는 HTTP 통신에 필요한 부가 정보를 담고 있습니다.
각 헤더는 콜론(:)을 기준으로 “이름: 값” 형태로 구성됩니다.

예시:

Host: www.example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
Accept: text/html

여기서 User-Agent는 요청을 보낸 클라이언트의 정보(예: 브라우저 종류)를,
Accept는 클라이언트가 받을 수 있는 콘텐츠 타입을 나타냅니다.

 

 

4. 메시지 본문(Message Body)

메시지 본문은 실제 데이터를 담는 부분으로, 요청 또는 응답에 따라 포함 여부가 달라집니다.
예를 들어,

  • 요청 메시지의 경우 클라이언트가 서버에 데이터를 전송할 때 (예: 회원가입 시 입력 데이터)
  • 응답 메시지의 경우 서버가 클라이언트에 HTML, JSON 등의 콘텐츠를 반환할 때 포함됩니다.

본문은 다양한 콘텐츠 타입(Content-Type)으로 표현됩니다.
예:

  • text/html → HTML 문서
  • application/json → JSON 데이터

 

 

정리하면

 

HTTP 메시지는 단순히 텍스트 형식이지만, 클라이언트와 서버 간 통신의 핵심 구조를 이룹니다.
요청 라인으로 무엇을 요청하는지 명확히 하고, 헤더로 부가 정보를 전달하며,
필요할 경우 본문에 데이터를 담는 구조를 이해하면 웹 통신의 흐름이 한눈에 보입니다.

'컴퓨터 과학 > 네트워크' 카테고리의 다른 글

HTTP 상태 코드 완벽 정리  (0) 2025.10.05
HTTP 메서드란?  (0) 2025.10.05
HTTP의 네 가지 특성  (0) 2025.10.05
도메인 네임과 네임 서버, 그리고 자원을 식별하는 URI  (0) 2025.10.05
TCP vs UDP 비교  (0) 2025.10.04