美文网首页
TCP协议之确认应答

TCP协议之确认应答

作者: 杜子龙 | 来源:发表于2019-07-18 09:30 被阅读0次
TCP传输数据的过程中,每次接收方收到数据后,都会对传输方进行确认应答,也就是会发送ACK报文。这个ACK报文中带有对应的确认序列号,告诉发送方,接收到了哪些数据,下一次的数据从哪里发。

序列号的作用不仅仅是应答的作用,有了序列号能够将接收到的数据根据序列号排序,并且去掉重复序列号的数据。这也是TCP传输可靠性的保证之一。

Delayed ACK(延迟确认):

如果只是单纯的发送一个确认,代价会比较高(IP头部20字节+TCP头部20字节)。
TCP Delayed ACK就是为了解决这个问题,进而改善网络性能。它将几个ACK响应组合在一起成为单个响应,或者将ACK响应与响应数据一起发送给对方,从而减少协议开销。
具体如下:

  • 当有响应数据要发送时,ACK会随响应数据立即发送给对方;
  • 如果没有响应数据,ACK将会延迟发送,以等待看是否有响应数据可以一起发送。在linux系统中,默认这个延迟时间是40ms;
  • 如果在等待发送ACK期间,对方的第二个数据包又到达了,这时要立即发送ACK。

Nagle算法

Nagle算法是一种通过减少网络发送数据包来提高TCP/IP网络效率的方法。它使用发明人 John Nagle 的名字来命名的,John Nagle 在 1984 年首次用这个算法来尝试解决福特汽车公司的网络拥塞问题。
试想如果应用程序每次产生1个字节的数据,都以网络数据包的形式发送到远程服务器,那么就很容易导致网络因为太多的数据包而过载。在这种情况下,传送一个只有1个字节有效数据的数据包,却要花费40个字节长包头(即IP头部20字节+TCP头部20字节)的额外开销,这种有效载荷(payload)的利用率是极其低下的。
具体如下:

  • 如果发送内容大于等于1个MSS(MSS为TCP数据包每次能传输的最大数据分段),立即发送;
  • 如果之前有包没有被ACK,则缓存发送内容;
  • 如果收到ACK,立即发送缓存内容。

Delayed ACK和Nagle算法同时使用

Nagle和Delayed ACK都能提高网络传输的效率,Nagle用在发送方,Delayed ACK用在接收方,一起使用就可能会出大问题。例如:
A和B进行数据传输,A运行Nagle算法,B运行Delayed ACK算法;如果A向B发送一个数据包,B由于Delayed ACK不会立即响应;而A使用Nagle算法,就会一直等待B的ACK,ACK不来一直缓存剩下的数据包;如果这两个数据包是应对同一个请求,那这个请求就会被耽误40ms。

参考:

https://mp.weixin.qq.com/s?__biz=MzUyMDE1ODQ3NQ==&mid=2247483877&idx=1&sn=14094b286c3a82818d65b73b085c1e19&chksm=f9efed81ce986497425387cc5a341e36aad6bc0fa1368f4565595fbb914ff48996932148b235&scene=0&xtrack=1&key=67f1291a8f8b0e0caedc032ecf4ea17ccadc06a109cf50bc6c150da5bed72491f2fe6035ec0af2ea118e68db8cbdbfc92d8e646444f379400c50e6252398afffb5b0e4f4ac67aa2261f32ec2646800f6&ascene=1&uin=MTM4NTAxOTAwMA%3D%3D&devicetype=Windows+10&version=62060833&lang=zh_CN&pass_ticket=KCCjrEW7nZtyLfaaJaHQd4lN6EY3WqsDUgOT1lLBtOaVVUytxJEU869XvRI%2FrY09

相关文章

  • TCP协议之确认应答

    序列号的作用不仅仅是应答的作用,有了序列号能够将接收到的数据根据序列号排序,并且去掉重复序列号的数据。这也是TCP...

  • TCP的可靠性传输

    TCP通过检验和、序列号、确认应答、重发控制、连接管理以及窗口控制等机制实现可靠性传输。 通过序列号与确认应答提高...

  • TCP常识

    TCP首部信息。TCP可靠性分析。提高网络利用率。 TCP首部信息 TCP可靠性分析 1. 序列号和确认应答 Se...

  • Http网络请求

    一、TCP/IP协议 1.TCP/IP三次握手SYN:TCP/IP 建立连接时使用的握手信号ACK:确认字符,确认...

  • TCP数据传输

    传输原理 TCP通过 “ 发送 — 应答 (ACK确认)”来确保传输的可靠性,它是端到端传输的。TCP传输是分段的...

  • 探究Redis 07:使用管道加速请求

    请求/响应 协议与往返时延 Redis 基于TCP协议实现服务端,使用客户端服务器模型(请求/应答 协议)进行通讯...

  • 细节随笔

    1.tftp 协议端口号69,属于TCP/IP传输协议,基于UDP协议而实现,传输应答模式,使用场景:小文件传输 ...

  • TCP之Nagle、Cork、Delay ACK(延迟确认)

    [TOC] 参考资料 TCP协议中的Nagle算法 TCP中的Nagle算法 Linux下TCP延迟确认(Dela...

  • TCP 可靠性保证

    1、确认应答(ACK)机制 TCP 将每个字节的数据都进行了编号,即为序列号。确认序号 = 序号 + 1 每个 A...

  • 传输层tcp/udp

    tcp tcp有相当多的控制,包括次序丢包重发等等。 确认应答(ack):发送方的数据到达接收方后,为了让发送方知...

网友评论

      本文标题:TCP协议之确认应答

      本文链接:https://www.haomeiwen.com/subject/ydlklctx.html