使用RX65N芯片的以太网功能。
导入了 T4 driver 包,加入了TCP的功能。
应用上使用了ModbusTCP协议作并为从站设备。
在wireshark抓包的时候。发现当主站发起 modbus请求后,
MCU立刻回复了一条ACK响应请求。
想问有没有什么办法不发这条ACK回去,而是等40ms后或者TCP回信(Windows 10式样)的时候带上这条ACK,用于减小网络负荷。
0.3为MCU 0.228为Modbus主站
上图
①03收到PSH后,立刻单独回复了ACK,一段时间后回复了PSH(应用)
②228收到PSH后,没有单独回复ACK,而是跟着后一条报文(应用)携带ACK
同上
① 同上
②228收到PSH后,没有发新的报文(应用),此时过了40ms, 单独回复了ACK。
RX Smart Configurator中并不提供控制ACK延迟的参数。
ACK是TCP协议栈中实现的,ACK延迟由协议栈内部自动控制,因此不在Smart Configurator中提供相关的控制接口。
FreeRTOS+TCP/IP协议遵循TCP协议规范,其中包含了延迟确认(Delayed ACK)机制。根据TCP规范,接收端会通过延迟发送ACK的方式来进行优化,以减少ACK的数量和带宽开销。
但是,具体的ACK延迟受到较多因素的影响,如:数据报文段大小,网络拥塞程度等。
如需手动设置调整ACK延迟时间,可考虑修改FreeRTOS+TCP源码,在适当的位置插入延迟确认的逻辑。
需格外注意的是:此操作需要对TCP/IP协议栈的内部实现有较深理解,并在修改后评估带来的风险。