| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
- list 컬렉션
- datastructure
- C 언어 코딩 도장
- C programming
- JSON
- s
- Algorithm
- buffer
- 메모리구조
- Selection Sorting
- coding test
- 알기쉬운 알고리즘
- Stack
- 윤성우의 열혈 자료구조
- stream
- 혼자 공부하는 C언어
- Graph
- 이스케이프 문자
- 윤성우 열혈자료구조
- 이것이 자바다
- Serialization
- R
- insertion sort
- ㅅ
- Today
- Total
Engineering Note
[Network] Multipart라는 개념이 등장하게 된 배경 본문
[Network] Multipart라는 개념이 등장하게 된 배경
Software Engineer Kim 2025. 7. 29. 20:24Spring으로 웹 개발을 하다보면 파일 전송할 때 Multipart라는 객체를 사용하는데 왜 Multipart라는 개념이 등장하게 됐는지 궁금해서 자료를 찾아 보았습니다.
🔍 Multipart라는 개념이 생긴 배경
✅ 1. 단일 데이터 구조의 한계
초기의 HTTP나 이메일 시스템(MIME 이전)은 텍스트 기반 메시지를 주고받기 위한 프로토콜이었어.
그래서 구조가 매우 단순했고, "하나의 메시지는 하나의 내용만 담는다"는 게 기본 전제였지.
- 이메일이면: 본문만 있거나, 본문 하나 + 첨부파일 하나 정도
- HTTP면: 하나의 이미지나 하나의 HTML 파일 정도
이 단일 구조는 점점 현실적인 데이터 처리 요구를 충족시키지 못하게 됨.
✅ 2. 복합 데이터를 다뤄야 하는 현실적인 요구 등장
기술이 발전하면서 다음과 같은 문제가 나타났어:
- 메일 하나에 본문 + 이미지 + 첨부파일 여러 개를 넣고 싶다
- 웹 요청 하나에 JSON 데이터 + 파일을 함께 전송하고 싶다
- 서버에서 응답을 줄 때, 썸네일 + 원본 이미지 + 설명 정보를 한 번에 주고 싶다
즉, "하나의 메시지에 복수의 데이터 조각들을 논리적으로 묶어서 보내야 하는 필요"가 생긴 거야.
→ 이걸 단일 구조로는 표현할 수 없었고, 새로운 **"복합 구조(Composite Structure)"**가 필요했어.
✅ 3. 하나의 요청/응답 안에 여러 개의 데이터 묶음을 담기 위한 모델 → "Multipart"
그래서 나온 개념이 바로 "Multipart", 즉 **"여러 개의 파트로 구성된 메시지"**란 개념이야.
핵심 아이디어는 이거야:
"우리는 하나의 메시지지만, 그 안에는 여러 개의 독립적이고 다양한 데이터 블록이 존재할 수 있다."
즉, 메시지를 부분(part) 단위로 나눠서 논리적 계층구조로 본 거지.
✅ 4. "Multipart"는 일종의 컨테이너(Container) 개념
생각해봐:
- 이메일 하나 안에 텍스트, HTML, 이미지가 다 들어간다?
→ Multipart Email - HTTP 요청 안에 JSON 데이터 + 이미지 파일 같이 보낸다?
→ Multipart Request
즉, Multipart는 "복수의 데이터를 하나의 메시지 단위로 묶는 포장(container)"의 개념이야.
기존 방식은 하나의 덩어리밖에 안 되니, 데이터를 쪼개거나 분기 처리할 수 없었지만,
Multipart는 조합·재구성·다중 전송이 가능해진 셈이지.
✅ 5. 네트워크 자원의 최적화와도 연결됨
과거엔 파일 하나 요청하려고 HTTP 커넥션을 여러 번 열었어. 하지만:
- 서버 부하 증가
- 느린 응답 시간
- 커넥션 관리 문제
이런 단점이 있었고, **"하나의 연결로 여러 데이터를 한꺼번에 주고받는 구조"**가 필요했지.
→ 이 점에서도 Multipart는 의미가 컸어. 단일 메시지에 여러 콘텐츠 묶음 전송이 가능하니까.
✅ 결론
"Multipart"는 하나의 메시지로는 표현할 수 없었던 복합적인 정보 묶음을 전송하기 위한 개념적 확장이다.
전통적인 '단일 메시지 구조'의 한계를 넘기 위한 발명이며, 이로 인해 메일, 웹, API 모두 복합 데이터를 유연하게 처리할 수 있게 된 것이다.
참고 자료 : Generative AI를 통해 생성된 자료
'Computer Science > Network' 카테고리의 다른 글
| [Network] DNS(Domain Name System) (6) | 2025.08.06 |
|---|---|
| [Network] Application Layer, e-mail application (1) | 2025.07.29 |
| [Network] 네트워크에서 쓰이는 단위 (1) | 2025.07.29 |
| [Network] Cashe(캐시)의 정의 그리고 웹캐시와 Proxy Server, Reverse Proxy 비교 (0) | 2025.07.29 |
| [Network] WebSocket 프로토콜과 HTTP와 차이, 그리고 TCP/IP와의 관계 (0) | 2025.07.22 |