TCP三次握手和四次挥手及拥塞控制

TCP是网络层级中第四层:

物理层--->链路层(交换机)----->网络层(IP/路由器 三层交换机)---->传输层(tcp/udp)CP的主要特性对比:

 

udp是面向无链接的,不需要维护与目标对象的链接状态 不保证数据可靠.而TCP恰好相反.

在这里插入图片描述

TCP建立链接的过程:三次握手,断开链接的过程:四次挥手,保证网络传输质量:拥塞控制.

下面是TCP的协议格式

TCP头部

TCP三次握手:

目的:

1.握手是TCP保持链接的必要条件,有了握手才能保证数据完整性,才能实现传输质量控制.

2.三次握手是为了防止无效链接请求,如客户端发起请求,但是由于网络超时,客户端关闭了请求,此时服务端收到了请求,为客户端创建了链接,这种就是无效链接.

过程:

三次握手建立连接

客户端主动退出的TCP四次挥手:

目的:

由于TCP是全双工,客户端和服务器均可以同时发送和接收数据,断开链接的时候为了确保客户端和服务器均完成数据发送和接收.

过程:

四次挥手关闭连接

 

拥塞控制

目的:网络的带宽是有限的,不进行拥塞控制将会造成网络堵塞,同时无法保证数据发送和接收的可靠性和及时性.下图可以看到如果不进行拥塞控制,整个网络将会崩溃.

在这里插入图片描述

 TCP进行拥塞控制的四种算法:

1.慢开始

2.快恢复

3.快重传

4.拥塞控制

在这里插入图片描述

 

慢开始

TCP维护了以下三个变量,以达到一开始向网络注入的报文少的目的.

swnd cwnd ssthresh

swnd:发送方窗口

cwnd:拥塞窗口

该值取决与网络拥塞程度,动态变化

只要网络没有发生拥塞,则该值减,发生拥塞 则该值增加,什么情况代表发生拥塞?当没有及时收到回传的报文.

慢开始ssthresh:门限

当cwnd<ssthresh:使用慢开始算法

当cwnd>ssthresh:改用拥塞避免算法

当cwnd=ssthresh:同时可以使用拥塞算法和慢开始算法

一旦出现超时重传,TCP 就会把慢开始门限 ssthresh 的值设置为 cwnd 值的一半,同时 cwnd 设置成 1.

快重传

我们知道,一旦出现超时重传,TCP 就会把慢启动门限 ssthresh 的值设置为 cwnd 值的一半,同时 cwnd 设置成 1. 但是快恢复算法不这样做。

一旦出现超时重传,或者收到第三个重复的 ack 时(快重传),TCP 会把慢启动门限 ssthresh 的值设置为 cwnd 值的一半,同时 cwnd = ssthresh (在有些版本中,会让 cwnd = ssthresh + 3)。

之前的旧版本的算法是在 TCP 的 Tahoe 版本中,而改进的版本算法是在 TCP Reno 版本中。图 2 中演示了他们之间的区别。蓝色曲线是旧版本,而红色是新版本。

快恢复:

这里写图片描述

 图2 TCP Reno 版本与 Tahoe 版本

一旦出现超时重传,或者收到第三个重复的 ack 时(快重传),TCP 会把慢启动门限 ssthresh 的值设置为 cwnd 值的一半,同时 cwnd = ssthresh (在有些版本中,会让 cwnd = ssthresh + 3)。

图 2 中,连续收到三个重复确认后,TCP Reno(红色)版本转入了拥塞阶段,而 TCP Tahoe 版本(蓝色)转入了慢启动阶段。

实际上,现代的 Linux 内核版本早已都不采用上面这些 TCP 版本了,而是使用使用的 TCP Cubic 版本。那为什么还要学呢?这就好比你想学会走,你就得先学会爬,简单的先弄会,以后再自学复杂的。

拥塞控制


在学习流量控制的时候,我们假设网络无限好,不拥塞。在学习拥塞控制的时候,我们又假设接收方缓冲区和接收窗口无限大,对数据来者不拒。现在,是时候综合考虑他们的时候了。

如何综合考虑这两者呢?实际上很简单,我们只要将接收方的窗口 rwnd 和拥塞窗口 cwnd 放在一起比较,取两者中的较小者,也就是:

发送方的窗口上限值=min{rwnd,cwnd}

上式指出:

rwnd < cwnd : 是接收方的接收能力限制了发送方窗口的最大值。
cwnd < rwnd : 是网络的拥塞限制了发送方窗口的最大值。
 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值