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的选项控制,以利于界面交互的及时性
相关推荐
7yewh7 分钟前
针对灵巧手机械结构的探究
网络·人工智能·单片机·深度学习·嵌入式
S1998_1997111609•X7 分钟前
HTTPS/:~/:-go、f\i=.kill/all,app==-nm\Ā=black,IP.apm
网络
pu_taoc2 小时前
KCP协议完全指南:在UDP上再造一个更快的“TCP”
网络协议·tcp/ip·udp
pingao14137810 小时前
智联未来:4G温湿度传感器如何重塑数据监测新生.态
大数据·网络·人工智能
@insist12311 小时前
信息安全工程师-核心考点梳理:第 1 章 网络信息安全概述
网络·软考·信息安全工程师·软件水平考试
无巧不成书021811 小时前
零基础Java网络编程全解:从核心概念到Socket实战,一文打通Java网络通信
java·开发语言·网络
isyangli_blog12 小时前
6. 使用Mininet创建星型网络拓扑,手动设置流表项
网络
skywalk816313 小时前
发现Kotti项目的python包Beaker 存在安全漏洞
开发语言·网络·python·安全
干洋芋果果13 小时前
python-can 虚拟车速通信
网络
学习3人组13 小时前
成品批次信息及全链路溯源汇报材料(大客户专用)
网络·erp·mes