리루

흐름제어(Flow control)과 혼잡제어(Congestion control) 본문

# Study/Network

흐름제어(Flow control)과 혼잡제어(Congestion control)

뚱보리루 2017. 2. 6. 13:19

1. Flow control은  (호스트와 호스트 간의 데이터 처리를 효율적으로 하기 위한 기법, End to End)

 송신측과 수신측의 데이터처리 속도 차이를 해결하기 위한 기법이다.

 수신측이 송신측보다 속도가 빠른 것은 아무 문제가 되지 않는다.

 송신측이 수신측보다 속도가 빠르면 문제가 발생한다.

 수신측에서 수신된 데이터를 처리해서 윗 계층으로 서비스 하는 속도보다 송신측에서 보내는 데이터 속도가 더 빠르다면, 수신측에서 제한된 저장용량(일반적으로 큐)을 초과하여 이후에 도착하는 데이터의 손실을 가져올 수있다.

 그렇다면 불필요하게 응답과 재전송의 데이터가 다시 송신측과 수신측간에 비번히 이동해야한다.

 따라서, 이러한 위험을 줄이기 위해 강제로 송신측의 데이터 전송을 줄인다.

 

 1-1) Stop and wait 방식

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

 

 1-2) 슬라이딩 윈도우 기법

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

   이 처럼 슬라이딩 윈도우 기법을 통하여 송신 버퍼의 범위는 수신 측의 여유 버퍼 공간을 반영하여 동적으로 바뀜으로써 흐름제어를 수행한다.

 

 

2. Congestion control(호스트와 네트워크 상의 데이터처리를 효율적으로 하기 위한 기법)

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

 송신측의 데이터는 지역망이나 인터넷으로 연결된 대형 네트워크를 통해 전달된다.

 하지만 이러한 네트워크 상의 라우터가 항상 한가로운 상황은 아니다.

 만약, 한 라우터에 데이터가 몰릴 경우, 다시 말해 혼잡할 경우 라우터는 자신에게 온 데이터를 모두 처리할 수 없다.

 그렇게 되면 호스트들은 또 다시 재전송을 하게 되고 결국 혼잡을 가중시켜 오버플로우나 데이터 손실을 발생시킨다.

 따라서, 이러한 네트워크의 혼잡을 피하기 위해 송신측에서 보내는 데이터의 전송 속도를 강제로 줄이게 된다.

 

 2-1) Slow start

  윈도우 크기를 2배로 늘린다.

  그러다 혼잡현상이 발생하면 창 크기를 1로 떨어뜨린다.

  그 후 혼잡현상이 발생했던 창 크기의 절반까지는 이전처럼 지수 함수 꼴로(2배로) 창 크기를 증가시키고 그 이후부터는 완만하게 1씩 증가시킨다.

 

 2-2) Fast Recovery

   혼잡한 상태가 되면 창 크기를 1로 줄이지 않고 반으로 줄이고 선형 증가시키는 방식이다.

 

 

각 제어 별 윈도우 종류?

'# Study > Network' 카테고리의 다른 글

Parity Bit와 Checksum  (0) 2017.04.05
패킷을 통한 TCP/UDP 비교  (1) 2017.03.27
Big Endian and Little Endian  (0) 2017.01.11