sherwin
驱动牛犊
驱动牛犊
  • 注册日期2002-03-08
  • 最后登录2002-05-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1781回复:5

关于包捕获,使用packet.sys

楼主#
更多 发布于:2002-03-08 21:58
请问各位高手,使用packet.sys来捕获包,是否会出现丢包的情况。
我认为这种情况是可能发生的。
flyfox
驱动中牛
驱动中牛
  • 注册日期2001-04-05
  • 最后登录2012-08-03
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望22点
  • 贡献值0点
  • 好评度11点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-03-08 22:42
不会吧,你看NT的网络监视器,它就是调用packet.sys!
如果要丢包,都是上面应用程序的问题,它没有考虑捕获多包发送的情况!
一剑西来,天外飞仙
sherwin
驱动牛犊
驱动牛犊
  • 注册日期2002-03-08
  • 最后登录2002-05-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-03-09 22:23
先谢谢flyfox.
packet.sys执行过程似乎是这样的:当有读命令后,它就捕获一个包,典型的轮询方式。我想,如果是这样的话,是会丢包的,除非从网卡的缓存中读包。
flyfox
驱动中牛
驱动中牛
  • 注册日期2001-04-05
  • 最后登录2012-08-03
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望22点
  • 贡献值0点
  • 好评度11点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-03-10 09:17
先谢谢flyfox.
packet.sys执行过程似乎是这样的:当有读命令后,它就捕获一个包,典型的轮询方式。我想,如果是这样的话,是会丢包的,除非从网卡的缓存中读包。
 

所以上面应用程序调用时,就应该不断先读,如采用ReadFileEx,用告警端口或完成端口,采用回调方式,(具体可以看《Advanced Windows Programming》第三版,这样就不会丢包了。
记住,采用ReadFile,是肯定会丢包的。
而IPMAN中采用DeviceIoControl时采用了另外的方法,我记不清了,似乎也不会丢包。
我现在没有环境,所以不能回答太清楚。
一剑西来,天外飞仙
HuYuguang
论坛版主
论坛版主
  • 注册日期2001-04-25
  • 最后登录2013-04-29
  • 粉丝3
  • 关注1
  • 积分92分
  • 威望11点
  • 贡献值0点
  • 好评度9点
  • 原创分1分
  • 专家分0分
地下室#
发布于:2002-03-10 19:56
[quote]先谢谢flyfox.
packet.sys执行过程似乎是这样的:当有读命令后,它就捕获一个包,典型的轮询方式。我想,如果是这样的话,是会丢包的,除非从网卡的缓存中读包。
 

所以上面应用程序调用时,就应该不断先读,如采用ReadFileEx,用告警端口或完成端口,采用回调方式,(具体可以看《Advanced Windows Programming》第三版,这样就不会丢包了。
记住,采用ReadFile,是肯定会丢包的。
而IPMAN中采用DeviceIoControl时采用了另外的方法,我记不清了,似乎也不会丢包。
我现在没有环境,所以不能回答太清楚。 [/quote]

这个问题有分,我有兴趣:-)。

packet.sys基本上不丢包,我做过试验,4块pci 100M的网卡,
分别连在4个hub上,峰值速度大概是4*70左右,丢包率在0.1%
左右。如果是一个网段,只要内存够大,cpu够快,不会丢包。
我做试验的时候是99年,cpu:p3 450,内存256M。

设计过程很大取决于应用层的策略。异步io是一定要用的,你去
读一读本站上的一篇关于驱动程序和应用层通讯的文章,里面
有一段函数,你可以直接参考。

不再回忆从前,我已经生活在幸福当中。
sherwin
驱动牛犊
驱动牛犊
  • 注册日期2002-03-08
  • 最后登录2002-05-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-03-11 20:11
感谢斑竹的厚爱,我查了许多资料,基本可以确定,像packet.sys这样的协议层驱动,当网络流量很大时,一定会丢包的!这没有太好的解决办法,只能尽量减少丢包,而且,当有PPP协议时,LCP ,NCP也捕获不到。
游客

返回顶部