Networks

네트워크 통신에서 Header와 Body(Payload)의 차이

Chrysans 2025. 4. 30. 16:05
728x90
반응형

네트워크 통신에서 Header와 Body(Payload)의 차이


목차

  1. 네트워크 통신의 기본 구조
  2. Header(헤더)란?
  3. Body(페이로드)란?
  4. Header와 Body의 핵심 차이점
  5. 실제 통신 예시로 이해하기
  6. 자주 묻는 질문
  7. 정리 및 요약

네트워크 통신의 기본 구조

네트워크 통신은 편지를 주고받는 것과 비슷합니다. 편지를 보낼 때는 다음과 같은 요소가 필요합니다:

  1. 편지 봉투 - 받는 사람 주소, 보내는 사람 주소, 우표 등 정보 (= Header)
  2. 편지 내용 - 실제로 전달하려는 메시지 (= Body/Payload)

이처럼 네트워크 통신도 '누구에게, 어떻게 전달할지'에 대한 정보(Header)와 '실제 전달할 내용'(Body)으로 구분됩니다.


Header(헤더)란?

헤더의 정의와 역할

**헤더(Header)**는 메시지에 대한 메타데이터를 담고 있는 부분입니다. 쉽게 말해 "이 데이터를 어떻게 처리해야 하는지"에 대한 지시사항과 부가 정보를 담고 있습니다.

헤더의 주요 기능

  • 메시지의 종류와 목적 식별
  • 데이터의 형식과 길이 명시
  • 인증 및 보안 관련 정보 제공
  • 캐싱(저장) 정책 설정
  • 통신 상태와 오류 정보 전달

헤더 예시 (HTTP 기준)

GET /api/users HTTP/1.1
Host: example.com
User-Agent: Mozilla/5.0
Accept: application/json
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
Content-Type: application/json
Content-Length: 64

주요 HTTP 헤더 필드 설명

헤더명  설명  예시
Host 요청하는 서버의 주소 Host: example.com
Content-Type 데이터 형식 Content-Type: application/json
Authorization 인증 정보 Authorization: Bearer token123
Content-Length 본문 데이터 크기 Content-Length: 64
User-Agent 클라이언트 정보 User-Agent: Mozilla/5.0

Body(페이로드)란?

바디의 정의와 역할

바디(Body) 또는 **페이로드(Payload)**는 실제로 전송하려는 데이터 자체입니다. 이메일에 비유하면 본문 내용에 해당합니다.

바디의 특성

  • 실제 전송하려는 정보나 데이터 포함
  • 헤더에 명시된 형식(Content-Type)으로 구성
  • 다양한 형태(JSON, XML, 텍스트, 이진 데이터 등) 가능
  • 경우에 따라 비어있을 수도 있음 (특히 GET 요청)

바디 예시 (JSON 형식)

{
  "username": "kim123",
  "email": "kim@example.com",
  "age": 28,
  "interests": ["programming", "music", "hiking"]
}

다양한 바디 데이터 형식

형식  설명  Content-Type
JSON 가장 널리 사용되는 데이터 교환 형식 application/json
XML 구조화된 데이터를 태그 형식으로 표현 application/xml
폼 데이터 웹 폼에서 전송되는 키-값 쌍 application/x-www-form-urlencoded
멀티파트 파일 업로드 등에 사용 multipart/form-data
텍스트 일반 문자열 text/plain

Header와 Body의 핵심 차이점

Header와 Body의 차이점을 명확히 이해하기 위한 비교표입니다:

구분 헤더 (Header)  바디 (Body/Payload)
목적 데이터 처리 방법에 대한 지시사항 실제 전달할 정보
내용 메타데이터, 제어 정보 사용자 데이터, 실제 콘텐츠
위치 메시지의 시작 부분 헤더 다음, 빈 줄로 구분
형식 주로 key-value 쌍 다양한 형식 (JSON, XML 등)
필수 여부 대부분 필수 요청 유형에 따라 선택적
가변성 상대적으로 일정한 구조 크기와 내용이 매우 다양
크기 제한 일반적으로 작음 매우 클 수 있음
예시 Content-Type, Authorization 사용자 정보, 이미지 데이터

실제 통신 예시로 이해하기

1. HTTP GET 요청/응답 예시

요청:

GET /api/products/123 HTTP/1.1
Host: shop.example.com
Accept: application/json
Authorization: Bearer token123

