Flow Control & Congestion Control

JooH·2025년 2월 24일

네트워크

목록 보기
7/15

Flow Control은 송신측과 수신측의 데이터 처리 속도 차이를 해결하기 위한 방법이다.
수신 >> 송신 의 경우는 문제가 되지 않는다. 어차피 수신측은 계속해서 데이터를 받을 것이기 때문이다.

하지만 송신 >> 수신의 경우 문제가 발생한다. 수신측에서 데이터를 처리하여 윗 계층으로 서비스 하는 속도보다 송신측에서 보내는 데이터가 많을 경우(빨라서 많아짐), 수신측에서 제한된 저장용량을 초과하여 이후에 도착하는 데이터의 손실을 가져울 수 있다.

따라서 수신측에서 수신 가능한 버퍼의 크기를 공지하고, 해당 크기에 맞게 데이터를 보내면 된다.
다르게 말하면, 송신측의 데이터 전송을 줄이면 된다

1) Stop-And-Wait : 매번 전송한 패킷에 대해 확인 응답을 받아야 다음 패킷을 전송
2) Sliding Window : 수신측에서 설정한 윈도우 크기만큼 송신측에서 확인 응답 없이 세그먼트를 전송할 수 있게 하여, 데이터 흐름을 조절하여 제어함

송신 버퍼의 범위는 수신측의 여유 버퍼 공간을 반영하여 동적으로 바뀌어서 흐름 제어를 수행한다

  • Netstat으로 확인이 가능하다

Congestion Control은 Flow control과는 다르게 송신측의 데이터 전달과 네트워크의 처리속도 차이를 해결하기 위한 방법이다.

  • 송신측이 데이터를 보낼 때, 지역망 등 대형 네트워크를 통해 전달되는데, 네트워크 라우터가 혼잡하여 자신에게 들어온 데이터를 전부 처리하지 못할 경우 데이터 손실이 발생한다. 따라서 이러한 네트워크 혼잡을 피하기 위해 송신측은 데이터의 전송 속도를 강제로 줄이게 된다

1) Slow Start

  • 윈도우 크기를 2배로 늘린다. 그러다가 혼잡현상이 발생하면 윈도우 크기를 1로 줄이고, 혼잡현상이 발생한 창의 절반까지는 2^n만큼 증가시키다가, 그 뒤로는 1씩 증가한다

2) Fast Recovery

  • 혼잡 상태가 되면 창 크기를 1로 줄이는 대신, 반으로 줄이고 선형 증가시키는 방법이다.

0개의 댓글