阅读:3048回复:7
有哪位大侠赐教一下NDIS-PACKET内部结构?
希望能详细一些。还有,是不是上层协议的包会被封装成NDIS-PACKET,如果是的话,例如ip包的数据内容会在哪里?
|
|
最新喜欢:fsb
|
沙发#
发布于:2001-06-26 15:36
还有,NIC miniport 从网卡那里收到的数据又都包括那些成分呢?
把以太网的帧,变成IP包是在哪里完成的呢?? 我是菜鸟,请大侠指教! |
|
|
板凳#
发布于:2001-07-04 14:27
网卡写到内存的数据格式基本上就是以太网帧,
可能还有一些辅助信息。 内存数据就像这样:(辅助信息0)DA SA LEN DATA(可能还有 PAD0)(辅助信息1)DA SA LEN DATA(可能还有PAD1)(辅助 信息2)DA SA LEN DATA(可能还有PAD2)(辅助信息3)DA SA LEN DATA(可能还有PAD1)(辅助信息3)DA SA LEN DATA(可 能还有PAD4)。。。 将以太网帧组装成IP包是Miniport的任务, Miniport分配好空间,然后捡取上述数据 的必要成分将其填入就完成PACKET的组装。 这些都是我看DDK后想的,可能是对的:) [yebear 编辑于 2001-07-04 14:33] |
|
地板#
发布于:2001-07-06 16:14
分组的结构
NDIS Packet由协议驱动分配,填好数据,往下层的ndis 驱动传递,这样,数据就能传向网络。一些最底层的网卡驱动自己分配packet来存放接收到的数据,然后再把它传往对这些packet感兴趣的高层驱动。有时候,一个协议驱动分配好packet,把它传递给网卡驱动,请求网卡驱动把接收到的数据拷贝到提供的packet里。NDIS 提供分配和操作构成packet的基础的函数。 Buffers --------------------- ┌> --------------------- |Packe Descriptor | | | Buffer Descriptor | | Flags; | | | StartVirtualAddress|---->虚拟地址 | PhysicalPageCount | | | ByteOffset; | | TotalLength; | | | ByteCount; | | FirstBuffer;------|-ㄠ | PhysicalPages [] | | .......... | | Next p --------- | |------------------- | | | ---------------------- | |
|
|
地下室#
发布于:2001-07-06 16:17
哎。。这个破论坛,我辛辛苦苦画的图就没了。
要看图,在win2000 ddk里。你在索引里输入Packet Structure就可以了 [iori 编辑于 2001-07-06 16:21] |
|
|
5楼#
发布于:2001-07-06 16:34
我已经加上了帖图功能,下次就可以直接把图片帖上来了。
[znsoft 编辑于 2001-07-06 19:24] |
|
|
6楼#
发布于:2001-07-06 19:06
IP包就在bufferdescripter 里,你可以用ndisquerybuffersafe去得到它的虚拟地址,从第一个bufferdescripter到最后一个,把一个packetdecripter中的bufferdescripter中的内容和起来就是一个完整的包,下来的事情就是按照你的包的媒体头格式来解析数据包了。
|
|
|
7楼#
发布于:2001-07-09 13:15
谢谢大家的帮助,我想我有些懂了。
|
|
|