TCP (Transmission Control Protocol)
TCP는 데이터를 안전하게 전송하기 위한 전송 계층 프로토콜입니다.
HTTP, FTP, 이메일 등 신뢰성이 중요한 상황에서 주로 사용됩니다.
TCP의 주요 특성:
-
연결지향적 프로토콜
데이터를 주고받기 전 송신자와 수신자 간 연결을 수립한 후 데이터를 전송합니다.
연결을 위해서는 3-way handshake, 연결 해제를 위해서는 4-way handshake를 사용합니다.
-
재조립과 재전송
데이터 전송 중 순서가 바뀌거나 유실될 경우 재조립 및 재전송을 통해 보완합니다.
-
혼잡 제어와 흐름 제어
네트워크 상태에 맞춰 전송 속도를 조절하여 효율적이고 안정적인 데이터 전달을 수행합니다.
연결지향적 프로토콜
- 데이터를 주고받기 전 3-way handshake 과정을 통해 통신 연결을 확립합니다.
- 송신자와 수신자 간 안정적인 데이터 통신을 보장합니다.
흐름 제어 (Flow Control)
- 송신 측과 수신 측의 데이터 처리 속도 차이를 극복하는 기법입니다.
- 수신 측이 송신 측보다 데이터 처리 속도가 빠를 경우 문제가 없지만 반대의 경우 문제가 발생합니다.
- 수신 측이 감당가능한 용량을 초과한 경우 데이터가 유실될 수 있으며 이로 인해 재전송에 대한 오버헤드가 발생할 수 있습니다.
- 이러한 위험을 줄이기 위해 송신 측의 데이터 전송량을 수신측에 따라 조절해야합니다.
- 이에 대한 해결 방법으로 Stop and Wait, Sliding Window 등의 방법이 있다.
혼잡 제어 (Congestion Control)
- 송신측의 데이터 전달과 네트워크의 데이터 처리 속도 차이를 해결하기 위한 기법입니다.
- 송신 측에서 보내는 데이터는 인터넷을 통해 수신 측에 전달됩니다. 이 과정에서 특정 라우터에 데이터가 몰리게 될 경우 송신 측에서 보낸 데이터를 처리할 수 없으며 또 다시 재전송을 하게 되면서 혼잡만 가중됩니다. 이러한 상황을 막기 위해 송신측에서 데이터 전송을 강제로 줄이게 되는데 이를 혼잡 제어라고 합니다.
UDP (User Datagram Protocol)
UDP는 비연결형 전송 계층 프로토콜입니다.
- 데이터를 전송하기 전 연결을 수립하지 않기 때문에 빠르고 오버헤드가 적습니다.
- 데이터의 순서 보장 및 복구 기능은 없습니다.
- 신뢰성보다 속도가 중요한 경우에 적합합니다.
- 그렇기 때문에 스트리밍, VoIP와 같은 실시간적이고 빠른 전송이 중요한 경우에 사용됩니다.
| 항목 | TCP | UDP |
|---|
| 연결 방식 | 연결지향형 | 비연결형 |
| 신뢰성 | 높음 | 낮음 |
| 속도 | 느림 | 빠름 |
| 오버헤드 | 큼 | 작음 |
| 사용 예시 | HTTP, FTP, 이메일 | 스트리밍, VoIP, 게임 |