确认应答机制与超时重发机制【TCP原理(笔记一)】

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

通过序列号与确认应答提高可靠性

在TCP中,当发送端的数据到达接收主机时,接收端主机会返回一个已收到消息的通知。这个消息叫做确认应答(ACK(ACK(Positive Acknowled-gement)意指已经接收。) )。

确认应答机制的基本原理

  1. 发送方将数据分割成称为TCP段(TCP segment)的较小单元,并为每个段分配一个唯一的序列号。
  2. 发送方将这些TCP段发送给接收方,并启动一个定时器来跟踪每个已发送段的确认。
  3. 接收方收到TCP段后,将按序将它们重新组装成完整的数据流,并发送一个确认(ACK)给发送方。确认中包含接收到的最高序列号,表示该序列号之前的所有数据都已正确接收。
  4. 发送方在接收到确认后,会停止相应定时器,并继续发送下一个序列号的TCP段。
  5. 如果发送方在定时器超时之前未收到确认,它将重新发送未确认的TCP段。

通常,两个人对话时,在谈话的停顿处可以点头或询问以确认谈话内容。如果对方迟迟没有任何反馈,说话的一方还可以再重复一遍以保证对方确实听到。因此,对方是否理解了此次对话内容,对方是否完全听到了对话的内容,都要靠对方的反应来判断。网络中的“确认应答”就是类似这样的一个概念。当对方听懂对话内容时会说:“嗯”,这就相当于返回了一个确认应答(ACK)。而当对方没有理解对话内容或没有听清时会问一句“咦?”这好比一个否定确认应答(NACK(NACK(Negative Acknowledgement)) )。

正常的数据传输

确认应答机制与超时重发机制【TCP原理(笔记一)】,图解TCP/IP,tcp/ip,笔记,网络协议
TCP通过肯定的确认应答(ACK)实现可靠的数据传输。当发送端将数据发出之后会等待对端的确认应答。如果有确认应答,说明数据已经成功到达对端。反之,则数据丢失的可能性很大。

如图所示,在一定时间内没有等到确认应答,发送端就可以认为数据已经丢失,并进行重发。由此,即使产生了丢包,仍然能够保证数据能够到达对端,实现可靠传输。

数据包丢失的情况

确认应答机制与超时重发机制【TCP原理(笔记一)】,图解TCP/IP,tcp/ip,笔记,网络协议
未收到确认应答并不意味着数据一定丢失。也有可能是数据对方已经收到,只是返回的确认应答在途中丢失。这种情况也会导致发送端因没有收到确认应答,而认为数据没有到达目的地,从而进行重新发送。如图所示。

确认应答丢失的情况

确认应答机制与超时重发机制【TCP原理(笔记一)】,图解TCP/IP,tcp/ip,笔记,网络协议
此外,也有可能因为一些其他原因导致确认应答延迟到达,在源主机重发数据以后才到达的情况也履见不鲜。此时,源发送主机只要按照机制重发数据即可。但是对于目标主机来说,这简直是一种“灾难”。它会反复收到相同的数据。而为了对上层应用提供可靠的传输,必须得放弃重复的数据包。为此,就必须引入一种机制,它能够识别是否已经接收数据,又能够判断是否需要接收。

上述这些确认应答处理、重发控制以及重复控制等功能都可以通过序列号实现。序列号是按顺序给发送数据的每一个字节(8位字节)都标上号码的编号(序列号的初始值并非为0。而是在建立连接以后由随机数生成。而后面的计算则是对每一字节加一。) 。接收端查询接收数据TCP首部中的序列号和数据的长度,将自己下一步应该接收的序号作为确认应答返送回去。就这样,通过序列号和确认应答号,TCP可以实现可靠传输。

发送的数据

确认应答机制与超时重发机制【TCP原理(笔记一)】,图解TCP/IP,tcp/ip,笔记,网络协议

  • 序列号(或确认应答号)也指字节与字节之间的分隔。
  • TCP的数据长度并未写入TCP首部。实际通信中求得TCP包的长度的计算公式是:IP首部中的数据包长度-IP首部长度TCP首部长度。

重发超时如何确定

重发超时是指在重发数据之前,等待确认应答到来的那个特定时间间隔。如果超过了这个时间仍未收到确认应答,发送端将进行数据重发。那么这个重发超时的具体时间长度又是如何确定的呢?

最理想的是,找到一个最小时间,它能保证“确认应答一定能在这个时间内返回”。然而这个时间长短随着数据包途径的网络环境的不同而有所变化。例如在高速的LAN中时间相对较短,而在长距离的通信当中应该比LAN要长一些。即使是在同一个网络中,根据不同时段的网络拥堵程度时间的长短也会发生变化。

TCP要求不论处在何种网络环境下都要提供高性能通信,并且无论网络拥堵情况发生何种变化,都必须保持这一特性。为此,它在每次发包时都会计算往返时间(Round Trip Time也叫RTT。是指报文段的往返时间。) 及其偏差(RTT时间波动的值、方差。有时也叫抖动。) 。将这个往返时间和偏差相加重发超时的时间,就是比这个总和要稍大一点的值。

