TCP拥塞控制、网络各层协议

我们知道TCP和UDP都是传输层的协议,最大的区别UDP无连接是面向报文的,不保证可靠传输,无拥塞控制,就是TCP是面向连接的协议,能提供安全,可靠,有序的数据传输,保证数据无差错,不丢失,不重复按序到达

那么TCP是如何保证可靠传输的?

(1)校验和

如果接受到的段检验和有差错,TCP将丢弃这个段,且不会确认收到

(2)流量控制

流量控制的目的是防止数据丢失,如果发送方发送的太快,接收方来不及接受处理那么数据就会丢失,所以流量控制是控制发送方的发送速度的。

流量控制采用滑动窗口在实现,在接收端有自己的缓存大小,接收方只允许发送方发送的数据大小就是目前自己的缓存还能接受多少数据,这个大小也就是滑动窗口的大小。接收方在返回确认信息的时候就会返回自己滑动窗口的大小,

(3)拥塞控制

拥塞控制是作用于网络的,防止过多的数据出现在网络中,导致网络负载过大,主要通过慢开始,快重传,快恢复和避免拥塞来实现的。

慢开始

(1)发送方维护一个拥塞窗口cwnd,这个窗口有一个慢开始ssthresh,发送方一开始传输的时候采用慢开始,也就是不会一下子发送大小为ssthresh的数据量,而是按照指数的增长速度来慢慢加大cwnd的大小,如下图。

 当cwnd>ssthresh时就开始采用拥塞避免算法

拥塞避免算法

拥塞避免算法就是让cwnd的大小线性增长,一个轮次只增加1,这样不会那么快使得网络拥塞。

不论是在慢开始阶段还是拥塞避免阶段,如果出现网络拥塞,ssthresh的大小变为拥塞发生时cwnd值的一半,然后cwnd变为1,在开始慢开始算法

 

快重传

快重传是指当接收方收到一个失序的数据,可以立刻向发送方发送重复确认信息,而不会等到发送下一个确认时捎带发送,发送方只要接收三个连续的重复确认,就会立刻重复发送刚才没有收到确认的数据

快恢复 

与快重传配合使用,当发送方接收到连续三个重复确认请求,为了避免网络拥塞,就会把ssthresh的值减少为当然拥塞窗口的一半,但是发送方认为当前网络并没有发生拥塞,因为还可以接收到三个确认请求,所以不会去执行慢开始算法,而是执行拥塞避免算法

(4)停止等待协议

发送方没发送一个数据就会等待接收方的确认,超过时间没有收到,就会重传

 网络各层协议

 

猜你喜欢

转载自blog.csdn.net/wangdongli_1993/article/details/82052369
今日推荐