定时发送和接收相同的数据包
Timing sending and receiving the same packet
我想通过发送具有与源IP相同的dest IP的数据包来计时系统的延迟有多快。这相对简单吗?
您将如何自定义构建数据包?
设置这两个IP地址能达到我想要的效果吗?
最佳计时方法是什么?
任何提示/想法在低/高水平将不胜感激。我打算在Unix上使用C/c++以及boost库和libpcap。
编辑:我应该补充一下,我将在路由器后面的家庭网络上做这个。如果我使用192.168.2.1(我的系统的本地IP)作为源地址和dest地址,我假定数据包将到达路由器并直接返回。
你可以尝试ping到你自己的IP。这将产生ICMP数据包。有一些库也允许你在应用程序中做同样的事情。
如果你想自己创建数据包,你可以使用套接字API。请记住,您可以发送源IP地址和目的IP地址相同,但端口号需要不同。
对于时序,可以使用gettimeofday
函数。
编辑:可以在c++程序中 ping。请参阅:http://verplant.org/liboping/或查看其他论坛。我之所以强调ping,是因为它可以直接从网络堆栈返回。另一方面,如果发送UDP数据包,期望应用程序返回并回显,那么侦听服务器上数据包的处理时间就会增加。
如果您ping到本地机器ip(甚至lo
),它返回,而不需要切换或下一跳路由器。它会响应,即使你拔掉你的eth电缆或wifi。
您要做的是在NTP守护进程中使用NTP协议实现的。
您不需要为此定制包。只需创建一个套接字,连接到与服务器相同的ip地址,并开始发送包。请注意,这些包永远不会离开网络堆栈,所以您将测量的基本上是系统在用户空间和内核空间之间复制数据的速度。
对于计时,你可以使用clock
函数,这可能是最广泛使用的一个。
- boost::asio UDP 广播客户端仅接收"fast"数据包
- 如何使用发送数据包所花费的时间计算两个节点之间的距离?
- 发送固定大小的 UDP 数据包
- pcap_handler回调仅在使用 NPCAP v0.9991 时包含空数据包
- 在 c++ 中解析数据包数据的最佳方法是什么?
- 接受函数在发送数据包时等待
- 如何在 omnet++ 中发送自定义数据包?
- 数据包访问实践
- 在C++中创建一个简单的数据包路由器,如何跟踪"客户端"?
- 德拉吉诺 LG01-S 收到异常数据包并停止工作
- 将数据包从C++服务器发送到NodeJs服务器时出现MessagePack解码错误
- 使用C++将UDP数据包存储在Structure中
- FFmpeg av_read_frame从音频流返回数据包
- 为什么操作系统正在更改我的数据包的指定传出端口
- 是否可以将多个结构作为一个数据包存储在一个函数中,然后传递给其他函数并在那里提取?
- recvfrom 只收到几个数据包,之后它进入等待状态
- 如何调试由 C++ 编写的 npm 数据包
- 如何在INET的应用层中发送广播数据包
- 定时发送和接收相同的数据包
- Boost::asio如何实现定时数据包发送功能