传输
流量控制
接受方和发送方的速度不一致,发送方要控制接收方的速度。
滑动窗口的大小意味着接收方还有多大的缓冲区可以用于接收数据。
-
序号和确认号
-
seq序号 是指这个段的第一个字节序号
-
ack确认号 指期望收到段的第一个字节序号,且序号前的数据全部接收
-
流量控制
-
接收方发送确认时携带一个接收窗口大小,然后发送方会将自己的窗口设置成 min[接收方窗口,拥塞窗口]
-
特殊情况
-
接收窗口大小为0
,如果接收方发送窗口不为0的确认报文段丢失了,那么会陷入死锁的局面- 解决方案: 为每一个发送方设置一个计时器,当发送方为窗口为0时,每隔一段时间会向接收方发送一个零探测指针,接收方收到后,会发送确认报文段。
-
发送的报文段丢失
,收不到对应确认报文- 解决方案: 不会滑出窗口,重传计时器超时会被重传
拥塞控制
-
慢开始门限值ssthresh和拥塞窗口cwnd
-
-
二种状态
-
慢开始 : 每次 cwnd = cwnd * 2
-
拥塞避免: 每次 cwnd =cwnd + 1
-
三种条件
-
ssthresh和cnwd之间的大小变化
-
超时重传
- 发生条件 重传计时器超时(一定时间内未收到对应确认报文段)
- 更改状态
- ssthresh = cnwd/2
- cnwd = 1
- 慢开始
-
快重传