TCP의 오류·흐름·혼잡 제어

0

network

목록 보기
27/39

TCP 신뢰성 있는 통신을 위한 주요 기능


1. TCP의 신뢰성 개요

TCP는 신뢰성 있는 통신을 보장하기 위해 다음 세 가지 주요 기능을 제공합니다:
1. 오류 제어: 데이터 전송 중 발생하는 오류를 감지하고, 재전송을 통해 복구.
2. 흐름 제어: 수신 호스트가 처리할 수 있는 만큼만 데이터를 송신.
3. 혼잡 제어: 네트워크 혼잡 상태에 따라 전송 속도를 동적으로 조절.


2. 오류 제어

TCP는 재전송을 기반으로 오류를 제어하며, 주요 동작은 다음과 같습니다:

  • 오류 감지 방법:

    1. 중복된 ACK(확인 응답) 수신: 수신자가 같은 ACK를 반복해서 보낸다면, 해당 데이터 세그먼트가 손실되었음을 의미.
    2. 타임아웃 발생: 일정 시간 내에 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{혼잡 윈도우})
      ]

혼잡 제어 알고리즘

  1. AIMD (Additive Increase, Multiplicative Decrease):

    • 혼잡하지 않으면 혼잡 윈도우를 선형적으로 증가.
    • 혼잡이 감지되면 혼잡 윈도우를 절반으로 감소.
    • 혼잡 윈도우 크기가 톱니 모양으로 변화.
  2. 슬로우 스타트 (Slow Start):

    • 혼잡 윈도우를 작은 값(1)부터 시작하여, ACK를 받을 때마다 윈도우 크기를 지수적으로 증가.
    • 빠르게 전송 속도를 증가시킬 수 있지만, 느린 시작 임계치(SST)에 도달하면 종료.
  3. 혼잡 회피 (Congestion Avoidance):

    • 슬로우 스타트가 종료된 후, 혼잡 윈도우를 선형적으로 증가.
    • 혼잡이 발생하지 않도록 신중하게 전송 속도 조절.
  4. 빠른 회복 (Fast Recovery):

    • 세 번의 중복 ACK를 수신했을 때 수행.
    • 느린 시작을 건너뛰고 혼잡 회피 단계로 진입하여 빠르게 전송 속도를 회복.

5. 흐름 제어와 혼잡 제어의 차이

구분흐름 제어혼잡 제어
목적수신 호스트의 처리 속도에 맞춘 데이터 전송네트워크 혼잡 상태에 맞춘 데이터 전송
주체수신 호스트송신 호스트
조절 기준수신 윈도우 크기혼잡 윈도우 크기

6. TCP의 신뢰성 기능 요약

  • 오류 제어:
    • 오류 감지 및 재전송.
    • ARQ와 빠른 재전송 사용.
  • 흐름 제어:
    • 슬라이딩 윈도우를 통해 수신 호스트의 처리 속도에 맞춤.
  • 혼잡 제어:
    • AIMD, 슬로우 스타트, 혼잡 회피, 빠른 회복을 통해 네트워크 혼잡 상태에 따라 전송량 조절.

이 모든 기능을 통해 TCP는 안정적이고 신뢰성 있는 데이터 전송을 보장합니다.

0개의 댓글