1. 텍스트 전송 방식 (Text-based Transmission)
특징
- 사람이 읽을 수 있는 문자 기반 포맷
- 데이터를 문자열(String) 형태로 직렬화해서 전송
- 예: JSON, XML, HTTP, CSV 등
예시
{ "id": 123, "name": "Soohwan", "age": 29 }
- 전송 전에 문자열로 변환 (serialization)
- 수신 후 파싱 (deserialization)
장점
- 디버깅 쉽고, 로깅에 유리
- 시스템 간 호환성 높음
단점
- 용량이 큼 (숫자도 문자열로 전송됨)
- 파싱에 오버헤드 존재
- 속도 느림
2. 바이너리 전송 방식 (Binary-based Transmission)
특징
- 데이터를 struct, int, float, long 등 원시 형태 그대로 전송
- 보통 memcpy()나 write()로 바로 버퍼에 넣고 전송
- 예: Protocol Buffers, FlatBuffers, raw struct send()
예시 (C 구조체)
struct { int id; // 4 bytes
char name[20]; // 20 bytes
int age; // 4 bytes };
→ 메모리 그대로 28바이트 전송
장점
- 빠르고, 용량 작고, 성능 좋음
- 파싱이 거의 필요 없음 (메모리 복사만)
int 12345678
| 바이너리 | 32bit 정수 | 4바이트 |
| 텍스트 | "12345678" (문자 8개) | 8바이트 |
단점
- 사람이 읽기 어려움
- 엔디안 차이, 정렬(padding), 시스템 의존성 발생 가능
실제 사용 예
상황전송 방식
| REST API | 텍스트(JSON, XML) |
| 고성능 내부 통신 (트레이딩 등) | 바이너리(struct 전송) |
| IoT 센서 통신 | 바이너리 |
| 웹/모바일 앱 서버 통신 | 텍스트(JSON) |
요약
항목텍스트 방식바이너리 방식
| 사람이 읽기 | 가능 | 불가 |
| 용량 | 큼 | 작음 |
| 성능 | 느림 | 빠름 |
| 파싱 | 필요 | 거의 없음 |
| 호환성 | 높음 | 낮을 수 있음 |
| 예시 | JSON, HTTP | struct, ProtoBuf |
'개인공부 > 네트워크' 카테고리의 다른 글
| 포트 포워딩 (0) | 2025.05.15 |
|---|---|
| XDR (1) | 2025.04.30 |
| TCP/IP 의 송수신 원리 한눈에 (0) | 2025.01.28 |
| epoll 의 EAGAIN (0) | 2025.01.23 |
| epoll 의 Edge-Triggered 방식 (0) | 2025.01.23 |