TCP 와 UDP 는 인터넷 통신의 두 가지 핵심 프로토콜이다.
두 프로토콜은 목적지가 같지만 동작 방식과 사용처가 완전히 다르다.

1. 연결 유무
Socket tcp = new Socket(); // 연결 필요
DatagramSocket udp = new DatagramSocket(); // 연결 불필요
TCP 는 통신 전에 반드시 연결을 맺고 끊는다.
연결이 없으면 데이터 전송 자체가 불가능하다.
UDP 는 연결 없이 바로 데이터를 날려버린다.
빠른 응답이 필요할 때 UDP 가 유리한 이유다.
안정성이 최우선이라면 TCP 를 선택해야 한다.
2. 데이터 신뢰성
byte[] tcpData = "파일 전체".getBytes(); // 순서 보장
byte[] udpData = new byte[1500]; // 순서 무관
TCP 는 전송된 패킷이 모두 도착하는지 확인한다.
손실된 데이터는 자동으로 재전송을 요청한다.
패킷 순서가 뒤죽박죽이면 다시 정렬해준다.
UDP 는 도착하지 않은 패킷은 그냥 무시한다.
재전송 기능이 없어 전송 속도가 매우 빠르다.
실시간성이 중요한 스트리밍에 UDP 가 적합하다.
3. 헤더 오버헤드
int tcpHeader = 20; // 최소 20 바이트
int udpHeader = 8; // 최소 8 바이트
TCP 는 연결 관리 정보를 위해 헤더가 크다.
헤더 크기가 커지면 실제 데이터 전송 효율이 떨어진다.
UDP 는 헤더가 작아 대역폭 낭비가 적다.
작은 패킷을 많이 보낼 때 UDP 가 유리하다.
오버헤드 최소화해야 할 게임 서버에 좋다.
안정성보다 속도만 중요하면 UDP 를 쓴다.
'개념 창고 > NetWork' 카테고리의 다른 글
| [HTTP] GET 과 POST 의 차이 (0) | 2026.10.15 |
|---|---|
| HTTP 오류 메시지(상태 메시지) (0) | 2023.01.10 |
| Get, Post 개념 및 차이 [HTTP] (1) | 2023.01.10 |