1. TCP流量控制
业务控制是指不怎么加快发送侧的发送速度,使得能够从接收侧进行接收和发送。
原理上要通过检查消息中的窗口字段来控制发送方的发送速率,发送方的发送窗口大小不能超过接收方给出的窗口大小。
考虑到特殊情况,在接收端向发送端发送了零窗口消息段之后,接收端有几个存储区。 接收方和发送方发送了非零窗口的报文段。 但是,这个消息段在传输过程中丢失了。 发送方的发送窗口保持为0时发生了死锁。
为了解决这个问题,每个连接都设置了持续计数器,在连接侧接收到零窗口通知时,持续计数器会启动。 当持续计数器设置的时间期满时,发送零窗口探测消息块,对方确认该探测消息块提供当前窗口值。 如果窗口仍然为零,则接收到该消息段的一方可以复位持久计数器,否则可以消除死锁中的僵局。
2.TCP拥塞控制
拥塞控制:可以防止向网络注入过多数据,并可以使网络中的路由器或链路过载。 如果网络出现拥塞,则数据包将丢失,发送方将继续重新发送,进一步加剧网络拥塞。 因此,在发生拥塞时,需要控制发送方的速度。 这一点类似于流量控制,但出发点不同。 流量控制是为了使接收方能赶上接收(端到端通信),而拥塞控制是为了降低整个网络的拥塞(全局)。
2.1TCP拥塞控制方法
TCP进行拥塞控制的算法有慢启动、拥塞避免、高速重发、高速恢复4种。
发送方使自己的发送窗口等于拥塞窗口,拥塞窗口的大小随网络拥塞程度而动态变化。
数据是单向发送的,对方只发送确认信息。
由于接收方始终有足够的缓存空间,因此发送窗口的大小由网络拥塞决定。
慢启动和避免拥塞
的第一次执行较晚开始,cwnd=1,发送方只能发送一个消息段; 在确认之后,由于cwnd加倍,所以其后发送方能够发送的消息段的数量为2、4、8 .
在cwnd ssthresh (慢启动阈值)的情况下,切换为拥塞避免算法,拥塞避免算法每经过一次往返时间就在cwnd上加1。
如果cwnd=ssthresh,则可以同时使用慢启动和拥塞避免算法。
对于cwnd ssthresh,慢慢开始算法。
网络超时时,ssthresh=cwnd/2,同时设置拥塞窗口cwnd=1。 进入慢启动算法。
2 .快速重传和快速恢复
迅销算法要求接收方立即发送确认,而不是等待自己发送数据后再进行确认。 即使失去顺序的段重复确认发送的段。 发送方在连续收到3个重复确认后必须立即重新发送。 在这种情况下,只会丢失各个消息段,而不是网络拥塞。 因此,执行高速恢复,发送侧调整阈值ssthresh=cwnd/2,并且设定拥塞窗口cwnd=ssthresh,开始拥塞避免算法。
慢启动和快速恢复速度是cwnd的设置,而不是cwnd的增长率。 将慢启动cwnd设置为1,将快速返回cwnd设置为ssthresh。