DEV/cs

[CS] TCP vs UDP 비교

강한 2026. 9. 18. 04:36

TCP와 UDP의 차이, 3-way handshake가 뭔지, 각각 언제 쓰는지 간단히 정리했습니다.


공통점

둘 다 OSI 전송 계층(4계층) 프로토콜로, 데이터를 "어느 포트로 보낼지" 정해서 전달하는 역할을 합니다. 차이는 연결을 맺고 전달을 보장하느냐에 있습니다.

 

TCP: 연결형, 신뢰성 보장

데이터를 보내기 전에 먼저 "연결"을 맺고, 상대가 잘 받았는지 확인해가며 순서대로 전달합니다.

  • 연결 설정: 3-way handshake로 연결을 맺은 뒤에만 데이터 전송 시작
  • 신뢰성: 패킷이 유실되면 재전송, 순서가 바뀌면 재정렬
  • 속도: 확인 절차가 있어서 UDP보다 느림
  • 예시: 웹(HTTP), 이메일, 파일 전송처럼 데이터가 하나라도 빠지면 안 되는 경우

 

UDP: 비연결형, 속도 우선

연결 설정 없이 바로 데이터를 보내버립니다. 상대가 받았는지 확인도, 순서 보장도 하지 않습니다.

  • 연결 설정: 없음 - 그냥 보냄
  • 신뢰성: 패킷이 유실돼도 재전송 안 함, 순서 보장 안 함
  • 속도: 확인 절차가 없어서 TCP보다 빠름
  • 예시: 실시간 스트리밍, 온라인 게임, DNS 조회처럼 약간의 유실보다 속도가 더 중요한 경우

 

3-way handshake란

TCP가 연결을 맺을 때 클라이언트와 서버가 주고받는 3번의 확인 과정입니다.

 
클라이언트 → 서버: SYN (연결 요청)
서버 → 클라이언트: SYN + ACK (요청 수락 + 나도 연결 요청)
클라이언트 → 서버: ACK (수락 확인)

이 세 번의 확인을 거쳐야 "서로 준비됐다"는 게 확인되고, 그 이후부터 실제 데이터를 주고받습니다. 한쪽만 준비된 상태에서 데이터를 보내면 유실되거나 처리하지 못할 수 있기 때문에 이 절차가 필요합니다.

 

마무리

TCP는 "느리더라도 정확하게" 보내야 할 때, UDP는 "조금 빠지더라도 빠르게" 보내야 할 때 씁니다. 요즘은 HTTP/3처럼 UDP 기반으로 신뢰성까지 자체 구현해서 속도와 안정성을 동시에 잡으려는 시도도 늘고 있습니다.