TCP 신뢰성 있는 통신을 위한 주요 기능
1. TCP의 신뢰성 개요
TCP는 신뢰성 있는 통신을 보장하기 위해 다음 세 가지 주요 기능을 제공합니다:
1. 오류 제어: 데이터 전송 중 발생하는 오류를 감지하고, 재전송을 통해 복구.
2. 흐름 제어: 수신 호스트가 처리할 수 있는 만큼만 데이터를 송신.
3. 혼잡 제어: 네트워크 혼잡 상태에 따라 전송 속도를 동적으로 조절.
2. 오류 제어
TCP는 재전송을 기반으로 오류를 제어하며, 주요 동작은 다음과 같습니다:
-
오류 감지 방법:
- 중복된 ACK(확인 응답) 수신: 수신자가 같은 ACK를 반복해서 보낸다면, 해당 데이터 세그먼트가 손실되었음을 의미.
- 타임아웃 발생: 일정 시간 내에 ACK를 받지 못하면 세그먼트 손실로 간주.
-
ARQ (Automatic Repeat reQuest):
TCP는 오류 발생 시 자동으로 데이터를 재전송하는 ARQ 기법을 사용합니다.
- Stop-and-Wait ARQ: 하나의 데이터 전송 후, ACK를 받을 때까지 대기.
- 장점: 구현이 간단하고 높은 신뢰성.
- 단점: 전송 효율이 낮음.
- Go-Back-N ARQ: 여러 데이터를 연속으로 전송하되, 오류가 발생한 데이터 이후 모든 데이터를 재전송.
- 장점: 효율적.
- 단점: 불필요한 데이터 재전송.
- Selective Repeat ARQ: 오류가 발생한 데이터만 선택적으로 재전송.
-
빠른 재전송 (Fast Retransmit):
중복된 ACK를 세 번 수신했을 경우, 타임아웃을 기다리지 않고 즉시 데이터 재전송.
3. 흐름 제어
- 목적: 송신 호스트가 수신 호스트의 처리 속도에 맞춰 데이터를 전송.
- 슬라이딩 윈도우(Sliding Window):
- 수신 호스트는 TCP 헤더의 윈도우 필드를 통해 자신이 처리할 수 있는 데이터 양을 송신 호스트에 전달.
- 송신 호스트는 이 정보를 기반으로 한 번에 전송 가능한 데이터 양을 조절.
- 윈도우 크기:
- 첫 번째 세그먼트를 전송한 후 ACK를 받으면 윈도우가 오른쪽으로 이동.
- 이렇게 윈도우가 미끄러지듯 동작하기 때문에 슬라이딩 윈도우라고 부름.
- 특징:
- 수신 호스트의 상태를 반영하여 데이터 전송량을 조절.
- 네트워크 혼잡과는 관계없이 송수신 호스트 간의 송수신 균형 유지.
4. 혼잡 제어
- 목적: 네트워크의 혼잡 상태를 감지하고 전송 속도를 조절하여 혼잡 붕괴를 방지.
- 혼잡 윈도우 (Congestion Window):
- 송신 호스트가 혼잡 상황을 고려하여 전송할 수 있는 데이터 양을 결정.
- 수신 윈도우와 함께 사용되어 실제 전송 가능한 데이터 양 결정:
[
\text{전송 가능 데이터 양} = \min(\text{수신 윈도우}, \text{혼잡 윈도우})
]
혼잡 제어 알고리즘
-
AIMD (Additive Increase, Multiplicative Decrease):
- 혼잡하지 않으면 혼잡 윈도우를 선형적으로 증가.
- 혼잡이 감지되면 혼잡 윈도우를 절반으로 감소.
- 혼잡 윈도우 크기가 톱니 모양으로 변화.
-
슬로우 스타트 (Slow Start):
- 혼잡 윈도우를 작은 값(1)부터 시작하여, ACK를 받을 때마다 윈도우 크기를 지수적으로 증가.
- 빠르게 전송 속도를 증가시킬 수 있지만, 느린 시작 임계치(SST)에 도달하면 종료.
-
혼잡 회피 (Congestion Avoidance):
- 슬로우 스타트가 종료된 후, 혼잡 윈도우를 선형적으로 증가.
- 혼잡이 발생하지 않도록 신중하게 전송 속도 조절.
-
빠른 회복 (Fast Recovery):
- 세 번의 중복 ACK를 수신했을 때 수행.
- 느린 시작을 건너뛰고 혼잡 회피 단계로 진입하여 빠르게 전송 속도를 회복.
5. 흐름 제어와 혼잡 제어의 차이
구분 | 흐름 제어 | 혼잡 제어 |
---|
목적 | 수신 호스트의 처리 속도에 맞춘 데이터 전송 | 네트워크 혼잡 상태에 맞춘 데이터 전송 |
주체 | 수신 호스트 | 송신 호스트 |
조절 기준 | 수신 윈도우 크기 | 혼잡 윈도우 크기 |
6. TCP의 신뢰성 기능 요약
- 오류 제어:
- 오류 감지 및 재전송.
- ARQ와 빠른 재전송 사용.
- 흐름 제어:
- 슬라이딩 윈도우를 통해 수신 호스트의 처리 속도에 맞춤.
- 혼잡 제어:
- AIMD, 슬로우 스타트, 혼잡 회피, 빠른 회복을 통해 네트워크 혼잡 상태에 따라 전송량 조절.
이 모든 기능을 통해 TCP는 안정적이고 신뢰성 있는 데이터 전송을 보장합니다.