jasic2002
驱动牛犊
驱动牛犊
  • 注册日期2003-10-26
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望37点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
阅读:1431回复:5

关于passthru中的几个问题

楼主#
更多 发布于:2003-10-28 21:47
在ptReceive函数中的headbuffer中存储的是什么内容?有什么用途?

既然headbuffer和lookaheadbuffer已经能够访问到包的具体内容,为什么还要用getreceivepacket这个函数来获取packet(我想我的理解一定是不对的),请告知啊?谢谢。
packetsize中存储的是整个报文的的长度,那headbuffersize+lookaheadbuffersize的长度是什么长度,我看了过去的一些帖子中发现还要判断二者的关系。如果(packetsize>headbuffersize+lookaheadbuffersize)则要调用NDIStransferdata。是把??

还有ptreceive函数总要判断数据是否收齐,为什么大家不直接用ptReceivePacket(是不是在这个函数中就不需要调用NdisTransferdata函数了),还有为什么ptRecvivePacket就一定能保证收到的报文是齐的()就是说不需要调用NdistransferData函数)。

在报文的管理中,怎么这么麻烦:又是buffer,又是packet descriptor 又是 buffer的descriptor,为什么不能想普通的socket编程中用一个buffer就访问,干吗这么复杂?

在ndis中好像比较强调资源的所有权的问题,这是怎么回事?

另外最后一个问题:就是
在ndis中的oob 好像和tcp中带外数据不是一个概念吧。
NDIS中的oob是干什么用的。
以上问题希望高手能不厌其烦的解答,我实在太菜,研究MSDN好几天,这里以前的帖子也看了不少,就是搞不明白。希望大家不要说得太笼统,还有就是请不要出现诸如“请查看什么帖子的话”
谢谢大家了。另外小弟的水平实在菜,分数不敢一下大把大把的给大家,所以只能省点用了。对家不要见怪。谢谢。求求诸位回答一下吧?



[编辑 -  10/28/03 by  jasic2002]

最新喜欢:

zb_xizb_xi
bangh
驱动牛犊
驱动牛犊
  • 注册日期2003-03-26
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分57分
  • 威望75点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-10-29 08:44
呵呵。
1。 headerbuffer 中是 以太网头。 用途, 你应该知道呀。
2。GetReceivePacket 其实不是 得到包, 而是判断 包中 有无 OOB 数据。
3。loolaheadbubbersize , 为什么要叫 lookahead 呢 ! 从它的英文字面也可以看出 它的作用了。
   你说的关心没错, packetsize > lookaheadbuffersize时要调用 transferdata

4. 弄懂了第 3 个问题, 就知道了。
5。这肯定的, 因为要 涉及到 上下层的通信问题。 我说的上下层, 是指,NIDS IM 及上下层。

6 ,OOB 暑假, 和 TCP 中的 OOB 应该是同一个概念。
bangh
驱动牛犊
驱动牛犊
  • 注册日期2003-03-26
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分57分
  • 威望75点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-10-29 09:59
呵呵。 对 第2 个问题的 更正
GetReceivePacket 是 根据 有无 OOB 数据来 得包 的。
jasic2002
驱动牛犊
驱动牛犊
  • 注册日期2003-10-26
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望37点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-10-29 16:39
还要问个问题,就是关于包结构的.
Packet中的的Private结构好像没有没定义。

我看Passthru中的Packet中直接访问他的成员变量,什么tail啊,head啊。能不能讲讲其中的奥秘。

bangh
驱动牛犊
驱动牛犊
  • 注册日期2003-03-26
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分57分
  • 威望75点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-10-29 17:21
呵呵   private 当然定义了呀。
在 ndis.h中。
antspower
驱动中牛
驱动中牛
  • 注册日期2002-10-17
  • 最后登录2010-08-03
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值2点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-10-29 18:14
在ptReceive函数中的headbuffer中存储的是什么内容?有什么用途?
//以太头,等物理层的头

既然headbuffer和lookaheadbuffer已经能够访问到包的具体内容,为什么还要用getreceivepacket这个函数来获取packet(我想我的理解一定是不对的),请告知啊?谢谢。
//如果低层因为没资源,getreceivepacket返回不为空有OOB
//或者混杂模式,或者老网卡不支持OOB,没有OOB返回空
packetsize中存储的是整个报文的的长度,那headbuffersize+lookaheadbuffersize的长度是什么长度,我看了过去的一些帖子中发现还要判断二者的关系。如果(packetsize>headbuffersize+lookaheadbuffersize)则要调用NDIStransferdata。是把??
//是的。如果packetsize==headbuffersize+lookaheadbuffersize
//表示所有的数据都传上来了。

还有ptreceive函数总要判断数据是否收齐,为什么大家不直接用ptReceivePacket(是不是在这个函数中就不需要调用NdisTransferdata函数了),还有为什么ptRecvivePacket就一定能保证收到的报文是齐的()就是说不需要调用NdistransferData函数)。
//ptReceivePacket这个函数你做不了主来调用,只有当NIC调用
//ndisindicatepacket并且PACKET TYPE!=RESOUCES时,NDIS才调用
//ptreceivepacket

在报文的管理中,怎么这么麻烦:又是buffer,又是packet descriptor 又是 buffer的descriptor,为什么不能想普通的socket编程中用一个buffer就访问,干吗这么复杂?
//这个是因为达到最佳内层分配(对大包),

在ndis中好像比较强调资源的所有权的问题,这是怎么回事?

另外最后一个问题:就是
在ndis中的oob 好像和tcp中带外数据不是一个概念吧。
NDIS中的oob是干什么用的。
//OOB和TCP的带外数据没有任何关系,OOB主要是用来做辅助作用
//比如包的时间戳,资源标志,等等
//里面有个CHECKSUM但是与你没多大关系,除非你有专门优化网络的
//CPU

以上问题希望高手能不厌其烦的解答,我实在太菜,研究MSDN好几天,这里以前的帖子也看了不少,就是搞不明白。希望大家不要说得太笼统,还有就是请不要出现诸如“请查看什么帖子的话”
谢谢大家了。另外小弟的水平实在菜,分数不敢一下大把大把的给大家,所以只能省点用了。对家不要见怪。谢谢。求求诸位回答一下吧?



[编辑 -  10/28/03 by  jasic2002]
放弃瘟草,现吃李草
游客

返回顶部