본문 바로가기

학부_대학원/네트워크

Tcp 흐름제어

SMALL

flow control[흐름제어]


송,수신 과정에서 데이터 처리 속도 차이를 해결하기 위한 방법이다.


수신 측이 송신 측보다 속도가 빠른 경우는 문제가 발생하지 않는다.


하지만 송신측이 수신 측 보다 속도가 빠르면 문제가 된다.


수신 측에서 수신된 데이터를 처리해서 상위 계층으로 서비스하는 속도에 비해서 


송신 측의 데이터가 더 빠를 경우에 수신 측이 처리 할수 있는 데이터에는 한계가 발생한다.


그러면 송신측에서 데이터를 보냈어도, 수신 측은 이를 수용하지 못하기 때문에


Secret이라는 단어를 보냈는데 수신측은 sect만 받을 수도 있는 것이다.


이러한 문제를 해결하기 위한 방법이 흐름제어이다.


이런 흐름제어 방법에는 2가지가 있다. 


하나는 stop and wait 방식이고 다른 하나는 Windowing 방식이다.


stop and wait 방식은 밑의 그림에서 보면 알 수 있듯이 하나를 보내고 하나를 받는다.


이는 너무 비효율적이라고 생각 된다. 


전혀 두개의 상황과 성능을 고려하지 않는 방식이다.



Windowing 방식



정의

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

--> 간단히 정리하면 늦게 보내는건 상관 없지만 늦게 받는건 문제가 되니,

받아 들일 수 있는 만큼의 양이 얼마야?라고 물어보고 그만큼만 보내놓을 수있게 하는 관리 기법이다.


과정

3 hand shake를 통해서 window size를 설정한다. 그 후 송신 측은 설정된 사이즈 만큼 데이터를 보낸다.

그리고 수신 측에서 처리한 데이터에 관해서 갯수를 ack 응답을 보낸다.

그러면 다시 송신 측은 처리된 갯수만큼의 데이터를 다시 보내는 것이다.

이러한 과정을 나타낸 그림이 위에 그림이다.




TCP의 3 Hand-Shake를 거치면서 송, 수신자의 window의 크기를 알 수 있다.


이를 통해서 수신 측의 receive window size를 송신 하는 window size 크기를 맞추는 것이다.


송신 측에서의 window 크기는 수신자의 상태를 확인하지 않고 보낼 수 있는 window의 크기이다.


[출처] http://slenderankle.tistory.com/230

LIST