본문 바로가기
CS 공부/네트워크

[TCP] 흐름제어/혼잡제어

by 횰쓰 2022. 6. 26.

흐름제어란?

 

  • 송신측과 수신측의 데이터 처리 속도 차이를 해결하기 위한 기법
  • 수신측이 Packet을 지나치게 많이 받지 않도록 조절하는 것
  • 기본 개념은 수신측이 송신측에게 현재 자신의 상태를 Feedback 한다는 점

 

수신측이 송신측보다 데이터 처리 속도가 빠르면 문제없지만, 송신측의 속도가 빠를 경우 문제가 생긴다.

수신측에서 제한된 저장 용량을 초과한 이후에 도착하는 데이터는 손실될 수 있으며, 만약 손실 된다면 불필요하게 응답과 데이터 전송이 송/수신 측 간에 빈번히 발생한다. 이러한 위험을 줄이기 위해 송신측의 데이터 전송량을 수신측에 따라 조절해야한다.

 

→ 해결방법? 

1. Stop and Wait : 매번 전송한 패킷에 대해 확인 응답을 받아야만 그 다음 패킷을 전송하는 방법

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

 


 

혼잡제어란?

 

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

 

송신측의 데이터는 지역망이나 인터넷으로 연결된 대형 네트워크를 통해 전달된다. 만약 한 라우터에 데이터가 몰릴 경우, 자신에게 온 데이터를 모두 처리할 수 없게 된다. 이런 경우 호스트들은 또 다시 재전송을 하게되고 결국 혼잡만 가중시켜 오버플로우나 데이터 손실을 발생시키게 된다.

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

 

→ 해결방법? 

1. AIMD (Additive Increase / Multiplicative Decrease)

2. Slow Start (느린 시작)

3. Fast Retransmit (빠른 재전송)

4. Fast Recovery (빠른 회복)

 


 

흐름제어가 송신측과 수신측 사이의 전송속도를 다루는데 반해, 혼잡제어는 호스트와 라우터를 포함한 보다 넓은 관점에서 전송 문제를 다루게 된다.

'CS 공부 > 네트워크' 카테고리의 다른 글

HTTP&HTTPS  (2) 2022.09.11
로드 밸런싱(Load Balancing)  (0) 2022.07.03
Blocking/Non-blocking & Synchronous/Asynchronous  (0) 2022.07.03
[TCP] 3 way handshake & 4 way handshake  (0) 2022.06.26

댓글