TCP的窗口控制和重发控制【TCP原理(笔记三)】

这篇具有很好参考价值的文章主要介绍了TCP的窗口控制和重发控制【TCP原理(笔记三)】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

利用窗口控制提高速度

TCP以1个段为单位,每发一个段进行一次确认应答的处理,如图。这样的传输方式有一个缺点。那就是,包的往返时间越长通信性能就越低。
TCP的窗口控制和重发控制【TCP原理(笔记三)】,图解TCP/IP,tcp/ip,笔记,网络协议,网络
为解决这个问题,TCP引入了窗口这个概念。即使在往返时间较长的情况下,它也能控制网络性能的下降。如图所示,确认应答不再是以每个分段,而是以更大的单位进行确认时,转发时间将会被大幅度的缩短。也就是说,发送端主机,在发送了一个段以后不必要一直等待确认应答,而是继续发送。
TCP的窗口控制和重发控制【TCP原理(笔记三)】,图解TCP/IP,tcp/ip,笔记,网络协议,网络
窗口大小就是指无需等待确认应答而可以继续发送数据的最大值。在上图中,窗口大小为4个段。

这个机制实现了使用大量的缓冲区(缓冲区(Buffer)在此处表示临时保存收发数据的场所。通常是在计算机内存中开辟的一部分空间。) ,通过对多个段同时进行确认应答的功能。

如下图所示,发送数据中高亮圈起的部分正是前面所提到的窗口。在这个窗口内的数据即便没有收到确认应答也可以发送出去。此外,从该窗口中能看到的数据因其某种数据已在传输中丢失,所以发送端才能收到确认应答,这种情况也需进行重发。为此,发送端主机在等到确认应答返回之前,必须在缓冲区中保留这部分数据。
TCP的窗口控制和重发控制【TCP原理(笔记三)】,图解TCP/IP,tcp/ip,笔记,网络协议,网络
在滑动窗口以外的部分包括尚未发送的数据以及已经确认对端已收到的数据。当数据发出后若如期收到确认应答就可以不用再进行重发,此时数据就可以从缓存区清除。

收到确认应答的情况下,将窗口滑动到确认应答中的序列号的位置。这样可以顺序地将多个段同时发送提高通信性能。这种机制也被称为滑动窗口控制。

窗口控制与重发控制

在使用窗口控制中,如果出现段丢失该怎么办?

确认应答未能返回的情况

首先,我们先考虑确认应答未能返回的情况。在这种情况下,数据已经到达对端,是不需要再进行重发的。然而,在没有使用窗口控制的时候,没有收到确认应答的数据都会被重发。而使用了窗口控制,就如下图所示,某些确认应答即便丢失也无需重发。
TCP的窗口控制和重发控制【TCP原理(笔记三)】,图解TCP/IP,tcp/ip,笔记,网络协议,网络

TCP中的窗口控制机制可以使得即便某些确认应答丢失,发送方无需重发对应的数据。这是通过TCP的选择确认机制(Selective Acknowledgment,SACK)来实现的。

  • 在传统的TCP中,如果接收方收到乱序的数据段,它只会发送一个累积确认(Acknowledgment,ACK)来指示已经成功接收到哪些数据段,而没有指明丢失了哪些数据段。这样,发送方只能根据连续的确认来确定丢失的数据,并进行重传。
  • 然而,使用了SACK选项后,接收方可以在ACK中指明哪些数据段已经成功接收,同时也指明哪些数据段还未接收到。这样,发送方就知道了具体哪些数据段需要进行重传,而不必等待超时,提高了传输效率。
  • SACK选项提供了更精确的信息,使得发送方能够快速重传仅丢失的数据段,而不必重传已经成功接收的数据段。这样可以避免不必要的重传,减少网络拥塞和传输延迟,提高整体速度。
  • 需要注意的是,SACK选项并不是TCP的必需功能,它是一种可选的扩展。因此,对于不支持SACK的TCP实现或网络环境,仍然会使用传统的累积确认和超时重传机制。

某个报文段丢失的情况

其次,我们来考虑一下某个报文段丢失的情况。如图所示,接收主机如果收到一个自己应该接收的序号以外的数据时,会针对当前为止收到数据返回确认应答(不过即使接收端主机收到的包序号并不连续,也不会将数据丢弃而是暂时保存至缓冲区中。) 。

