Corgi 혼자 공부하는 네트워크 4-3 TCP의 오류,흐름,혼잡 제어 공부 기록
본문 바로가기
개발자 일상/혼자 공부하는 네트워크

혼자 공부하는 네트워크 4-3 TCP의 오류,흐름,혼잡 제어 공부 기록

by 짱아아빠 2024. 9. 29.
반응형

TCP (Transmission Control Protocol)에서 재전송을 기반으로 한 오류 제어, 흐름 제어, 혼잡 제어는 네트워크 통신의 안정성을 유지하는 핵심 요소입니다.

1. 오류 제어와 재전송 기법

  • 오류 감지와 재전송: TCP는 신뢰성을 보장하기 위해 두 가지 작업이 필요합니다.
    1. 송신된 세그먼트에 문제가 발생했는지 감지하는 것,
    2. 문제가 있는 세그먼트를 재전송하는 것입니다.
    오류 감지 방식:
    • 중복된 ACK를 통한 오류 감지: 세그먼트를 전송하고 ACK를 받은 후, 다음 세그먼트를 전송하는데, 만약 누락된 세그먼트가 있다면 수신 측에서 중복된 ACK를 송신 측에 전달합니다. 이를 통해 송신 측은 문제가 있음을 인지하고 빠르게 세그먼트를 재전송할 수 있습니다.
    • 타임아웃을 통한 오류 감지: 송신 측에서 세그먼트를 보낸 후 일정 시간이 지나도 ACK를 받지 못하면 타임아웃이 발생하고, 송신 측은 세그먼트를 재전송합니다.

2. ARQ(Automatic Repeat reQuest) 재전송 기법

  • Stop-and-Wait ARQ: 가장 단순한 방식으로, 송신 측이 한 번에 하나의 세그먼트를 전송하고, 그 세그먼트의 ACK를 받을 때까지 다음 세그먼트를 전송하지 않습니다. 이 방식은 간단하지만 네트워크의 대역폭 효율성이 떨어질 수 있습니다.
  • Go-Back-N ARQ: 여러 세그먼트를 연속적으로 전송할 수 있지만, 오류가 발생하면 오류가 난 세그먼트부터 이후 모든 세그먼트를 다시 전송합니다. 이때 누적 확인 응답 방식을 사용하며, 중간에 오류가 발생한 경우, 해당 세그먼트 이후의 모든 데이터를 다시 전송해야 하므로 효율성이 떨어질 수 있습니다.
  • Selective Repeat ARQ: Go-Back-N ARQ의 단점을 보완한 기법으로, 손실된 세그먼트만을 선택적으로 재전송합니다. 이는 개별 확인 응답 방식으로, 각 세그먼트의 ACK를 별도로 관리하며, 효율성이 높습니다.

3. 흐름 제어

  • 슬라이딩 윈도우 기법: 송신 측이 여러 세그먼트를 동시에 보내고 ACK를 받으면 창을 움직여 다음 세그먼트를 전송하는 방식입니다. 슬라이딩 윈도우는 네트워크 대역폭을 최대한 활용하면서도 수신 측의 수신 버퍼가 넘치지 않도록 조절합니다. 윈도우 크기는 송신 측이 한 번에 보낼 수 있는 데이터의 양을 결정하며, TCP 세그먼트 내에 윈도우 필드가 있어 수신 측의 윈도우 크기를 송신 측이 확인할 수 있습니다.
  • 수신 측 버퍼 관리: 송신 측에서 데이터를 너무 많이 보내 수신 측의 버퍼가 넘치면 버퍼 오버플로가 발생할 수 있습니다. 이를 방지하기 위해 수신 측은 자신의 버퍼 상태에 맞춰 윈도우 크기를 조정하며, 송신 측이 그에 맞게 데이터 전송량을 조절하도록 합니다.
반응형

4. 혼잡 제어

  • 혼잡 윈도우: 혼잡 없이 네트워크를 통해 전송할 수 있는 데이터의 양을 의미합니다. 혼잡 제어는 네트워크가 과부하 상태에 빠지지 않도록 제어하는 중요한 메커니즘입니다.
  • AIMD(증가-감소 제어 알고리즘): 송신 측은 네트워크가 안정적일 때 RTT(왕복 지연 시간)마다 혼잡 윈도우 크기를 선형적으로 증가시키고, 혼잡이 감지되면 절반으로 줄입니다. 이 과정에서 윈도우 크기는 톱니 모양의 패턴을 보이며, 혼잡 상황에서도 네트워크 성능을 유지하려는 특징이 있습니다.
  • 느린 시작(Slow Start): 작은 혼잡 윈도우 크기(일반적으로 1 MSS)로 시작하여, RTT마다 두 배씩 증가시킵니다. 느린 시작 임계치(SSThresh)에 도달하면 혼잡 회피 알고리즘으로 전환되며, 타임아웃이 발생하면 윈도우 크기를 다시 1로 설정합니다. 중복 ACK가 세 번 발생하면 빠른 회복을 수행합니다.
  • 혼잡 회피: 혼잡 임계치 이후에는 혼잡 윈도우 크기를 더 신중하게 1 MSS씩 증가시킵니다. 타임아웃이나 혼잡이 감지되면 윈도우 크기를 1로 줄이거나 절반으로 감소시킵니다.
  • 빠른 회복(Fast Recovery): 세 번의 중복된 ACK가 발생하면 느린 시작 대신 혼잡 회피를 수행하며, 네트워크 혼잡 상태를 빠르게 복구합니다. 타임아웃 발생 시에는 느린 시작을 다시 시작합니다.

5. ECN(Explicit Congestion Notification)

  • ECN 필드: 혼잡이 발생했을 때 네트워크가 송신 측에 이를 알리기 위해 사용됩니다. IP 헤더의 서비스 필드에 두 비트가 할당되며, TCP 헤더의 제어 비트에는 CWR(Congestion Window Reduced)과 ECE(ECN-Echo)가 사용됩니다.
    • CWR(Congestion Window Reduced): 송신 측이 혼잡을 감지하고 윈도우 크기를 줄였음을 수신 측에 알리는 역할을 합니다.
    • ECE(ECN-Echo): 수신 측이 혼잡을 감지하고 이를 송신 측에 알릴 때 사용됩니다. 혼잡이 발생하면 수신 측은 ECE 비트를 설정해 송신 측이 혼잡 상태를 인지하게 합니다.

추가할 부분 요약:

  1. 빠른 재전송에 대한 설명에서 중복된 ACK 3번 발생 시 즉각적인 재전송 기능을 명확히 보충.
  2. 흐름 제어에서 슬라이딩 윈도우의 구체적인 동작 방식을 추가 설명.
  3. 혼잡 제어 부분에 AIMD 알고리즘, 느린 시작, 빠른 회복의 관계를 명확히 보충.
  4. ECN 관련 CWR, ECE 비트의 역할에 대한 보충 설명.
반응형

댓글