TCP(전송 제어 프로토콜)
연결 지향: TCP는 연결 지향 프로토콜로, 데이터를 전송하기 전에 발신자와 수신자 간의 연결을 설정합니다.
신뢰성: 수신된 패킷에 대한 승인을 요구하고 손실 되거나 손상된 패킷을 재전송하여 데이터가 정확하고 순서대로 전달되도록 보장합니다.
흐름 제어: TCP는 발신자가 수신자를 압도하는 것을 방지하기 위해 흐름 제어 기능을 제공하여 원활한 데이터 전송을 가능하게 합니다.
주문 배달: TCP를 통해 전송된 데이터는 정보의 순서를 유지하면서 전송된 순서대로 도착하도록 보장됩니다.
오버헤드: 오류 확인 및 연결 설정으로 인해 TCP는 오버헤드가 높으며 UDP보다 느릴 수 있습니다.
사용 사례: TCP는 일반적으로 웹 브라우징, 이메일, 파일 전송 등과 같이 데이터 무결성과 순서가 중요한 애플리케이션에 사용됩니다.
UDP(사용자 데이터그램 프로토콜)
비연결성: TCP와 달리 UDP는 비연결 프로토콜로, 데이터를 전송하기 전에 연결을 설정하지 않습니다.
신뢰할 수 없음: UDP를 통해 전송된 데이터가 목적지에 도착하거나 올바른 순서로 도착한다는 보장이 없습니다. 수신된 패킷에 대한 승인이나 손실된 패킷에 대한 재전송이 없습니다.
흐름 제어 없음: UDP는 흐름 제어 기능을 제공하지 않으므로 수신자의 데이터 처리 능력을 고려하지 않고 원하는 만큼 빠르게 데이터를 전송할 수 있습니다.
낮은 오버헤드: UDP는 TCP에서 볼 수 있는 오류 확인 및 연결 설정이 없기 때문에 소규모의 빈번한 전송에 더 빠르고 효율적입니다.
사용 사례: UDP는 비디오 스트리밍, 온라인 게임, VoIP 통화 등과 같이 안정성과 순서보다 속도와 효율성이 더 중요한 애플리케이션에 적합합니다.
요약
TCP: 연결 지향적이고 안정적이며 순서대로 전송 및 흐름 제어를 제공하지만 오버헤드가 높습니다. 데이터 무결성 및 시퀀스 보존이 필요한 애플리케이션에 적합합니다.
UDP: 연결이 없고, 안정적이지 않으며, 순서에 따른 전송이나 흐름 제어를 제공하지 않지만 오버헤드가 낮습니다. 안정성보다 속도와 효율성을 우선시하는 애플리케이션에 적합합니다.
일반적으로 TCP는 신뢰성과 정확성을 강조하는 프로토콜로 생각할 수 있으며, UDP는 프로세스에서 일부 신뢰성과 순서를 희생하더라도 속도와 효율성을 강조합니다.