네트워크

[네트워크] HTTP 메시지란?

연화 2025. 1. 3. 18:12

HTTP 메시지는 웹 클라이언트와 서버 간의 통신을 위해 사용되는 데이터의 형식입니다.

  • 클라이언트가 서버로 전송하는 HTTP 요청(Request)
  • 서버가 클라이언트로 반환하는 HTTP 응답(Response)

HTTP 메시지에는 클라이언트가 전송하는 HTTP 요청, 그리고 서버가 반환하는 HTTP 응답이 있습니다. 기능과 세부 구조에서는 차이가 있지만, 크게 보면 이들은 HTTP 헤드와 바디로 구성된다는 공통점이 있습니다.

(1) HTTP 헤드(Head)

  • 시작 줄(Start-line): 헤드의 첫 줄로, 요청이나 응답의 기본 정보를 담고 있습니다.
    • 요청(Request)의 경우: HTTP 메서드, 요청 URI, HTTP 버전.
    • 응답(Response)의 경우: HTTP 상태 코드, 상태 메시지, HTTP 버전.
  • 헤더(Header): 시작 줄 이후의 줄로, 추가적인 정보(메타데이터)를 전달합니다.
    • 예: 콘텐츠 타입, 요청의 길이, 사용자 에이전트, 서버 정보 등.

각 줄은 CRLF(Carriage Return + Line Feed)로 구분됩니다.
헤드의 끝은 빈 줄(CRLF만 포함된 한 줄)로 표시됩니다.

GET /index.html HTTP/1.1  		-- 시작줄
Host: www.example.com			-- 헤더
User-Agent: Mozilla/5.0
Accept: text/html
content-type: application/json
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 1024
Server: Apache/2.4.1

요청 / 응답 헤드 예시

(2) HTTP 바디(Body)

HTTP 바디는 클라이언트와 서버 간에 주고받는 실제 데이터를 포함합니다.

  • 바디는 헤드의 끝을 나타내는 빈 줄 뒤에 위치합니다.
  • 클라이언트가 서버로 데이터를 전송할 때, 또는 서버가 클라이언트로 데이터를 반환할 때 바디에 데이터를 담습니다.

바디는 주로 HTML, JSON, 이미지 파일 등의 데이터 형식으로 전송됩니다.

{
  "username": "john_doe",
  "password": "123456"
}
<!DOCTYPE html>
<html>
<head>
    <title>Example Page</title>
</head>
<body>
    <h1>Welcome to the Example Page</h1>
</body>
</html>

요청 / 응답 바디 예시

 

HTTP 메시지의 주요 특징

  1. 텍스트 기반의 명확한 구조:
    • 헤드는 사람이 읽을 수 있는 텍스트 형태로 구성됩니다.
    • 이는 디버깅이나 분석을 쉽게 해줍니다.
  2. 확장 가능성:
    • HTTP 헤더에 사용자 정의 데이터를 추가해 확장할 수 있습니다.
    • 예: X-Custom-Header: CustomValue.
  3. HTTP 버전:
    • HTTP/1.1은 가장 널리 사용되는 버전으로, 유지 연결(Persistent Connection)과 같은 기능을 지원합니다.
    • HTTP/2는 멀티플렉싱과 헤더 압축을 추가로 지원하여 더 빠른 성능을 제공합니다.
  4. 무상태성(Stateless):
    • HTTP는 상태를 저장하지 않습니다.
    • 동일한 클라이언트라도 각 요청은 독립적으로 처리됩니다. (이를 해결하기 위해 쿠키나 세션을 사용.)