클라이언트가 서버에게 SYN(Synchronize) 패킷을 보내고, 서버가 SYN-ACK(Synchronize-Acknowledgment) 패킷을 응답하고, 클라이언트가 ACK(Acknowledgment) 패킷을 다시 응답함으로써 "3-way handshake"가 이루어진다.
연결이 설정되면 양쪽은 서로에게 데이터를 안전하게 전송할 수 있다.
신뢰성 있는 전송 (Reliability)
데이터 전송의 신뢰성을 보장하기 위해 다양한 메커니즘을 사용한다.
데이터의 순서를 보장하여 수신측에서 데이터를 올바르게 재조립한다.
데이터가 손실되거나 손상된 경우에는 재전송 메커니즘을 통해 손실된 데이터를 다시 전송한다.
흐름 제어 (Flow Control)
흐름 제어 기능을 통해 송신자와 수신자 간의 데이터 흐름을 조절한다.
수신자가 처리할 수 있는 속도보다 더 빠른 속도로 데이터를 전송하지 않도록 하여 네트워크 혼잡을 방지하고 데이터 손실을 최소화한다.
혼잡 제어 (Congestion Control)
혼잡 제어 알고리즘을 통해 네트워크 혼잡을 감지하고 이에 대응한다.
네트워크의 혼잡 상태를 판단하여 송신자가 데이터를 전송하는 속도를 조절하여 네트워크 성능을 최적화한다.
UDP (User Datagram Protocol)
신뢰성 없는 전송 (Unreliable Delivery)
UDP는 연결이 설정되지 않고, 데이터 전송의 신뢰성을 보장하지 않는다.
데이터를 전송하고, 데이터의 손실이나 순서의 변경에 대해 신경쓰지 않는다.
최소한의 오버헤드 (Minimal Overhead)
TCP와 달리 UDP는 연결 설정이나 흐름 제어, 혼잡 제어와 같은 추가적인 기능을 제공하지 않는다.
UDP 헤더의 크기가 작아 TCP보다 더 적은 오버헤드를 가진다.
빠른 전송 속도 (Fast Transmission Speed)
TCP와는 달리 UDP는 추가적인 처리와 지연이 없으므로 더 빠른 전송 속도를 가질 수 있다.
TCP보다 더 빠른 응답 시간이 필요한 응용 프로그램에 유리하다.
결론(TCP vs. UDP)
TCP는 웹 페이지의 내용을 전송하는 데 적합하며, 파일 전송이나 이메일 전송과 같이 신뢰성이 필요한 경우에 사용된다. 반면에 UDP는 실시간 스트리밍, 온라인 게임, DNS(Domain Name System) 등에서 사용되며, 데이터의 빠른 전송이 중요한 경우에 적합하다.