渐入TCP(二):可靠传输、流量控制与拥塞控制

2017-07-03 15:18 阅读 759 次 评论 1 条

本文是一个承上启下的过渡篇,向上承接TCP的报头信息,向下为TCP的连接与释放做铺垫。理解TCP的可靠传输、流量控制与拥塞控制是必不可少的。

TCP的主要特点

⑴ TCP是面向连接的运输层协议。

应用程序在使用TCP之前,必须先建立连接,传送完毕后,也需要释放连接(下篇将重点分析)。

⑵ 每一条TCP连接只能有两个端点。

TCP连接的断点称为套接字(socket),它是由IP地址与端口号唯一确定的。

⑶ TCP提供可靠交付的服务。

通过TCP连接传送的数据,无差错、不丢失、不重复,并且按序到达。

⑷ TCP提供全双工通信。

TCP允许通信双方的应用进程在任何时候都可以发送数据,并且两端都设有发送缓存和接收缓存,用来存放临时数据。

⑸ 面向字节流。

流:指的是流入进程或从进程流出的字节序列。虽然应用程序和TCP的交互是一次一个数据块,但TCP将其看作是一连串的无结构的字节流。如下图所示:

当然,TCP是提供全双工通信的,上图我们只对单方向进行了处理。值得注意的是:TCP是一条虚连接(逻辑连接),而不是真正存在的。

可靠传输(停止等待协议)

TCP发送的报文段是交给IP层传输的,但TCP下面的网络所提供的是不可靠传输,理想状态下的传输条件有以下两个特点:

因此我们引入了停止等待协议来实现TCP的可靠性传输:"停止等待"是每发送一个分组就停止发送,等待对方的确认,在收到确认后再发送下一个分组。

我们将停止等待协议分为四种情况处理:

无差错情况。A发送分组F1,发完就暂停发送,等待B的确认,B收到F1后向A发送确认。A收到B的确认信息后会发送后继的分组。

② 超时重传。数据报在传输过程中出现差错,可能存在以下两个情况:

当A超过一段时间后未收到B的确认,就认为F1报文丢失了,因此会超时重传F1报文。我们使用一个超时计时器来检测是否在到期之前收到对方的确认,如果收到,就撤销计时器。

当然我们的停止等待协议为了安全起见,还存在以下三种机制:

③ 确认迟到。传输过程虽没有差错,但B对F1的确认迟到了。A会触发超时重传机制,导致了确认的重复,A收到确认后并丢弃它。

④ 确认丢失。B所发送的确认丢失了,A在设定的超时重传时间内没有收到确认,并且也无法判断自己发送的分组问题还是B发送的确认问题,因此A会在计时器到期后重传F1,此时B会采取下列动作:

流量控制

流量控制(flow control)的核心是让发送方的发送速率不要太快,要让接收方来得及接收。

我们可以利用滑动窗口机制来控制发送方的速率,发送方的发送窗口不能超过接收方的接收窗口的大小。TCP窗口单位为字节,不是报文段。

我们用一张可变窗口的图来模拟一下TCP流量控制的过程:

在上述工程车中,主机B进行了3次流量控制,分别如下:

B向A发送的三个报文都设置ack=1,即只有在ack=1的时候确认字段才有效。

特殊情况:我们模拟一个场景,主机B向A发送了零窗口的报文段后,B的接收缓存又有了存储块间,于是B向A发送rwnd=200,但这份报文在传送过程中丢失了,A一直在等待B发送非零报文,而B也在一致等待A发送数据,此时就处于了一种死锁局面

解决方案:TCP为每一个连接设置持续计时器,只要TCP连接的一方收到对方的零窗口通知,就启动持续计时器,若计时器设置的时间到期,就发送一个零窗口探测报文段(携带1字节数据),而对方在确认这个探测报文段时给出现在的rwnd。若rwnd=0,则重置计时器,否则正常传输。

拥塞控制

网络界的供不应求就是拥塞(congestion),"供"即可用资源,比如带宽、处理机、缓存等。如果网络中的某一类资源需求过大,就会降低性能,吞吐量下降,导致拥塞。

重传不能缓解拥塞,反而会加剧拥塞:原因在于,如果一个路由器因为缓存空间的拥塞而丢弃一些信道的分组,发送方就会重传分组(可能会多次),这样会引起更多的分组流入网络和被网络中的路由器丢弃。

拥塞控制的作用:① 防止过多的数据注入网络 ② 使得当前网络能承受现有的网络负荷 。

上图以对比的方式说明了拥塞控制的必要性。但是拥塞控制是一个动态问题,也就注定了设计难度很大。

拥塞控制算法:我们简单介绍4种算法的原理,下图是从连续收到三个重复的确认转入拥塞避免:

⒈ 慢开始

为了防止拥塞窗口cwnd增长过大引起网络拥塞,需要设置一个慢开始门限ssthresh状态变量

当cwnd < ssthresh时,使用慢开始算法。

当cwnd > ssthresh时,使用拥塞避免算法。

当cwnd = ssthresh时,两者均可。

⒉ 拥塞避免

为了方便起见,我们设置ssthresh为10,超时拥塞窗口的值为26,我们模拟一个拥塞避免的过程:

⒊ 快重传

快重传算法规定:只要发送方一连收到三个重复确认就应当立即重传尚未收到的报文。

⒋ 快恢复

版权声明:本文著作权归原作者所有,欢迎分享本文,谢谢支持!
转载请注明:渐入TCP(二):可靠传输、流量控制与拥塞控制 | 术与道的分享
分类:网络与安全 标签:, ,
1024do.com导航_术与道导航平台

发表评论


表情

  1. alanxgorlan
    alanxgorlan 【队长】 @回复

    围观我洋,赞赞赞,哈哈哈 [强] [强] [强]