TCP(Transmission Control Protocol)
- TCP는 신뢰성과 흐름 제어 기능을 제공하여 데이터의 안정적인 전달을 보장한다.
신뢰성
- TCP는 신뢰성 있는 데이터 전송을 제공한다.
- 데이터를 보내고 받을 때, 수신자가 데이터를 정확하게 수신했는지 확인하고, 필요한 경우 재전송을 수행하여 데이터의 손실을 방지한다.
- 이를 위해 TCP는 순차적인 번호(Sequence Number)를 사용하여 데이터의 순서를 관리하고, 수신자가 올바른 데이터를 받았는지 확인하는 기능을 제공합니다. 수신자는 올바른 데이터를 받은 경우 다음 TCP 세그먼트 데이터 번호(ACK Number)를 송신자에 보낸다.
- 이러한 특징으로 인해 TCP는 HTTP 프로토콜, 전자우편, 파일 전송 등 손실이 일어나면 안되는 곳에서 사용 된다.
흐름 제어
- TCP는 송신자와 수신자 간의 데이터 흐름을 조절하는 기능을 제공한다.
- 수신자는 자신이 처리할 수 있는 데이터의 양을 알려주는 슬라이딩 윈도우 크기를 송신자에게 전달한다. 송신자는 이를 기반으로 데이터 전송 속도를 조절하여 네트워크 혼잡을 방지하고, 수신자가 데이터를 처리할 수 있도록 한다.
연결 지향성
- 3-way handshake라는 절차를 거치게 되며, 연결이 성립되면 데이터 전송이 이루어진다.
혼잡 제어
- TCP는 네트워크 혼잡을 감지하고 조절하는 기능을 제공한다.
- 혼잡이 발생하면 데이터 전송 속도를 조절하고, 네트워크 상황을 개선하기 위해 패킷 손실을 줄이는 등의 조치를 취한다. 이를 통해 네트워크의 안정성과 효율성을 유지
UDP(User Datagram Protocol)
- 신뢰성보다는 속도와 효율성을 강조하는 비연결형 프로토콜
비연결형
- 데이터를 전송하기 전에 송신자와 수신자 사이에 논리적인 연결을 설정하지 않으며 (3 way handshaking 진행 x), 데이터그램(datagram) 단위로 독립적으로 전송함.
- 즉, 연결 설정에 필요한 오버헤드가 없어 TCP보다 경량화되고 빠른 전송이 가능하다.
신뢰성 부족
- 데이터그램을 송신한 후에는 수신 확인 응답(ACK)을 기다리지 않고 다음 데이터를 전송한다.
- 이로 인해 데이터의 손실, 중복, 순서 변경 등의 문제가 발생할 수 있다.
- UDP는 신뢰성이 중요한 애플리케이션에는 적합하지 않습니다.
높은 속도와 낮은 지연
- UDP는 데이터를 신속하게 전송하는 데 초점을 맞춰진 프로토콜
- TCP와 달리 흐름 제어, 혼잡 제어, 재전송 등의 기능이 없기 때문에 데이터 전송에 대한 오버헤드가 적음
- 이로 인해 UDP는 실시간 스트리밍, 음성 통화, 온라인 게임 등 지연 시간이 중요한 애플리케이션에 많이 사용된다
단순성
- TCP보다 훨씬 적은 헤더 필드를 가지며, 연결 설정 및 유지 등 복잡한 기능이 없음.
- 이로 인해 구현과 관리가 비교적 간단하며, 리소스 사용이 적습니다.
정리하자면
