TCP vs UDP
기술노트
TCP vs UDP
개요
TCP(Transmission Control Protocol)와 UDP(User Datagram Protocol)는 인터넷 프로토콜 스위트(TCP/IP)의 전송 계층에서 사용되는 두 가지 주요 프로토콜입니다. 두 프로토콜은 데이터 전송 방식과 신뢰성 측면에서 근본적인 차이를 가지고 있으며, 각각 다른 용도에 최적화되어 있습니다.
TCP (Transmission Control Protocol)
특징
- 연결 지향적 (Connection-oriented): 데이터 전송 전 연결 설정 필요
- 신뢰성 보장: 패킷 손실 시 재전송 메커니즘 제공
- 순서 보장: 데이터 패킷이 전송된 순서대로 도착 보장
- 흐름 제어: 수신자의 처리 속도에 맞게 데이터 전송 속도 조절
- 혼잡 제어: 네트워크 상황에 따라 전송 속도 자동 조절
- 오류 검출 및 복구: 체크섬을 통한 데이터 무결성 검증
TCP 연결 과정 (3-way Handshake)
- SYN: 클라이언트가 서버에 연결 요청 (시퀀스 번호 전송)
- SYN-ACK: 서버가 클라이언트의 요청 수락 (시퀀스 번호 및 ACK 전송)
- ACK: 클라이언트가 서버의 응답 확인 (연결 설정 완료)
TCP 연결 종료 과정 (4-way Handshake)
- FIN: 클라이언트가 연결 종료 요청
- ACK: 서버가 종료 요청 확인
- FIN: 서버가 연결 종료 요청
- ACK: 클라이언트가 종료 요청 확인
사용 사례
- 웹 브라우징 (HTTP/HTTPS)
- 이메일 (SMTP, POP3, IMAP)
- 파일 전송 (FTP)
- 원격 접속 (SSH, Telnet)
- 데이터베이스 접속 (MySQL, PostgreSQL)
UDP (User Datagram Protocol)
특징
- 비연결형 (Connectionless): 연결 설정 없이 데이터 전송
- 신뢰성 없음: 패킷 손실 시 재전송 메커니즘 없음
- 순서 보장 없음: 패킷이 보낸 순서와 다르게 도착할 수 있음
- 헤더 크기 작음: TCP보다 오버헤드가 적음 (8바이트 vs TCP 20바이트)
- 속도 우선: 지연 시간이 적고 빠른 전송 가능
- 단순한 오류 검출: 기본적인 체크섬만 제공
UDP 통신 과정
- 연결 설정 없이 바로 데이터그램(패킷) 전송
- 수신 확인(ACK) 없음
- 패킷 손실 시 애플리케이션 레벨에서 처리 필요
사용 사례
- 실시간 스트리밍 (비디오, 오디오)
- 온라인 게임
- VoIP (Voice over IP)
- DNS 쿼리
- IoT (사물인터넷) 통신
- 방송 프로토콜 (DHCP, SNMP)
TCP와 UDP의 비교
특성 | TCP | UDP |
---|---|---|
연결 방식 | 연결 지향적 | 비연결형 |
신뢰성 | 높음 (패킷 손실 복구) | 낮음 (패킷 손실 가능) |
데이터 순서 | 보장 | 보장하지 않음 |
속도 | 상대적으로 느림 | 빠름 |
헤더 크기 | 20-60 바이트 | 8 바이트 |
혼잡 제어 | 지원 | 지원하지 않음 |
데이터 경계 | 스트림 기반 (경계 없음) | 메시지 기반 (데이터그램) |
적합한 용도 | 신뢰성이 중요한 데이터 전송 | 실시간 통신, 속도가 중요한 경우 |
선택 기준
TCP 선택 시 고려사항
- 데이터의 정확한 전달이 중요한 경우
- 순서대로 데이터를 수신해야 하는 경우
- 네트워크 상태가 불안정할 수 있는 경우
- 대용량 데이터 전송 시
UDP 선택 시 고려사항
- 빠른 응답 시간이 필요한 경우
- 일부 데이터 손실이 허용되는 경우
- 단순한 요청-응답 패턴의 통신
- 실시간 미디어 스트리밍
하이브리드 접근 방식
일부 애플리케이션은 TCP와 UDP의 장점을 결합하거나 상황에 따라 선택적으로 사용합니다:
- QUIC (Quick UDP Internet Connections): UDP 기반이지만 TCP와 유사한 기능 제공
- WebRTC: 미디어 스트리밍에는 UDP, 시그널링에는 TCP 사용
- SRT (Secure Reliable Transport): UDP 기반이지만 신뢰성 추가
네트워크 레이어에서의 위치
TCP와 UDP는 TCP/IP 모델의 전송 계층에 위치하며, 네트워크 계층(IP)과 애플리케이션 계층 사이에서 동작합니다:
- 애플리케이션 계층 (HTTP, SMTP, FTP 등)
- 전송 계층 (TCP, UDP)
- 인터넷 계층 (IP)
- 네트워크 액세스 계층 (이더넷, Wi-Fi 등)
성능 최적화
TCP 최적화 기법
- 윈도우 크기 조정
- Nagle 알고리즘 비활성화 (필요 시)
- TCP Fast Open 사용
- TCP 타임아웃 및 재전송 설정 조정
UDP 최적화 기법
- 애플리케이션 레벨 확인 응답 구현
- 적절한 패킷 크기 설정
- 패킷 손실 처리 로직 구현
- 혼잡 제어 로직 추가 (필요 시)
관련 주제
- OSI 7계층 모델
- IP (Internet Protocol)
- 소켓 프로그래밍
- 네트워크 보안
- QoS (Quality of Service)
- 방화벽 및 NAT 환경에서의 TCP/UDP