CS/면접준비

[Network] - TCP Flow Control / Congestion Control

Dortmoot 2022. 9. 30. 21:33

TCP


네트워크 통신에서 신뢰적인 연결 방식

신뢰성을 보장하는 Protocol

 

Reliable Network 보장 조건

  • Loss = Packet이 도중에 유실
  • Ordering = Packet의 순서
  • Congestion = Network가 혼잡
  • Overload = Receiver의 역량

 

Data 전송 과정

 

Flow Control


  • Sender 와 Receiver의 데이터 처리 속도가 차이나는 경우 ( Sender가 느리게 보내줄 때는 상관 X )
  • Receiver는 제한된 Buffer 크기로 용량이 초과되면 Data를 받지 못하고 유실
  • 손실된다면, Sender,Receiver에게 불필요한 전송이 또 발생
  • Receiver에 맞추어 데이터 전송량을 줄여야한다.

해결 방안

1. Stop and Wait

매번 전송한 Packet에 대해 응답을 받는다.

Batch처리와 마찬가지로 더 큰 단위로 처리하는 것이 유리

 

2. Sliding Window

Receiver에서 설정한 Window 크기 만큼 Sender측에서 확인 응답 없이 Segment 전송하여 동적으로 조절

1. sender buffer

 

2. receiver window

3. sender window

 

  • 이때 receiver가 sender에게 ACK 203을 Response하였다면,
  • Sender는 이를 보고 Window의 범위를 203부터 203+7-1 = 209 까지 설정

 

Congetsion Control


  • Sender가 전달한 Packet들은 대형 네트워크를 통해 전달된다. 
  • 만약 라우터에 Packet이 몰리는 경우, 모든 Packet을 처리하는 것이 불가능하다.
  • 이 때, 전송을 못 받은 줄 알고 재전송하게 되면 혼잡만 가중시킬 것이다.
  • 이러한 혼잡을 줄이기 위해 Sender에서 보내는 데이터의 전송속도를 강제로 줄인다.
  • Flow control은 Sender-Receiver 사이의 전송속도 문제이지만, Congestion Contorl은 Router를 포함한 더 넓은 관점에서 봐야한다.

 

1. AIMD

  • 처음에는 Packet을 하나씩 보내고, 문제 없이 도착하면 Packet의 갯수를 증가시킨다.
  • Linear 하게 증가시킨다는 의미
  • 실패하는 경우(time out,전송 실패)에는 Packet을 절반으로 감소 
  • 초기에 높은 대역폭을 사용하지 못하기 때문에 오랜 시간이 걸리며, Congest한 상황을 미리 아는 것이 아닌 이후에 대처

 

2. Slow Start

  • AIMD와 동일하지만, Packet이 이상없이 도착하면 window size를 2배씩 증가
  • 전송 속도를 지수 함수와 동일하게 증가
  • Congest가 발생하면 1씩 떨어뜨린다. ( 어느정도 수용량 예측 )

 

3. Fast Retransmit

  • Receiver가 받아야할 Packet이 오지 않고 다음것이 오게 되면, Ack Packet을 보내게 된다.
  • 특정 Ack가 3번 반복되면 없다고 인지하고 다시 재전송한다.
  • 이 때 혼잡한 상황이 있다고 가정하여 window size를 줄여준다.

4. Fast Recovery

  • 혼잡한 상태가 되면 window size를 반으로 줄이고 선형증가 시킨다.
  • AICD와 동일하게 선형으로 증가.

 

방안