TCP와 UDP의 차이: 연결·신뢰성·순서·혼잡 제어·헤더·지연·용도 비교
TCP와 UDP는 모두 IP 위에서 동작하고 포트 번호로 애플리케이션을 구별하는 전송 계층 프로토콜입니다. TCP는 데이터를 보내기 전에 3-way 핸드셰이크로 연결을 수립하고, 확인 응답(ACK)으로 도착을 확인하며, 잃어버린 데이터는 재전송하고, 보낸 순서대로 수신 애플리케이션에 넘깁니다. 또한 수신 측의 빈 버퍼(흐름 제어)와 네트워크의 혼잡(혼잡 제어)에 맞춰 보내는 양을 조절합니다. UDP는 이런 일을 전혀 하지 않고 데이터를 데이터그램으로 그냥 보내므로, 헤더가 작고 보내기 전에 기다릴 필요가 없습니다. 확실한 전달이 중요하면 TCP를, 낮은 지연이 중요하고 필요한 나머지는 애플리케이션이 처리하는 경우에는 UDP를 씁니다.
| 비교 항목 | TCP | UDP |
|---|---|---|
| 연결 수립 | 연결형. 3-way 핸드셰이크(SYN → SYN+ACK → ACK) 뒤에 데이터를 보내므로, 처음에 1왕복(RTT)의 대기가 생깁니다 | 비연결형. 준비 없이 바로 데이터를 보낼 수 있습니다 |
| 확인 응답과 재전송 | ACK로 도착을 확인하고, 재전송 타임아웃이나 중복 ACK로 손실을 감지해 잃어버린 데이터를 다시 보냅니다 | 확인 응답도 재전송도 없습니다. 잃어버린 데이터는 그대로 사라집니다 |
| 순서 | 순서 번호로 데이터를 재정렬해 보낸 순서대로 전달하며, 중복은 제거합니다 | 도착한 순서대로 전달합니다. 순서 바뀜과 중복이 일어날 수 있습니다 |
| 데이터 경계 | 경계가 없는 바이트 스트림. 메시지의 시작과 끝은 애플리케이션이 정합니다 | 한 번의 송신이 하나의 데이터그램이 되므로 메시지 경계가 유지됩니다 |
| 흐름 제어와 혼잡 제어 | 있음. 수신 윈도로 수신 측 버퍼가 넘치지 않게 하고, 혼잡 윈도로 보내는 양을 혼잡에 맞춥니다 | 없음. 필요하면 애플리케이션이 직접 송신 속도를 조절합니다 |
| 헤더 크기 | 옵션 없이 20바이트(옵션 포함 최대 60바이트) | 8바이트(출발지·목적지 포트, 길이, 체크섬) |
| 지연 | 연결 수립에 1왕복이 들고, 손실 후에는 뒤의 데이터도 재전송이 도착할 때까지 기다립니다 | 준비도 재전송 대기도 없어 지연이 작지만, 일부 데이터가 빠질 수 있습니다 |
| 전송 대상의 종류 | 1대1(유니캐스트)만 | 유니캐스트와 브로드캐스트, 멀티캐스트 |
| 대표 용도 | HTTP/1.1과 HTTP/2의 웹, HTTP를 통한 동영상 전송, 이메일(SMTP), SSH, 파일 전송 | DNS 질의, DHCP, 음성 통화나 생방송 영상 같은 실시간 통신, 온라인 게임, HTTP/3이 쓰는 QUIC |
수치는 대략적인 자릿수 기준이며, 공정 세대와 제품에 따라 달라져요.