TCP_NODELAY在延迟敏感的场景下适合设置

结论先行

TCP发送报文有时比较短,但又对延迟比较敏感的场景,例如,应用控制信令,非常适合启用TCP_NODELAY套接字选项。

现象

  • 发送者在TCP链路上连续发送两条请求,第一条请求立即发送出去了,而第二条要等到TCP Ack后,才能再次发送出去

TCP存在随路Ack确认和延迟Ack确认,TCP对端在没有报文发送时,会出现延迟回复Ack确认

启用代码

c 复制代码
  int enable = 1;
  // 注意使用第二个参数特别需要注意,需要设置为SOL_TCP
  setsockopt(fd, SOL_TCP, TCP_NODELAY, &enable, sizeof(enable));

拷贝粘贴代码易错提示

笔者曾出现设置第二个参数为SOL_SOCKET级别,但TCP_NODELAY特性不生效的情况

后记

后来回想了下,setsockopt第二个参数选项,体现为套接字的协议工作层次,与网络协议栈的层次划分有一定的对应关系。

所以,对于TCP_NODELAY套接字选项,应该设置在传输层上!

猜测TCP_NODELAY默认不启用原因

  • 吞吐量因素

Nagle算法的优化场景

  • 避免发送过多未经确认的数据

工具小贴士

  • putty小程序在配置中提供了TCP_NODELAY的选项控制,以利于界面交互的及时性
相关推荐
哼?~3 小时前
NAT、代理服务、内网穿透
网络
上海云盾-小余6 小时前
内网边界安全管控:访问权限隔离与入侵阻断方案
网络·安全·web安全
南京码讯光电技术有限公司6 小时前
工业无线AP选型指南:从WiFi 5到WiFi 6+5G CPE,如何构建全覆盖、零漫游、高可靠的智能工厂网络?
服务器·网络·5g
优橙教育7 小时前
5G网络优化关键参数解读:从入门到实战
网络·学习·5g
zt1985q7 小时前
本地部署网页监控工具 Webmonitor 并实现外部访问
运维·服务器·网络·网络协议
dog2508 小时前
为何新增网络路径反而引入额外时延
服务器·网络·php
w1wi8 小时前
CRA 差距分析完全指南 | 合规落地第一步
网络·人工智能·安全
缪懿9 小时前
应用层中的UDP协议原理
网络·网络协议·udp·javaee
hbugs0019 小时前
EVE-NG桥接外网的5种方式
开发语言·网络·php·eve-ng·rstp·流量洞察
QuestLab9 小时前
③-进阶篇:vLLM实战——多卡部署、压测与排障
linux·服务器·网络