tcp delayed ack

  • what is TCP delayed ACK

TCP delayed acknowledgment is a technique used by some implementations of the Transmission Control Protocol in an effort to

improve network performance. In essence, several ACK responses may be combined together into a single response,

reducing protocol overhead. However, in some circumstances, the technique can reduce application performance.

TCP作为可靠传输协议,收到消息后,接收端会发送ACK消息给对端告知已经接收完成的消息序号。

但通常TCP在接收到数据时并不立即发送ACK;它推迟发送,以便将 A C K与需要沿该方向发送的数据一起发送(称为数据捎带ACK) 。绝大多数实现采用的时延为 200 ms,也就是说, TCP将以最大200 ms 的时延等待是否有数据一起发送。

delayed ACK,简单的说,就是接收端延时发送ACK确认,在收到数据包的时候,会检查是否需要发送ACK,如果需要的话,判断进行快速ACK还是延时ACK

在非快速确认的条件下,就会使用Delayed Ack。

  • Delayed ACK的原则

1.当有响应数据发送的时候,ACK会随着数据一块发送

2.如果没有响应数据,ACK就会有一个延迟,以等待是否有响应数据一块发送,但是这个延迟一般在40ms~500ms之间,一般情况下在40ms左右,如果在40ms内有数据发送,那么ACK会随着数据一块发送,这个200ms延迟并不是指收到数据到发送ACK的时间延迟,而是内核会启动一个定时器,每隔200ms就会检查一次,比如定时器在0ms启动,200ms到期,180ms的时候data来到,那么200ms的时候没有响应数据,ACK仍然会被发送,这个时候ACK延迟了20ms.

3.如果在等待发送ACK期间,第二个数据包又到了,这时候立即发送ACK

很显然,delayed ACK,减少了传输数据段的个数,多个连续的TCP包,ACK会合并传输,提高了发送效率,降低了网络流量,但过多的delay会拉长RTT

ACK的超时时间200ms,ACK可能会等待多个数据块,直到ACK超时,Nagle's Algorithm的开启会导致一些严重的延迟情况,后续详解Nagle's Algorithm算法

相关推荐
treesforest6 天前
AI安全系统如何识别异常访问?IP风险识别正在成为关键能力
网络·人工智能·tcp/ip·安全·web安全
江华森6 天前
TCP/IP 协议栈实战 — 7 个实验详解
网络·tcp/ip·智能路由器
酉鬼女又兒6 天前
零基础入门计算机网络运输层:端到端通信核心作用、端口号分类规则、复用分用工作机制及UDP与TCP协议全方位对比详解
网络·网络协议·tcp/ip·计算机网络·考研·udp·php
dog2506 天前
不要再继续优化 TCP
网络协议·tcp/ip·php
Shepherd06196 天前
【IT 运维】Apache 使用 mod_remoteip 恢复 Cloudflare 后的真实访客 IP
运维·tcp/ip·apache
C++ 老炮儿的技术栈6 天前
Qt工控实战:自研机器人TCP长连接客户端(粘包处理+心跳保活+自动重连完整源码解析)
qt·tcp/ip·机器人
CS_SKILL7 天前
腾讯后台社招一面:系统调用、TCP 可靠性、URL 到 DNS,再加一个计时函数设计题
网络·tcp/ip·面试·腾讯校招·后台开发面经
xxwxx__7 天前
51单片机 + ESP8266 TCP通信实战:从零实现WiFi远程控制
c语言·嵌入式硬件·tcp/ip·51单片机
森G7 天前
61、信号与槽机制在 TCP 编程中的应用---------网络编程
网络·c++·qt·网络协议·tcp/ip
gis分享者7 天前
Linux 网络实战:TCP 协议标志位、紧急机制与连接管理深度解析
linux·网络·tcp/ip·协议·连接管理·深度解析·紧急机制