计算机网络(十):传输层之TCP(中)

计算机网络(十):传输层之TCP(中)

一、TCP的差错控制
TCP的差错控制机制注意点:

  1. TCP协议的设计思想是让应用进程将数据作为一个字节流来发送,无需考虑发送数据字节长度,由TCP负责将字节流分段打包
  2. 依靠TCP连接传送字节流,并且是按序的、无差错、不丢失、不重复
  3. TCP提供差错控制功能,保证正确接收字节流。
    TCP的差错控制是通过差错检测、确认和重传方法实现的

二、TCP的滑动窗口

  1. 滑动窗口的基本概念
    TCP协议使用以字节为单位的滑动窗口协议来控制字节流的发送、接收、确认和重传过程
    滑动窗口注意点:
     2个缓存、2个窗口(控制字节流传输过程)
    发送方缓存:用于存储准备发送的数据。
    发送窗口:窗口值不为0,可以发送报文段。
    接收方缓存:将正确的字节流写入缓存,等待接收读取。
    接收窗口:窗口值 = 接收缓存可以继续接收的字节流。
     字节流分段,按段(序号)传输,捎带确认(确认号)
     通过滑动窗口跟踪、记录发送状态,实现差错控制
  2. 传输的字节流状态分类
    如图为传输的字节流状态分类。
    在这里插入图片描述
  3. 发送窗口与可用窗口
    发送方能够利用TCP连接发送字节流的大小取决于发送窗口的大小。如图为发送窗口和可用窗口的概念图。
    在这里插入图片描述
    可用窗口:其长度等于第3类字节数,表示发送方随时可以发送的字节数
    TCP通过滑动窗口来跟踪和记录发送字节的状态,实现面向字节流传输的功能。发送窗口是实现滑动窗口机制的关键。发送窗口表示发送方已经发送但没有被确认,以及可以随时发送的字节数;可用窗口表示发送方可以随时发送的字节数。
  4. 滑动窗口机制运行过程
    如果没有任何问题的出现,发送方立即发送可用窗口的6字节,那么第3类字节数就变成第2类字节,等待接收方确认。发送可用窗口字节数之后的字节分类和窗口变化如下图所示。
    在这里插入图片描述
    经过一段时间之后,接收方向发送方发送1个报文,确认序号为20~25的字节,如果保持发送窗口依然为15字节,那么将窗口向左滑动,如图为处理确认并滑动发送窗口示意图。
    在这里插入图片描述
  5. TCP滑动窗口协议的特点
    TCP使用发送和接收缓存区,以及滑动窗口机制控制TCP连接上的字节流传输。
    TCP滑动窗口是面向字节的,它可以起到差错控制和流量控制的作用。
    接收方可以在任何时候发送确认,窗口大小可以由接收方根据需要增大或减小。
    发送窗口值不能超过接收窗口值,发送方可以根据自身的需要来决定。

三、选择重发策略
在互联网中,报文段丢失是不可避免的。如图为接收的字节流序号不连续的例子。如果5个报文段在传输过程中丢失了2个,就会造成接收的字节流序号不连续的现象。
在这里插入图片描述
对接收的字节流序号不连续的处理方法有两种:回退方式选择重发方式

  1. 回退方式
    如果采用回退方式处理接收的字节流序号不连续,需要在丢失第2个报文段时,不管之后的报文段是否已经正确接收,从第2个报文段的第1个字节序号151开始,重发所有的4个报文段。显然,这种方法是非常低效的。
    在这里插入图片描述
  2. 选择重发方式
    采取选择重发方式SACK方式,当接收方收到与前面接收的字节流序号不连续的字节时,如果这些字节的序号都在接收窗口之内,则首先接收这些字节,然后将丢失的字节流序号通知发送方,发送方只需要重发丢失的报文段,而无需重发已经接收的报文段。

四、重传定时器

  1. 重传定时器的作用
    重传定时器用来处理报文确认与等待重传的时间。当发送方TCP发送一个报文时,首先将它的一个报文的副本放到重传队列,同时启动一个重传定时器。在重传定时器倒计时到0之前收到确认,表示该报文传输成功;如果在重传定时器倒计时到0时没有接收到确认,表示该报文传输失败,发送方准备重传该报文。如图为重传定时器工作过程示意图。
    在这里插入图片描述
  2. 计算重传时间方法
    TCP协议不会采用简单的静态方法来设定重传定时器的数值,必然要选择使用一个动态的自适应重传方法。对于每个TCP连接都要维持一个RTT变量,它是当前到达目的结点的最佳估计往返延迟值,自适应重传定时是基于往返时间(RTT)。
    计算重传时间的公式:
    Timeout = β * RTT
    其中,β为一个大于1的常量加权因子,RTT为估算的往返时间。RTT计算公式为:
    RTT = α * 旧的RTT + (1 - α) * 最新RTT测量值
    其中,“旧的RTT”是上一个往返时间估算值,“最新RTT测量值”是实际测出的前一个报文的往返时间。

更多后续知识,查看笔记:计算机网络(十一):传输层之TCP(下)

参考资料:《计算机网络与下一代互联网》

猜你喜欢

转载自blog.csdn.net/weixin_38196407/article/details/88777747