네트워크 프로토콜에서 TCP(Transmission Control Protocol)와 UDP(User Datagram Protocol)는 가장 많이 사용되는 두 가지 전송 방식이다.
이 두 프로토콜은 데이터를 어떻게 전달할 것인지에 대한 방식이 다르며, 각각의 장단점이 존재한다.
1️⃣ TCP (Transmission Control Protocol)
✅ TCP란?
- 연결 지향형 프로토콜(Connection-Oriented Protocol)
- 3-Way Handshake를 사용하여 데이터 전송 전에 연결을 설정
- 데이터의 순서 보장 및 오류 검사 기능 제공
- 신뢰성 높은 데이터 전송이 필요한 서비스에 사용됨
📌 TCP의 특징
| 특징 | 설명 |
|---|
| 신뢰성 보장 | 패킷 손실, 중복, 순서 변경을 자동으로 감지하고 복구 |
| 순서 보장 | 데이터가 전송된 순서대로 도착 |
| 오류 제어 | 데이터가 손상되면 재전송 |
| 흐름 제어 | 송신자가 수신자의 처리 속도를 고려하여 전송 속도를 조절 |
| 혼잡 제어 | 네트워크 상태를 고려하여 패킷 전송량을 조절 |
📌 TCP의 동작 방식
✅ 1. 3-Way Handshake (연결 설정)
- 클라이언트가 SYN 패킷을 보내 연결 요청
- 서버가 SYN + ACK 패킷을 보내 응답
- 클라이언트가 ACK 패킷을 보내 연결 확립
✅ 2. 데이터 전송
- 데이터가 패킷 단위로 나뉘어 전송되며, 각 패킷에는 시퀀스 번호(Sequence Number)가 부여됨
- 수신 측은 패킷이 순서대로 도착했는지 확인 후, ACK(응답) 패킷을 보냄
✅ 3. 4-Way Handshake (연결 종료)
- 클라이언트가 FIN 패킷을 전송하여 연결 종료 요청
- 서버가 ACK를 응답하여 확인
- 서버가 FIN 패킷을 전송하여 종료 요청
- 클라이언트가 ACK를 응답하여 연결 종료 확정
📌 TCP의 사용 사례
- 웹 브라우징 (HTTP, HTTPS)
- 이메일 전송 (SMTP, IMAP, POP3)
- 파일 다운로드 (FTP, SFTP)
- 데이터베이스 연결 (MySQL, PostgreSQL 등)
📌 TCP는 신뢰성과 데이터 정확성이 중요한 서비스에서 주로 사용된다.
2️⃣ UDP (User Datagram Protocol)
✅ UDP란?
- 비연결형 프로토콜(Connectionless Protocol)
- 데이터 전송 전 연결 설정 과정이 없음
- 데이터 손실이나 순서가 바뀌어도 복구하지 않음
- 빠른 데이터 전송이 중요한 서비스에 사용됨
📌 UDP의 특징
| 특징 | 설명 |
|---|
| 비연결형 | 연결 설정 없이 데이터를 바로 전송 |
| 빠른 전송 속도 | 헤더가 작고 연결 과정이 없어 오버헤드가 적음 |
| 순서 보장 X | 데이터가 도착하는 순서를 보장하지 않음 |
| 오류 검출은 가능하지만 복구 X | 데이터가 손실되거나 손상되어도 재전송을 하지 않음 |
| 브로드캐스트/멀티캐스트 지원 | 한 번의 전송으로 여러 수신자에게 데이터를 전달 가능 |
📌 UDP의 동작 방식
✅ 1. 데이터 전송
- 송신자는 데이터를 패킷(Datagram) 형태로 수신자에게 보냄
- 별도의 연결 설정 없이 즉시 전송
- 수신자는 데이터를 받지만, 순서가 다를 수 있으며 손실될 수도 있음
- TCP처럼 ACK(응답) 패킷이 없어 데이터가 도착했는지 확인할 방법이 없음
📌 UDP의 사용 사례
- 실시간 스트리밍 (YouTube, Netflix, Twitch 등)
- 화상 통화 (Zoom, Skype 등)
- 온라인 게임 (FPS, MMORPG 등)
- VoIP (인터넷 전화, Discord 등)
- DNS 조회 (도메인 네임 시스템)
- IoT(사물 인터넷) 및 센서 데이터 전송
📌 UDP는 속도가 중요하고, 일부 데이터 손실이 발생해도 큰 문제가 없는 서비스에서 주로 사용된다.
3️⃣ TCP vs UDP 비교
| 비교 항목 | TCP | UDP |
|---|
| 연결 방식 | 연결 지향형 (3-Way Handshake) | 비연결형 |
| 데이터 순서 보장 | O | X |
| 오류 검사 및 복구 | O (손실된 패킷 재전송) | X (손실 시 무시) |
| 속도 | 느림 (오버헤드가 큼) | 빠름 (오버헤드가 적음) |
| 신뢰성 | 높음 | 낮음 |
| 패킷 크기 | 크고 헤더가 많음 | 작고 헤더가 적음 |
| 사용 사례 | 웹, 이메일, 파일 전송 | 스트리밍, 게임, VoIP |
4️⃣ TCP와 UDP의 선택 기준
✅ TCP를 선택해야 하는 경우
✔ 데이터의 정확성이 중요한 경우
✔ 패킷 손실이 있으면 재전송이 필요한 경우
✔ 웹 브라우저, 이메일, 파일 전송과 같이 신뢰성이 요구되는 애플리케이션
✅ UDP를 선택해야 하는 경우
✔ 빠른 데이터 전송이 필요한 경우
✔ 일부 데이터 손실이 허용되는 경우
✔ 온라인 게임, 스트리밍, VoIP 등 실시간 통신이 필요한 애플리케이션
🚀 결론
- TCP는 신뢰성이 중요한 서비스 (예: 웹사이트, 이메일)에서 사용된다.
- UDP는 속도가 중요한 서비스 (예: 실시간 스트리밍, 온라인 게임)에서 사용된다.
- 서비스의 특성과 요구사항에 따라 TCP와 UDP를 적절히 선택하는 것이 중요하다.