如图所示。当某一报文段丢失后,发送端会一直收到序号为1001的确认应答,这个确认应答好像在提醒发送端“我想接收的是从1001开始的数据”。因此,在窗口比较大,又出现报文段丢失的情况下,同一个序号的确认应答将会被重复不断地返回。而发送端主机如果连续3次收到同一个确认应答(之所以连续收到3次而不是两次的理由是因为,即使数据段的序号被替换两次也不会触发重发机制。) ,就会将其所对应的数据进行重发。这种机制比之前提到的超时管理更加高效,因此也被称作高速重发控制。
TCP的窗口控制和重发控制【TCP原理(笔记三)】,图解TCP/IP,tcp/ip,笔记,网络协议,网络

如果接收主机收到一个自己应该接收的序号以外的数据时,它会针对当前为止已经成功接收到的数据返回确认应答,而不是针对异常数据。

  • TCP使用序号(Sequence Number)来标识每个传输的数据段,并使用确认序号(Acknowledgment Number)来确认已成功接收到的数据。当接收主机收到一个序号不匹配的数据段时,它会忽略该数据段,并发送一个确认应答,确认已经成功接收到的数据,即上一个正确的序号对应的数据。
  • 这种行为是为了通信的可靠性和协议的健壮性。通过确认已成功接收的数据,发送主机可以得知哪些数据已经被接收到,从而避免重复发送相同的数据。接收主机可以通过丢弃不匹配的数据段并返回确认应答来通知发送主机数据接收的状态。
  • 如果发送主机在一定时间内没有收到确认应答,它会认为发送的数据丢失,并重新发送相应的数据段,以确保数据的可靠传输。
  • 总结来说,当接收主机收到一个不匹配序号的数据时,它会针对当前为止已经成功接收到的数据返回确认应答,而不会针对异常数据。这种机制有助于确保TCP的可靠性和传输的正确性。

控制流

发送端根据自己的实际情况发送数据。但是,接收端可能收到的是一个毫无关系的数据包又可能会在处理其他问题上花费一些时间。因此在为这个数据包做其他处理时会耗费一些时间,甚至在高负荷的情况下无法接收任何数据。如此一来,如果接收端将本应该接收的数据丢弃的话,就又会触发重发机制,从而导致网络流量的无端浪费。

为了防止这种现象的发生,TCP提供一种机制可以让发送端根据接收端的实际接收能力控制发送的数据量。这就是所谓的流控制。它的具体操作是,接收端主机向发送端主机通知自己可以接收数据的大小,于是发送端会发送不超过这个限度的数据。该大小限度就被称作窗口大小。在前面6.4.6节中所介绍的窗口大小的值就是由接收端主机决定的。

TCP首部中,专门有一个字段用来通知窗口大小。接收主机将自己可以接收的缓冲区大小放入这个字段中通知给发送端。这个字段的值越大,说明网络的吞吐量越高。

不过,接收端的这个缓冲区一旦面临数据溢出时,窗口大小的值也会随之被设置为一个更小的值通知给发送端,从而控制数据发送量。也就是说,发送端主机会根据接收端主机的指示,对发送数据的量进行控制。这也就形成了一个完整的TCP流控制(流量控制)。

下图为根据窗口大小控制流量过程的示例。
TCP的窗口控制和重发控制【TCP原理(笔记三)】,图解TCP/IP,tcp/ip,笔记,网络协议,网络文章来源地址https://www.toymoban.com/news/detail-593927.html

