1.可靠传输:实现不丢包且有序的传输
①累计应答:接受方缓存收到的数据包,并按照已收到的有序的数据包的最大序号应答,发送方根据确认序号继续传输或重传
保证数据有序到达
②连续ARQ:发送方为收到响应时,会认为包丢失,启动重传机制。重传的时间根据发送响应的时间RTT加权算得。触发超时重传时,下次RTT加倍,解决不丢包问题
2.流量控制:根据接收方的处理能力,调整发送速度
滑动窗口协议:
发送方
①发送窗口 = 已发未确认 + 未发可发
②收到确认,窗口左边界右移
③根据接收方的窗口大小,移动右边界
接收方
①接收窗口 = 等待接收未确认
②应用程序读取,左边界右移
3.拥塞控制:根据网路的承载能力,调整发送速度,发送窗口 <= min {cwnd(拥塞窗口), rwnd(接收窗口)}
①慢开始
试探网络的承载能力,cwnd初始值为1个报文段,每收到一个相应, cwnd+1
所以rwnd = 1 -> 2 ->4 -> 8呈指数增长
②拥塞避免
到达一定的临界值ssthresh,要减慢增长速度,收到一个相应,增加1/cwnd, 呈线性增长
一旦丢包,就重新开始, ssthresh变为cwnd/2
③快重传
如果接受方收到了5,7,8三个包, 丢失了其中的6这个包,会连续发送三个5的ACK,发送方就知道,不是网络拥塞,只是一个包丢失了,会立即进行重传
④快恢复
在快重传的场景下, 发送的方不会从1开始重新执行慢开始->ssthresh->避免拥塞的流程, 而是将cwnd = ssthresh = cwnd/2,
跳过慢开始,快速恢复发送速度