← 아티클 목록

tcp udp 차이 — 신뢰성과 속도 사이, 무엇을 언제 쓸까

2028-04-17#networking#tcp#udp

"TCP는 믿을 수 있고 UDP는 빠르다"는 한 줄 요약은 맞지만, 왜 그런지를 모르면 "그래서 내 서비스는 뭘 써야 하지?"에서 막힙니다. 차이는 연결을 맺느냐, 도착을 보장하느냐 두 축에서 갈립니다.

핵심 차이: 연결과 보장

TCP는 통신 전에 3-way handshake로 연결을 맺고, 보낸 데이터가 도착했는지 확인(ACK)하며, 빠진 건 재전송하고 순서도 맞춰줍니다. 그만큼 절차가 붙어 느려질 수 있습니다. UDP는 연결 없이 그냥 패킷을 던지고 끝입니다. 도착 여부·순서를 보장하지 않는 대신 군더더기가 없어 빠르고 가볍습니다.

구분TCPUDP
연결연결형 (handshake)비연결형
신뢰성도착 보장·재전송보장 없음
순서순서 보장순서 보장 없음
속도·오버헤드상대적으로 느림·무거움빠름·가벼움
헤더 크기20바이트 이상8바이트
대표 용도HTTP·SSH·DBDNS·영상스트리밍·게임

언제 무엇을 쓰나

  • 데이터가 하나도 빠지면 안 될 때 → TCP: 웹페이지(HTTP/HTTPS), 파일 전송, SSH, 데이터베이스 연결. 글자 하나만 누락돼도 의미가 깨지는 경우입니다.
  • 약간의 손실보다 지연이 더 치명적일 때 → UDP: 실시간 영상·음성, 온라인 게임, DNS 조회. 프레임 하나 빠지는 것보다 끊김 없이 빠른 게 중요합니다.

DNS가 UDP를 쓰는 이유가 좋은 예입니다. 짧은 질의·응답 한 번에 handshake 비용을 들이는 건 낭비라서 가볍게 던지고, 응답이 없으면 다시 묻습니다. 반대로 응답이 크면 TCP로 넘어가기도 합니다. 최근 HTTP/3는 UDP 위에 신뢰성을 다시 얹은 QUIC을 쓰는데, 이는 "UDP=비신뢰"라는 공식이 절대 규칙은 아님을 보여줍니다.

직접 확인하기

지금 서버가 어떤 프로토콜로 듣고 있는지 ss로 볼 수 있습니다.

로컬 터미널
ss -tlnp     # TCP 리슨 소켓 (-t)
ss -ulnp     # UDP 소켓 (-u)
OUTPUT
Netid State  Local Address:Port
tcp   LISTEN 0.0.0.0:443
tcp   LISTEN 0.0.0.0:22
udp   UNCONN 0.0.0.0:53

443(HTTPS)·22(SSH)는 tcp LISTEN, 53(DNS)은 udp UNCONN으로 나타나는 게 위 표와 정확히 맞아떨어집니다. UDP는 연결 상태가 없어 UNCONN으로 표시됩니다.

요점 정리

  • TCP = 연결·도착 보장·순서 보장, 대신 무겁다.
  • UDP = 비연결·보장 없음, 대신 빠르고 가볍다.
  • 선택 기준: 손실을 못 견디면 TCP, 지연을 못 견디면 UDP.
  • ss -tlnp·ss -ulnp로 내 서버의 프로토콜·포트를 직접 확인하세요.

TCP 연결 과정과 패킷을 직접 들여다보며 익히는 실습은 네트워크 트랙에서 회원가입 없이 무료로 할 수 있습니다.