到了这里,关于TCP的窗口控制和重发控制【TCP原理(笔记三)】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • TCP/IP网络参考模型(端口号、TCP滑动窗口、TCP拥塞控制、IP协议号、以太网帧)

    目录 TCP/IP四/五层模型 应用层常见协议——传输数据PDU 传输层协议——传输数据段 端口号 TCP面向连接服务CONS  TCP报文格式 TCP数据传输——ACK确认机制 TCP会话建立——三次握手 TCP会话结束——四次握手 TCP流量控制——滑动窗口协议 TCP可靠传输机制 TCP拥塞控制 UDP无面向连

    2024年02月03日
    浏览(59)
  • 网络协议【图解TCP/IP(笔记二)】

    随处可见的协议 在计算机网络与信息通信领域里,人们经常提及“协议”一词。互联网中常用的具有代表性的协议有IP、TCP、HTTP等。而LAN(局域网)中常用的协议有IPX/SPX(Novell公司开发的NetWare系统的协议。) 等。 “计算机网络体系结构”将这些网络协议进行了系统的归纳

    2024年02月12日
    浏览(48)
  • 网路原理-传输层UDP,TCP/IP(确认应答,超时重传,连接管理,三次握手,四次挥手,状态转换,流量控制,滑动窗口,拥塞控制,延时应答,捎带应答,异常情况,面向字节流)-网络层(IP协议,地址管理)

    本节重点 • 理解传输层的作⽤,深⼊理解TCP的各项特性和机制 • 对整个TCP/IP协议有系统的理解 • 对TCP/IP协议体系下的其他重要协议和技术有⼀定的了解 我们之前编写完了基本的 java socket ,要知道,我们之前所写的所有代码都在应⽤层,都是为了 完成某项业务,如翻译等。

    2024年04月15日
    浏览(57)
  • 网络的构成要素【图解TCP/IP(笔记七)】

    通信媒介与数据链路 计算机之间通过电缆相互连接。电缆可以分为很多种,包括双绞线电缆、光纤电缆、同轴电缆、串行电缆等。根据数据链路(Datalink,意指相互直连的设备之间进行通信所涉及的协议及其网络。为此,有众多传输介质与之对应。) 的不同选用的电缆类型也

    2024年02月13日
    浏览(55)
  • 计算机网络—网络原理之<TCP/IP 五层协议 >图解+详述

    当应用程序间需要进行网络通讯,在 TCP/IP 五层协议的应用层需要做的工作是,程序员 自定义应用层协议 。 当前要开发一个关于“点外卖软件”的一个项目,其中有一个功能为:获取用户的订单历史(后端服务器从数据库中取出数据返回给前端页面),类似像这样的功能,

    2024年02月07日
    浏览(61)
  • 计算机通信地址【图解TCP/IP(笔记六)】

    通信传输中,发送端和接收端可以被视为通信主体。它们都能由一个所谓“地址”的信息加以标识出来。当人们使用电话时,电话号码就相当于“地址”。当人们选择写信时,通信地址加上姓名就相当于“地址”。 现实生活当中的“地址”比较容易理解,然而在计算机通信当

    2024年02月13日
    浏览(41)
  • 什么是端口号【图解TCP/IP(笔记十一)】

    端口号定义 数据链路和IP中的地址,分别指的是MAC地址和IP地址。前者用来识别同一链路中不同的计算机,后者用来识别TCP/IP网络中互连的主机和路由器。在传输层中也有这种类似于地址的概念,那就是端口号。端口号用来识别同一台计算机中进行通信的不同应用程序。因此

    2024年02月15日
    浏览(43)
  • 协议分层与OSI参考模型【图解TCP/IP(笔记三)】

    协议的分层 OSI参考模型将通信协议中必要的功能分成了7层。通过这些分层,使得那些比较复杂的网络协议更加简单化。 在这一模型中,每个分层都接收由它下一层所提供的特定服务,并且负责为自己的上一层提供特定的服务。上下层之间进行交互时所遵循的约定叫做“接口

    2024年02月13日
    浏览(44)
  • 计算机与网络发展的7个阶段【图解TCP/IP(笔记一)】

    批处理 所谓批处理,是指事先将用户程序和数据装入卡带或磁带,并由计算机按照一定的顺序读取,使用户所要执行的这些程序和数据能够一并批量得到处理的方式。这种计算机通常放置于专门的计算机管理与运维的计算机中心。用户事先将程序和数据装入卡带或磁带送到这

    2024年02月12日
    浏览(60)
  • 如何解决TCP窗口与拥塞? TCP窗口与拥塞控制的解决办法

    计算机网络中的带宽、交换结点中的缓存和处理机等,都是网络的资源。在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络的性能就会变坏。这种情况就叫做拥塞。拥塞控制就是防止过多的数据注入网络中,这样可以使网络中的路由器或链路不

    2024年02月07日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包