
네트워크 통신을 할 때, 데이터를 전달하기 위한 두 가지 주요 프로토콜인 TCP(Transmission Control Protocol)와 UDP(User Datagram Protocol)가 있습니다.
TCP(Transmission Control Protocol)는 신뢰성 있는 연결형 통신을 제공하는 프로토콜입니다. 데이터를 전송하기 전에 발신자와 수신자 사이에 연결을 설정하고, 패킷이 올바르게 전송되었는지 확인하면서 데이터를 전달합니다. 패킷이 손실되면 재전송하며, 순서에 맞게 데이터가 도착했는지도 확인합니다.
TCP는 인터넷에서 가장 널리 사용되는 프로토콜 중 하나로, 웹 브라우징(HTTP, HTTPS), 이메일(SMTP), 파일 전송(FTP) 등에 사용됩니다.
UDP(User Datagram Protocol)는 비연결형 통신을 제공하는 프로토콜입니다. 데이터를 보내기 전에 연결을 설정하지 않으며, 패킷이 손실되거나 순서가 뒤바뀌어도 이를 복구하려고 하지 않습니다. 따라서 TCP보다 전송 속도가 빠르고, 단순한 통신에 적합합니다.
UDP는 주로 실시간 스트리밍, 온라인 게임, VoIP(Voice over IP) 같은 실시간 애플리케이션에 사용됩니다.
| 구분 | TCP | UDP |
|---|---|---|
| 연결 방식 | 연결형 프로토콜 (데이터 전송 전 연결 설정) | 비연결형 프로토콜 (연결 없이 바로 데이터 전송) |
| 신뢰성 | 패킷 손실 시 재전송, 데이터 순서 보장 | 패킷 손실, 순서 보장 없음 |
| 전송 속도 | 상대적으로 느림 (연결 설정 및 확인 작업 필요) | 빠름 (오버헤드가 적음) |
| 데이터 무결성 | 보장 (오류 체크, 흐름 제어) | 보장하지 않음 |
| 전송 용량 | 헤더 크기 큼 (20바이트 이상) | 헤더 크기 작음 (8바이트) |
| 주요 사용 사례 | 웹 브라우징, 이메일, 파일 전송 등 | 실시간 스트리밍, 온라인 게임, VoIP 등 |
TCP는 연결형 프로토콜이기 때문에, 데이터를 전송하기 전에 발신자와 수신자가 3-way Handshake라는 절차를 통해 연결을 설정합니다. 이 과정은 다음과 같습니다:
데이터 전송이 완료되면 4-way Handshake를 통해 연결을 종료합니다. TCP는 이러한 과정 덕분에 데이터의 신뢰성을 보장하지만, 연결 설정 및 해제 과정이 추가되어 UDP보다 속도가 느려질 수 있습니다.
UDP는 비연결형 프로토콜이므로 데이터 전송 전의 연결 설정 과정이 없습니다. 발신자는 단순히 데이터를 패킷으로 나누어 수신자에게 전송합니다. 수신자가 패킷을 받았는지 확인하지 않으며, 패킷이 도착하지 않더라도 이를 복구하는 절차가 없습니다.
이 때문에 UDP는 오버헤드가 적고 속도가 빠르지만, 신뢰성이 낮습니다.