我正在通过环回接口(interface)测量 Windows 上 TCP/IP 连接的延迟,从发送消息到接收响应的时间大约为 4 毫秒。
对于 RPC 目的,在 TCP/IP 之上有一个 TCF 层。
除了 TCF 帧之外,发送和接收的消息仅包含单个字符作为有效载荷。
处理命令的“服务器”是使用 boost asio 在 C++ 中实现的。
“客户端”发送命令是一个使用 Python TCF 引用实现的 Python 脚本。
我已尝试将套接字选项设置为 TCP_NODELAY 以禁用 Nagle 算法并尝试使用套接字的各种缓冲区大小,但往返时间保持在大约 4 毫秒。我原以为它会低一点。
C++ 方面的分析表明它花费了大约 50% 的执行时间来等待命令,因此下一步将尝试用 C++ 实现替换 python 脚本,但很高兴知道人们可以期待什么环回接口(interface)上的往返时间。
这个SO,问题:
Linux Loopback performance with TCP_NODELAY enabled
是相关的,但没有完全回答我的问题。
最佳答案
您可以使用 ping localhost
建立延迟的下限。它报告的数字是发送一个数据包,接收一个数据包。
如果您的 TCP 消息是在现有连接上发送的,您可能会得到几乎相同的延迟。
如果您测量的时间包括 TCP 连接设置,您可能会得到 10 倍的延迟。
关于c++ - 在 Windows 上的环回接口(interface)上使用 tcp/ip 的延迟方面可以预期什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11276002/