* 흐름제어
- 받는 곳의 Buffer가 제한되있기 때문에 Sender에서 지속적으로 값을 보내면 Buffer의 손실이 있을 수 있다.
ex) Buffer frame의 크기가 8이라고 한다면, Sender측도 최대 8개의 frame만 보낼 수 있다. 만일 9개의 frame을 보낸다면 1의 손실을 갔는다고 할 수 있고, Receiver의 Buffer가 차있었다면 더많은 손실을 가져온다.
- Receiver가 Buffer의 정보를 보내지 않는다면...
- 이러한 문제를 해결하기 위해서 Ack와 함께 Buffer상태를 알려주는 COT를 보내준다.
- COT는 TCP header의 Window Length에 표시된다.
ex) 위의 예에 COT를 적용하면...
* 체증 제어(Congestion Control)
- 원인 : Traffic 량이 커서... // 해결법 : Input량을 줄인다.
- TCP congestion control
> Congestion Detection(체증 발견)
: TCP는 Internet외부에 존재하기 때문에 체증을 찾기에 비적합하다.
: Time Out을 이용하여 체증을 발견한다.
(Time Out의 이유 : ⓐ Error 발생(현재는 거의 Error발생이 없다.) ⓑ 체증)
- TCP congestion Control
: Slow Start
> 처음에는 하나의 페킷을 보내고 돌아오는 Ack값의 수를 더하여 더 많이 보낸다.(Buffer의 최대치까지)
- TCP congestion Avoidance
: 전송중에 Time out이 발생하면 다시 처음부터 slow start를 시작해준다.
: Time out이 걸린 것의 다음부터 다시 slow start를 하면 Time Out이 걸린 traffic의 반까지 이전 규칙을 따르다가
1씩 증가시킨다.
ex) 1 > 2 > 4 > 8 > 16(Time out) > 1 > 2 > 4 > 8 > 9 > 10 > ...