[네트워크] TCP/IP 흐름제어와 혼잡제어
Computer Science/네트워크

[네트워크] TCP/IP 흐름제어와 혼잡제어

TCP/IP 란?

컴퓨터와 컴퓨터 간의 LAN 혹은 WAN에서 원활한 통신을 가능하도록 하기 위한 통신 규약

TCP 통신은 네트워크 통신에서 신뢰적인 연결 방식이며, 가장 큰 특성이 신뢰성이다.
신뢰성이란 중간에 데이터가 유실되지 않는 것을 뜻하는데 이러한 신뢰성을 구성하는 대표적인 방법으로 흐름 제어, 혼잡 제어가 있는 것이다.

 

흐름 제어 (End to End)

송신측과 수신 측의 데이터 처리 속도를 일치시키는 기법

수신 측이 송신 측보다 속도가 빠른 것은 문제가 되지 않지만 송신 측이 수신 측보다 빠를 때 문제가 발생하게 된다.

 

정지-대기 (Stop and Wait)

데이터를 담아 패킷을 보낼 때마다 확인 응답(ACK)을 받아야만 그 다음 패킷을 전송할 수 있다.

  • 장점: 구현방법이 단순하고 송신 측 내에 최대 프레임 크기의 버퍼를 1개만 잡아도 된다.
  • 단점: 하나를 보낼때마다 응답을 받아야 하기 때문에 속도가 느리고 비효율적이다.

슬라이딩 윈도우 (Sliding Window)

수신 측에서 설정한 윈도우 크기만큼 송신 측에서 확인 응답 없이 세그먼트를 전송할 수 있게 하여 데이터 흐름을 동적으로 조절하는 방법이다.

윈도우 : 송신, 수신 스테이션 양쪽에서 만들어진 버퍼의 크기
(윈도우의 크기) = (가장 최근 ACK로 응답한 프레임 수) - (이전에 ACK 프레임을 보낸 프레임 수)

 

혼잡 제어 (End to Network)

송신 측의 데이터 전달과 네트워크의 데이터 처리 속도 차이를 해결하기 위한 기법

네트워크 내에 패킷의 수가 과도하게 증가하는 현상을 혼잡이라 하며, 혼잡 현상을 방지하거나 제거하는 기능을 혼잡 제어라고 한다.
네트워크의 혼잡을 피하기 위해 송신 측에서는 보내는 데이터의 전송 속도를 강제로 제어하게 된다.

AIMD (Additive Increase / Multiplicative Decrease)

전송한 패킷이 문제없이 도착하면 윈도우 사이즈를 1씩 증가시키며 전송하는 방식이다.
패킷 전송이 실패하거나 타임아웃이 발생하면 윈도우 사이즈를 절반으로 감소시킨다.

  • 장점 : 모든 호스트가 공평하게 네트워크를 사용한다.
  • 단점 : 초기에 네트워크 대역폭을 사용하지 못하게 되면 시간이 오래 걸리고, 네트워크가 혼잡해지는 상황을 미리 감지할 수 없다.

Slow Start

AIMD의 단점을 극복하기 위한 방법으로 패킷을 하나씩 보내기 시작하고 문제없이 잘 도착한다면 ACK 패킷마다 윈도우 크기를 1씩 늘리며 하나의 주기가 끝나면 윈도우의 크기는 2배가 된다. 그래프의 모양은 지수 함수와 같다.
혼잡 현상이 발생하면 윈도우 크기를 1로 떨어뜨린다.

빠른 재전송(Fast Retransmission)

중간에 누락된 세그먼트를 빠르게 재전송하는 방식으로, 중복된 순번의 패킷을 3개 받으면 패킷의 손실로 간주하여 타임아웃이 발생하기 전에 해당 패킷을 재전송한다.

빠른 회복(Fast Recovery)

혼잡한 상태가 되면 window size를 1로 줄이지 않고 반으로 줄이고 선형 증가시키는 방법이다.

 

 

참고 링크

https://gyoogle.dev/blog/computer-science/network/%ED%9D%90%EB%A6%84%EC%A0%9C%EC%96%B4%20&%20%ED%98%BC%EC%9E%A1%EC%A0%9C%EC%96%B4.html#fast-retransmit-%E1%84%88%E1%85%A1%E1%84%85%E1%85%B3%E1%86%AB-%E1%84%8C%E1%85%A2%E1%84%8C%E1%85%A5%E1%86%AB%E1%84%89%E1%85%A9%E1%86%BC