TCP (Transmission Control Protocol)
특징 :
연결 지향적 : 데이터를 주고받기 전에 송신자와 수신자 간에 연결을 설정한다.
신뢰성 : 데이터가 정확히 도착하도록 보장하며, 손실된 데이터는 다시 전송(retransmission) 된다
오류 검출 및 복구 : 데이터가 손상되었거나 손실된 경우 이를 감지하고 복구한다.
데이터 흐름 제어 : 데이터의 전송 속도를 제어하여 수신자가 처리 가능한 속도로 데이터를 전달한다.
순서 보장 : 데이터 패킷이 전송된 순서대로 수신자에게 전달된다.
TCP 장점 :
신뢰성이 높아 정확한 전송이 필요할 때 적합하다.
파일 전송, 이메일, 웹 브라우징 등에서 이용된다
TCP 단점 :
연결 설정 및 관리로 인해 오버헤드(부하)가 높고 속도가 상대적으로 느리다.
UDP (User Datagram Protocol)
특징 :
비연결 지향적 (Connectionless) : 연결을 설정하지 않고 데이터를 전송한다. 데이터를 보내기만 하면 된다.
신뢰성 미보장 : 데이터 손실에 대한 복구를 시도하지 않는다. 데이터가 손실되거나 손상되면 그대로 처리된다.
빠른 전송 : 연결 설정이나 복구 작업이 없기 때문에 속도가 빠르다.
순서 비보장 : 데이터가 전송된 순서와 관계 없이 도착할 수 있다
UDP 장점 :
단순한 구조 전송 속도가 매우 빠르다.
실시간 데이터 전송(스트리밍, 음성/영상 통화)와 같은 시간 민감적인 애플리케이션에 적합하다.
단점
- 데이터 손실이나 순서 왜곡에 대한 처리 로직을 애플리케이션 레벨에서 구현해야 합니다.
- 신뢰성이 낮아 데이터 무결성이 중요하지 않은 애플리케이션에서만 적합합니다.
채팅 시스템을 구현 시 TCP와 UDP 중 선택 기준은 ?
채팅 애플리케이션의 요구사항에 따라 선택을 해야한다.
TCP를 사용하는 경우에는
신뢰성이 중요하고(메세지가 반드시 전달되어야 하며 손실되거나 순서가 어긋나면 안될 경우)
메세지의 무결성이 중요하다
UDP를 사용하는 경우에는 실시간성과 속도가 중요하다
음성/영상 채팅(VoiP)와 같이 약간의 데이터 손실은 허용되지만 빠른 전송이 필요한 경우
적합하다.