네트워크 통신에서 Header와 Body(Payload)의 차이
목차
- 네트워크 통신의 기본 구조
- Header(헤더)란?
- Body(페이로드)란?
- Header와 Body의 핵심 차이점
- 실제 통신 예시로 이해하기
- 자주 묻는 질문
- 정리 및 요약
네트워크 통신의 기본 구조
네트워크 통신은 편지를 주고받는 것과 비슷합니다. 편지를 보낼 때는 다음과 같은 요소가 필요합니다:
- 편지 봉투 - 받는 사람 주소, 보내는 사람 주소, 우표 등 정보 (= Header)
- 편지 내용 - 실제로 전달하려는 메시지 (= 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
'Networks' 카테고리의 다른 글
CORS(교차 출처 리소스 공유): 개념, 필요성, 보안 및 해결 방법 (1) | 2025.04.10 |
---|---|
혼합 콘텐츠(Mixed Content): 원인과 해결 방법 (0) | 2025.04.03 |
OSI 7 계층(osi 7 layer) (0) | 2023.05.11 |
Http / Https 란? (http 와 https 차이) (0) | 2023.04.24 |