TCP vs UDP
TCP 는 연결형이고 UDP 는 비연결형입니다. 그 차이에서 신뢰성(순서 보장, 재전송)이 갈립니다.
TCP vs UDP
핵심 비교
| 구분 | TCP | UDP |
|---|---|---|
| 연결 | 연결 지향 (3-way) | 비연결 |
| 신뢰성 | 보장 (재전송) | 보장 안 함 |
| 순서 | 보장 | 보장 안 함 |
| 속도 | 상대적 느림 | 빠름 |
| 헤더 | 20바이트 | 8바이트 |
| 흐름 제어 | O | X |
프로토콜 선택 기준
| 요구사항 | 고를 것 | 예 |
|---|---|---|
| 신뢰성이 필요하다 | TCP | 웹(HTTP), 이메일, 파일 전송 |
| 신뢰성보다 실시간성이 중요하다 | UDP | 게임, 영상 스트리밍, VoIP |
| 단순한 요청과 응답이면 된다 | UDP | DNS, DHCP |
무엇을 대신해 주느냐의 차이
둘의 차이는 속도가 아니라 누가 뒤처리를 하느냐입니다.
| 뒤처리 | TCP | UDP |
|---|---|---|
| 잃어버린 것을 다시 보내기 | 해 준다 | 필요하면 직접 |
| 순서를 맞추기 | 해 준다 | 필요하면 직접 |
| 상대가 못 받을 만큼 보내지 않기 | 해 준다 | 필요하면 직접 |
그래서 UDP 가 빠른 것이 아니라 안 해 주는 것입니다. 같은 보장이 필요하면 직접 만들어야 하고, 그러면 TCP 와 비슷해집니다.
그래도 UDP 를 고르는 이유
다시 보내는 것이 도움이 안 되는 데이터가 있습니다.
지나간 목소리를 1초 뒤에 다시 받아도 쓸 데가 없다
지금 위치를 다시 받아도 이미 옛 위치다
이때는 잃어버린 것을 포기하고 다음 것을 받는 쪽이 낫습니다. 막힘 없이 흐르는 것이 빠짐없이 오는 것보다 중요할 때 UDP 를 고릅니다. 그 판단이 서비스의 성격에서 나옵니다.
실무 서비스별 프로토콜
| 서비스 | 프로토콜 | 이유 |
|---|---|---|
| 웹 (HTTP/1,2) | TCP | 데이터 무결성 필수 |
| HTTP/3 (QUIC) | UDP | TCP HoL 블로킹 해결 |
| 게임 서버 | UDP | 프레임 손실보다 지연이 치명적 |
| 넷플릭스 | TCP+UDP | 적응적 비트레이트(ABR) |
| DNS | UDP | 짧은 요청-응답, 실패 시 재전송 |
- Q.TCP와 UDP 차이를 설명해주세요
- Q.게임 서버에서 UDP를 쓰는 이유는?
- Q.HTTP/3가 UDP 기반(QUIC)인 이유는?