(본문 없음)

응답:

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 142
Cache-Control: max-age=3600

{"id": 123, "name": "스마트폰", "price": 599.99, "in_stock": true, "features": ["5G", "듀얼 카메라", "빠른 충전"]}

2. HTTP POST 요청/응답 예시

요청:

POST /api/users HTTP/1.1
Host: users.example.com
Content-Type: application/json
Content-Length: 78
Authorization: Bearer token456

{"name": "홍길동", "email": "hong@example.com", "password": "secure123!"}

응답:

HTTP/1.1 201 Created
Content-Type: application/json
Content-Length: 95
Location: /api/users/789

{"id": 789, "name": "홍길동", "email": "hong@example.com", "created_at": "2023-05-15T14:30:00Z"}

실생활 비유로 이해하기

네트워크 통신의 Header와 Body를 음식 배달에 비유해보겠습니다:

  • 헤더(Header): 배달 주문서
    • 배달 주소, 연락처, 결제 방법, 특별 요청사항 등
    • "어떻게 배달해야 하는지"에 대한 정보
  • 바디(Body): 실제 음식
    • 주문한 음식 자체
    • "실제로 전달되는 내용물"

자주 묻는 질문

Q: GET 요청에도 Body가 있나요?

A: 기술적으로는 GET 요청에 Body를 포함할 수 있지만, HTTP 표준에 따르면 GET 요청은 Body 없이 URL 매개변수를 통해 데이터를 전달해야 합니다. 많은 서버와 클라이언트는 GET 요청의 Body를 무시하거나 처리하지 않습니다.

Q: Header와 Body의 크기 제한이 있나요?

A: 대부분의 웹 서버는 헤더 크기를 8KB 정도로 제한합니다. Body는 서버 설정에 따라 다르지만, 일반적으로 몇 MB에서 GB까지 허용됩니다.

Q: Content-Type과 Accept 헤더의 차이는 무엇인가요?

A: Content-Type은 "내가 보내는 데이터의 형식"을 나타내고, Accept는 "내가 받고 싶은 데이터의 형식"을 나타냅니다.

Q: 바디(Body)와 페이로드(Payload)는 같은 의미인가요?

A: 네트워크 통신에서는 거의 같은 의미로 사용됩니다. 페이로드는 전체 데이터 중에서 실제 전달하려는 정보만을 가리키는 좀 더 정확한 용어입니다.


정리 및 요약

헤더(Header)

  • 역할: 데이터 처리 방법에 대한 지시사항과 메타데이터
  • 특징: key-value 쌍 형태, 메시지 처리 방법 명시
  • 비유: 편지 봉투, 배달 주문서

바디(Body/Payload)

  • 역할: 실제 전달하려는 데이터 자체
  • 특징: 다양한 형식 가능, 크기 변동 큼
  • 비유: 편지 내용물, 실제 배달된 음식

 

 

https://covelope.tistory.com/entry/Http-Https-%EB%9E%80-http-https-%EC%B0%A8%EC%9D%B4

 

Http / Https 란? (http 와 https 차이)

1. httpHTTP란 Hypertext Transfer Protocol의 약자이다.HTTP 는 HTML 문서와 같은 리소스를 가져올 수 있도록 해주는 프로토콜인데HTTP 는 웹에서 이루어지는 모든 데이터 교환의 기초이며 클라이언트-서버 프

covelope.tistory.com

 

https://developer.mozilla.org/ko/docs/Web/HTTP/Reference/Headers

 

HTTP 헤더 - HTTP | MDN

HTTP 헤더는 클라이언트와 서버가 요청 또는 응답으로 부가적인 정보를 전송할 수 있도록 해줍니다. HTTP 헤더는 대소문자를 구분하지 않는 이름과 콜론 ':' 다음에 오는 값(줄 바꿈 없이)으로 이루

developer.mozilla.org

 

https://developer.mozilla.org/ko/docs/Web/HTTP/Guides/Messages

 

HTTP 메시지 - HTTP | MDN

HTTP 메시지는 서버와 클라이언트 간에 데이터가 교환되는 방식입니다. 메시지 타입은 두 가지가 있습니다. 요청('request')은 클라이언트가 서버로 전달해서 서버의 액션이 일어나게끔 하는 메시

developer.mozilla.org

 

728x90
반응형