- TCP는 데이터 전송의 신뢰성과 순서 유지를 보장하는 프로토콜로, 중요한 금융 거래나 파일 다운로드 등 데이터 손실이 치명적인 상황에 적합합니다. 🔒
- UDP는 '발사 후 망각(fire and forget)' 방식으로, 데이터 전송의 신뢰성이나 순서 유지를 보장하지 않지만, 오버헤드가 적어 매우 빠릅니다. 🚀
- UDP의 활용: 실시간 비디오 스트리밍이나 음성 통화처럼 약간의 데이터 손실이 전체적인 흐름에 큰 영향을 주지 않고 속도가 중요한 애플리케이션에 주로 사용됩니다. 📞
- DNS의 UDP 사용: DNS는 낮은 대역폭 시대에 개발되었고, 지연 시간에 민감하며, 응답 데이터가 작기 때문에 빠른 조회를 위해 주로 UDP를 활용합니다. ⚡
- UDP는 TCP의 '빌딩 블록': TCP의 과도한 오버헤드가 필요 없는 경우, UDP를 기반으로 애플리케이션 맞춤형 신뢰성 계층을 구축하여 더 효율적인 프로토콜(예: QUIC)을 만들 수 있습니다. 🧱
- WireGuard 사례: VPN 서비스인 WireGuard는 UDP를 기반으로 자체적인 신뢰성 계층을 구현하여, TCP의 오버헤드 없이도 안정적인 통신을 제공합니다. 🛡️
- UDP의 단점: 연결 설정 과정이 없어 발신자 신원 확인이 어렵고, 이를 악용한 UDP 증폭 공격(UDP amplification attack)에 취약하여 대규모 DDoS 공격에 사용될 수 있습니다. 💣
- 보안 대책: UDP 증폭 공격과 같은 위협으로부터 서비스를 보호하기 위해 Cloudflare WAF와 같은 웹 애플리케이션 방화벽이나 네트워크 수준의 보호 조치가 필수적입니다. 🚨
데브허브 | DEVHUB | why does udp even exist?