重发超时的计算既要考虑往返时间又要考虑偏差是有其原因。如图所示,根据网络环境的不同往返时间可能会产生大幅度的摇摆,之所以发生这种情况是因为数据包的分段是经过不同线路到达的。TCP/IP的目的是即使在这种环境下也要进行控制,尽量不要浪费网络流量。
确认应答机制与超时重发机制【TCP原理(笔记一)】,图解TCP/IP,tcp/ip,笔记,网络协议
在BSD的Unix以及Windows系统中,超时都以0.5秒为单位进行控制,因此重发超时都是0.5秒的整数倍(偏差的最小值也是0.5秒。因此最小的重发时间至少是1秒。) 。不过,由于最初的数据包还不知道往返时间,所以其重发超时一般设置为6秒左右。

数据被重发之后若还是收不到确认应答,则进行再次发送。此时,等待确认应答的时间将会以2倍、4倍的指数函数延长。

此外,数据也不会被无限、反复地重发。达到一定重发次数之后,如果仍没有任何确认应答返回,就会判断为网络或对端主机发生了异常,强制关闭连接。并且通知应用通信异常强行终止。文章来源地址https://www.toymoban.com/news/detail-573795.html

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

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

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

相关文章

  • 【计算机网络】 确认应答机制与超时重传

    当我们客户端发送了一个数据,seq是1 100,那么服务端在收到时就会回一个ack=101的ACK包,代表101之前的包我都收到了,下面请你从101继续发送。然后客户端就会发送101 200,服务端收到后再回一个ack=201,在书写过程中,我们一定要先把标志位置1,然后再发送数据包,否则包是

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

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

    2024年04月15日
    浏览(57)
  • 【网络】传输层——UDP | TCP(协议格式&&确认应答&&超时重传&&连接管理)

    🐱作者:一只大喵咪1201 🐱专栏:《网络》 🔥格言: 你只管努力,剩下的交给时间! 现在是传输层,在应用层中的报文(报头 + 有效载荷)就不能被叫做报文了,而是叫做 数据段 (报头 + 有效载荷),传输层的有效载荷就是应用层的完整报文。 端口号(port):标识了一个主机上

    2024年02月13日
    浏览(44)
  • TCP/IP(十二)TCP的确认、超时、重传机制

    一    TCP的 确认应答 机制 ①  带 重传 的肯定确认 ②  细节   二    TCP的 重传 机制 ①  RTT 和 RTO ②    TCP的 重传 机制 ③  超时 重传 ④  快速 重传 ⑤  SACK  重点 ⑥  Duplicate SACK D-SACK

    2024年02月07日
    浏览(40)
  • TCP的窗口控制和重发控制【TCP原理(笔记三)】

    TCP以1个段为单位,每发一个段进行一次确认应答的处理,如图。这样的传输方式有一个缺点。那就是,包的往返时间越长通信性能就越低。 为解决这个问题,TCP引入了窗口这个概念。即使在往返时间较长的情况下,它也能控制网络性能的下降。如图所示,确认应答不再是以

    2024年02月16日
    浏览(39)
  • SpringBoot集成RabbitMq,RabbitMq消费与生产,消费失败重发机制,发送签收确认机制

           这里spring-boot依赖版本为2.3.7版本,RabbitMq集成amqp包,版本在spring-boot中有涵盖,不单独指明版本了。 Exchange 交换机配置 队列queue配置 将队列和交换机绑定, 并设置用于匹配键 配置加载 RabbitTemplate 生产者 消费者 消息确认签收配置        消息确认签收机制不过多

    2024年01月21日
    浏览(45)
  • 在使用tcp长连接时,是否还需要再引入重发机制?

           在TCP(Transmission Control Protocol)中,长连接是指在通信过程中保持连接状态的一种方式,相对于短连接而言。长连接通常用于需要频繁通信的场景,以减少连接建立和断开的开销。在长连接中,数据可以在多次交互中传输,而连接保持打开状态。       关于是否需要

    2024年02月03日
    浏览(35)
  • TCP机制-延迟应答,捎带应答

            在看本篇博客前推荐先看TCP中窗口和滑动窗口的含义以及流量控制         延迟应答和捎带应答都是TCP用于提高网络传输效率的机制         当发送端发送数据给接收端了以后,按道理接收端的内核会立即返回ACK(应答报文)给发送端,而且ACK(应答报文)中不

    2024年02月11日
    浏览(31)
  • 【TCP】重传与超时机制

    在网络通信的世界里,传输控制协议(TCP)扮演着一个至关重要的角色。它确保了数据的可靠传输,就像邮差确保每一封信都能准确无误地送达收件人手中一样。但是,网络环境充满了不确定性,数据包可能会因为各种原因丢失或延迟。为了应对这种情况,TCP实现了重传和超

    2024年04月13日
    浏览(35)
  • 5.8.6 TCP可靠传输(二)超时重传机制

    5.8.6 TCP可靠传输(二)超时重传机制 超时重传机制是TCP协议保证数据可靠性另外一个非常重要的机制,它的原理是 当发出一个数据之后就开启一个定时器,如果在规定的时间之内没有得到发送数据报的ACK的应答就应当从缓存中把数据取出并重新发送出去,一直到数据发送成

    2024年02月13日
    浏览(39)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包