magie
驱动牛犊
驱动牛犊
  • 注册日期2001-05-17
  • 最后登录2001-11-28
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:3028回复:6

请教诸位大虾:中间层驱动程序开发中,如何得到收发包的上层协议标志信息,如是否为IP包?

楼主#
更多 发布于:2001-05-17 16:21
不胜感激

最新喜欢:

wingmanwingma...
cyhan
驱动牛犊
驱动牛犊
  • 注册日期2001-04-24
  • 最后登录
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2001-05-17 16:42
根据RFC 894 以太网包的第0x12,0x13为 08 00可以识别为IP包.
magie
驱动牛犊
驱动牛犊
  • 注册日期2001-05-17
  • 最后登录2001-11-28
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2001-05-18 10:08
我也曾试过此方式,在protocol层经中间层驱动下传至底层时,可以使用查询以太头中标志,可是上传数据到哪里查??
blue
驱动大牛
驱动大牛
  • 注册日期2001-04-25
  • 最后登录2010-10-15
  • 粉丝0
  • 关注0
  • 积分55分
  • 威望12点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
地板#
发布于:2001-05-18 13:09
不论上传下传或收发包都可查询当你得到一个包的描述符指针Packet,就可利用函数
  NdisGetFirstBufferFromPacket(
    IN PNDIS_PACKET  Packet,
    OUT PNDIS_BUFFER  *FirstBuffer,
    OUT PVOID  *FirstBufferVA,
    OUT PUINT  FirstBufferLength,
    OUT PUINT  TotalBufferLength
    );
从FirstBufferVA开始 14 个Byte就是以太网物理帧Frame头,格式为:
目的物理地址    源物理地址       帧格式        
  6 Bytes          6 Bytes      2 Bytes    
其中,帧格式若是08 00(16进制),说明是IP数据包;若是08 06(16进制),说明是ARP数据包;若是80 35(16 进制),说明是RARP数据包
hyl7877
驱动牛犊
驱动牛犊
  • 注册日期2001-04-05
  • 最后登录
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2001-05-21 08:50
不错,在NDIS中间驱动中,从协议层接收到的包可以通过NdisGetFirstBuffer...等查询包的第一个缓冲区的第13、14个字节来确定协议的类型。
从下层收到的包则可以直接查询接收函数中的BufferHeader中的第13,14个字节。。。。。
yaoshi
驱动牛犊
驱动牛犊
  • 注册日期2001-05-28
  • 最后登录
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2001-05-29 01:56
其实以太包有三种格式:
0800是IP包
0806是ARP包
0835是RARP包
在IP包中,01是ICMP包,02是IGMP包,06是TCP包,17是UDP包,
可以用packet32作为中间层,获取网卡缓冲区数据,
你可以分析这些数据,自然会明白的,
wlw
wlw
驱动牛犊
驱动牛犊
  • 注册日期2001-05-15
  • 最后登录
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2001-05-30 10:46
Tcp/ip详解一套书上有yaoshi说的那几种
顺便问一下,其他类型怎么知道,从哪能查到,介绍本书也行
[wlw 编辑于 2001-06-01 09:22]
[wlw 编辑于 2001-06-03 12:19]
hwang
游客

返回顶部