为什么我的libpcap会话中两个捕获的数据包之间有0秒的延迟?

时间:2016-11-28 18:45:56

标签: c++ networking logging libpcap

我的forking代理重复每个传入连接:每个子进程启动一个分离的线程,该线程使用public class MyOrmLiteAuthRepository : OrmLiteAuthRepository<CustomUserAuth, UserAuthDetails> { public OrmLiteAuthRepository(IDbConnectionFactory dbFactory) : base(dbFactory) {} public OrmLiteAuthRepository(IDbConnectionFactory dbFactory, string namedConnection=null) : base(dbFactory, namedConnection) {} } 会话记录该连接的数据包。查看我的日志文件,发现两个属于同一连接的捕获数据包之间有0秒的延迟。

我不知道这是因为我的错误,还是我在pcap库中遗漏了一些东西,但这对我来说是一个严重的问题:延迟用于计算每秒数据包公式pcap(延迟以微秒为单位)。

这是我应该担心的吗?或者1000000 / delay没有提供足够的精度?我不熟悉接收数据包的速度有多快(代理在我的笔记本电脑上运行,我使用的是适度的家庭网络,下载速度为5 Mbps)。

这种情况只发生在下载数据包时(当我获得Debian ISO或观看YouTube视频时),并且在近80000个捕获数据包中发生10次。如果pcap_pkthdr中的timeval使用pcap_pkthdr,0延迟是否会消失?

无论如何,这是每个日志记录线程执行的代码:

nanoseconds

1 个答案:

答案 0 :(得分:0)

因为在相同的CPU时钟滴答内有两个数据包。由于网卡在接收数据包时会产生中断,这是可能的。