📝서론
- UDP와 TCP는 트랜스포트 계층 프로토콜이며 프로세스간 데이터 전송을 지원한다.
- UDP와 TCP에 대해 각각 알아보자.
📝TCP (Transmission Control Protocol)

📌 TCP의 특징
1️⃣ TCP는 신뢰적인 데이터 전송을 보장한다.
- TCP는 체크섬, 재전송, 누적확인 응답, 타이머, 순서번호 등을 통해 신뢰적인 데이터 전송을 제공한다.
체크섬(checksum)은 중복 검사의 한 형태로, 오류 정정을 통해, 공간(전자 통신)이나 시간(기억 장치) 속에서 송신된 자료의 무결성을 보호하는 단순한 방법이다.
TCP에서 타이머는 데이터 패킷의 성공적인 전송을 확인하고, 재전송을 위해 사용되는 시간 관리 도구입니다. 데이터 손실이나 지연이 감지될 경우, 타이머는 재전송을 트리거합니다.
2️⃣ TCP는 연결지향형이다. (Connection-oriented)
- TCP는 데이터를 전송하기 전에 송신자와 수신자간 데이터 전송을 보장하는 파라미터들을 설정한다.
- 다시 말하자면, 통신을 하기 전에 사전 연결 설정을 진행한다.
- 이 과정은 3개의 특별한 패킷을 주고 받으며 진행되는데, 이를 3-way-handshake라고 한다.
- TCP는 종단 시스템에서만 동작하고 중간의 네트워크 요소에서는 동작하지 않는다. 따라서 종단 사이의 라우터들은 TCP 연결을 감지하지 못한다.
- TCP 연결은 전이중(full-deplex) 서비스를 제공한다.
- TCP 연결은 항상 단일 송신자와 단일 수신자 사이의 점대점(point-to-point) 연결이다. 멀티케스팅이 불가하다.
- 통신이 끝난후 TCP는 연결을 종료한다. 이 연결 종료 과정을 4-way-handshake라고 한다.
📌 TCP의 신뢰적인 데이터 전송
- TCP는 IP의 비신뢰적인 “최선형(best-effort)” 서비스에서 신뢰적인 데이터 전송 서비스를 제공한다.
- 신뢰적인 데이터 전송이란 전송한 패킷된 손상되지 않고, 순서가 올바른 것을 의미한다.
- TCP는 단일 타이머를 사용한다. (세그먼트당 타이머를 사용하면 오버헤드가 크다.)
📝UDP (User Datagram Protocol)

📌 UDP의 특징
1️⃣ UDP는 신뢰적 데이터 전송을 보장하지 않는다.
- UDP를 사용해서 송신한 세그먼트들은 중간에 손상 되거나 아예 손실 되거나 수신자에게 도착하는 순서가 달라질 수 있다.
- 하지만 UDP는 이와같은 데이터 전송 오류를 신경 쓰지 않는다.
- 단지 UDP는 checksum 헤더를 통해 수신된 데이터에 변조되지 않았는지 여부만 판단할 수 있다. (네트워크로 송신된 데이터는 네트워크의 물리적 구성요소에 의해 비트 오류가 발생할 수 있음)
- UDP checksum 상세설명
- UDP 세그먼트를 word(16비트)단위로 나눈다.
- 나누어진 각 word를 모두 더한 다음 1의 보수 연산을 수행하여 checksum을 만든다.
- UDP 세그먼트 헤더의 checksum에 만든 checksum을 넣고 세그먼트를 송신한다.
- 수신측에서 세그먼트를 수신하면 그 세그먼트에 대해 checksum을 다시 만든 다음
- 수신된 checksum과 비교하면 오류 여부를 판단할 수 있다.
- 신뢰적 전송이 매우 중요할 때 오히려 UDP를 사용 사용하는 경우도 있다.
- 이 경우 애플리케이션 레벨에서 신뢰성 보장을 직접 구현한다.
2️⃣ UDP는 사전 연결 설정을 하지 않는다. (Connectionless)
- TCP는 연결 시작 전에 3-way-handshake라는 사전 연결 설정을 한다.
- 하지만 UDP는 사전 연결 설정을 하지 않는다.
- 사전 연결 설정이 없기 때문에 TCP에 비해서 빠르다.
3️⃣ UDP는 별 기능이 없다. 그래서 빠르다.
- UDP는 신뢰적 데이터 전송을 보장하지 않고 사전 연결을 설정하고 유지하지 않는다.
- UDP는 다중화, 역다중화, 간단한 오류 검사 기능만을 제공할 뿐이다.
- 따라서 UDP는 오버헤드가 적고 빠르다. (TCP 세그먼트가 20Byte의 헤더 오버헤드를 갖는 반면, UDP는 8Byte의 오버헤드를 갖는다.)
- UDP는 빠르기 때문에 DNS와 SNMP등의 프로토콜에서 활용된다.
- DNS의 목적은 단지 도메인 네임에 대한 IP주소를 얻는 것이다. 따라서 오버헤드가 적고 빠른 UDP 위에서 동작하는 것이 적합하다.
- SNMP는 주기적으로 네트워크 장비에 대한 정보를 수집하고 관리하는 프로토콜이다. 네트워크 장비는 수백대 수천대가 될 수 있다. 따라서 오버헤드가 적고 빠른 UDP가 적합하다.
- UDP는 인터넷 전화 또는 스트리밍 서비스에 적합하다.
- 인터넷 전화 또는 스트리밍 서비스는 최소한의 전송률이 보장되면서 약간의 데이터 손실을 허용한다.
- 따라서 속도가 빠르지만 신뢰적인 데이터 전송을 보장하지는 못하는 UDP가 적합하다.
TCP와 UDP의 비교 정리
그림으로 비교하는 TCP vs UDP

각 프로토콜의 특징을 표로 비교해보면 다음과 같다.
| 프로토콜 종류 | TCP | UDP |
|---|
| 연결 방식 | 연결형 서비스 | 비연결형 서비스 |
| 패킷 교환 방식 | 가상 회선 방식 | 데이터그램 방식 |
| 전송 순서 | 전송 순서 보장 | 전송 순서가 바뀔 수 있음 |
| 수신 여부 확인 | 수신 여부를 확인함 | 수신 여부를 확인하지 않음 |
| 통신 방식 | 1:1 통신 | 1:1 OR 1:N OR N:N 통신 |
| 신뢰성 | 높다. | 낮다. |
| 속도 | 느리다. | 빠르다. |
요약하면
TCP는 연속성보다 신뢰성 있는 전송이 중요할 때 사용되는 프로토콜이며,
UDP는 TCP보다 빠르고 네트워크 부하가 적다는 장점이 있지만, 신뢰성 있는 데이터 전송을 보장하지는 않는다.
그렇기 때문에 신뢰성보다는 연속성이 중요한 실시간 스트리밍과 같은 서비스에 자주 사용된다.
정리
- 💡 TCP와 UDP의 차이를 설명해주세요.
- TCP는 연결형 서비스로 3-way handshaking 과정을 통해 연결을 설정하기 때문에 높은 신뢰성을 보장하지만, 속도가 비교적 느리다는 단점이 있습니다.UDP는 비연결형 서비스로 3-way handshaking을 사용하지 않기 때문에 신뢰성이 떨어지는 단점이 있지만, 데이터 수신 여부를 확인하지 않기 때문에 속도가 빠르다는 장점이 있습니다