xudepeng
驱动牛犊
驱动牛犊
  • 注册日期2003-05-07
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望2点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
阅读:3967回复:27

用IMD实现数据包分类接收和转发

楼主#
更多 发布于:2004-03-14 17:05
各位高手,我想用IMD实现数据包分类接收和转发,主要是对接收和发送的数据包先进行判断分析,然后分类转发,请帮忙!给高分,最好是那位有类似原代码,在此表示感谢!

最新喜欢:

temptemptempte...
baoyibao99
禁止发言
禁止发言
  • 注册日期2003-05-07
  • 最后登录2016-04-11
  • 粉丝0
  • 关注0
  • 积分894分
  • 威望8415点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-03-14 21:21
用户被禁言,该主题自动屏蔽!
wengyu100
驱动牛犊
驱动牛犊
  • 注册日期2003-10-10
  • 最后登录2006-10-21
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-03-14 22:48
看passthru先,呵呵
xudepeng
驱动牛犊
驱动牛犊
  • 注册日期2003-05-07
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望2点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-03-15 11:27
看passthru先,呵呵



我已经看了passthru,但不知道怎么把数据包分类,然后发送!
请指点
xudepeng
驱动牛犊
驱动牛犊
  • 注册日期2003-05-07
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望2点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-03-15 11:29
关于这点,本论坛中有很多的例子呀,你可以先找找再问



我在论坛上花了两个星期,就是没发现类似的方法和程序,请高人引点过来,谢谢
wengyu100
驱动牛犊
驱动牛犊
  • 注册日期2003-10-10
  • 最后登录2006-10-21
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-03-15 11:58
 
引用:
--------------------------------------------------------------------------------
看passthru先,呵呵
--------------------------------------------------------------------------------




我已经看了passthru,但不知道怎么把数据包分类,然后发送!
请指点

 

既然这样,那么在ptreceive中能截获到以太包,你应该知道吧
有了以太包,你就可以对包进行分类,判断
但是要取得以太包中的数据,需要自己构造一个包
xudepeng
驱动牛犊
驱动牛犊
  • 注册日期2003-05-07
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望2点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-03-15 13:13
[quote]引用:
--------------------------------------------------------------------------------
看passthru先,呵呵
--------------------------------------------------------------------------------




我已经看了passthru,但不知道怎么把数据包分类,然后发送!
请指点

 

既然这样,那么在ptreceive中能截获到以太包,你应该知道吧
有了以太包,你就可以对包进行分类,判断
但是要取得以太包中的数据,需要自己构造一个包
 [/quote]

对啊,我就是需要对以太包进行分析,因为有些发来的以太包是数据,有些以太包发来的是命令,就在这里,很难搞的,看看高人有什么想法,怎么实现?我想了很久,就没想出来,先谢谢了!
lauer
驱动牛犊
驱动牛犊
  • 注册日期2004-02-04
  • 最后登录2013-01-07
  • 粉丝1
  • 关注1
  • 积分578分
  • 威望127点
  • 贡献值1点
  • 好评度57点
  • 原创分1分
  • 专家分0分
7楼#
发布于:2004-03-15 14:37
可以根据包的内容判断(无论是命令还是数据)

12,13位判断包类型

比如 8,0  IP包
     8,6  ARP包

然后继续判断协议类型比如TCP/UDP等
  
start
驱动小牛
驱动小牛
  • 注册日期2001-11-05
  • 最后登录2010-09-03
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望27点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-03-15 14:46
根据以太网帧格式,和相应的承载的协议格式,可以分析任何的数据包
second
xudepeng
驱动牛犊
驱动牛犊
  • 注册日期2003-05-07
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望2点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2004-03-17 18:24
可以根据包的内容判断(无论是命令还是数据)

12,13位判断包类型

比如 8,0  IP包
     8,6  ARP包

然后继续判断协议类型比如TCP/UDP等
    



兄弟,你这个判断包类型有详细的规则和规定吗?

还有判断协议类型又有和星系的规则和规定?
xudepeng
驱动牛犊
驱动牛犊
  • 注册日期2003-05-07
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望2点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2004-03-17 18:28
根据以太网帧格式,和相应的承载的协议格式,可以分析任何的数据包




以太格式也没什么啊,而对应的我是要知道是什么数据包,知道吗?兄弟,你看看能不能说详细点!谢谢
asmsys
驱动老牛
驱动老牛
  • 注册日期2002-03-29
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望17点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2004-03-18 08:36
里边是协议包呀,一层一层剥就是了,关键是转发,要有很多判断工作要处理。
baoyibao99
禁止发言
禁止发言
  • 注册日期2003-05-07
  • 最后登录2016-04-11
  • 粉丝0
  • 关注0
  • 积分894分
  • 威望8415点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2004-03-18 12:47
用户被禁言,该主题自动屏蔽!
aulphar
驱动牛犊
驱动牛犊
  • 注册日期2004-02-23
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2004-03-18 14:06
借问一句,收到以太贞后要想传递给应用程序应该怎么处理,也就是中间层如何与应用程序交互
xudepeng
驱动牛犊
驱动牛犊
  • 注册日期2003-05-07
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望2点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2004-03-19 00:02
里边是协议包呀,一层一层剥就是了,关键是转发,要有很多判断工作要处理。


这个知道,但怎么以太包是数据包还是命令包呢?
asmsys
驱动老牛
驱动老牛
  • 注册日期2002-03-29
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望17点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2004-03-19 08:50
以太包包头只有14字节,除了12个MAC地址,剩下的2字节通常是0x0800(ip包),0x0806(arp包),没有命令和数据之分,ip包中的icmp或许可以称做是命令(我不知道你说的命令是何意思),arp包中只有请求和应答之分。
xudepeng
驱动牛犊
驱动牛犊
  • 注册日期2003-05-07
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望2点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2004-03-19 10:18
以太包包头只有14字节,除了12个MAC地址,剩下的2字节通常是0x0800(ip包),0x0806(arp包),没有命令和数据之分,ip包中的icmp或许可以称做是命令(我不知道你说的命令是何意思),arp包中只有请求和应答之分。


谢谢,很感谢,因为我上层发来的数据包有的是命令包,有的是数据包,数据包就是要继续转发,而命令包怎么就是要某太设备或工作站执行某种操作!
xudepeng
驱动牛犊
驱动牛犊
  • 注册日期2003-05-07
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望2点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
17楼#
发布于:2004-03-19 10:20
下面是协议字段对应的值,给大家,希望大家帮忙,看看我这么问题怎么解决?谢谢

Decimal    Keyword     Protocol                         References
-------    -------     --------                         ----------
     0                 Reserved                              [JBP]
     1     ICMP        Internet Control Message       [RFC792,JBP]
     2     IGMP        Internet Group Management     [RFC1112,JBP]
     3     GGP         Gateway-to-Gateway              [RFC823,MB]
     4     IP          IP in IP (encasulation)               [JBP]
     5     ST          Stream                 [RFC1190,IEN119,JWF]
     6     TCP         Transmission Control           [RFC793,JBP]
     7     UCL         UCL                                    [PK]
     8     EGP         Exterior Gateway Protocol     [RFC888,DLM1]
     9     IGP         any private interior gateway          [JBP]
    10     BBN-RCC-MON BBN RCC Monitoring                    [SGC]
    11     NVP-II      Network Voice Protocol         [RFC741,SC3]
    12     PUP         PUP                             [PUP,XEROX]
    13     ARGUS       ARGUS                                [RWS4]
    14     EMCON       EMCON                                 [BN7]
    15     XNET        Cross Net Debugger            [IEN158,JFH2]
    16     CHAOS       Chaos                                 [NC3]
    17     UDP         User Datagram                  [RFC768,JBP]
slwqw
驱动大牛
驱动大牛
  • 注册日期2002-07-18
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望197点
  • 贡献值0点
  • 好评度147点
  • 原创分0分
  • 专家分0分
18楼#
发布于:2004-03-19 10:55
下面是协议字段对应的值,给大家,希望大家帮忙,看看我这么问题怎么解决?谢谢

Decimal    Keyword     Protocol                         References
-------    -------     --------                         ----------
     0                 Reserved                              [JBP]
     1     ICMP        Internet Control Message       [RFC792,JBP]
     2     IGMP        Internet Group Management     [RFC1112,JBP]
     3     GGP         Gateway-to-Gateway              [RFC823,MB]
     4     IP          IP in IP (encasulation)               [JBP]
     5     ST          Stream                 [RFC1190,IEN119,JWF]
     6     TCP         Transmission Control           [RFC793,JBP]
     7     UCL         UCL                                    [PK]
     8     EGP         Exterior Gateway Protocol     [RFC888,DLM1]
     9     IGP         any private interior gateway          [JBP]
    10     BBN-RCC-MON BBN RCC Monitoring                    [SGC]
    11     NVP-II      Network Voice Protocol         [RFC741,SC3]
    12     PUP         PUP                             [PUP,XEROX]
    13     ARGUS       ARGUS                                [RWS4]
    14     EMCON       EMCON                                 [BN7]
    15     XNET        Cross Net Debugger            [IEN158,JFH2]
    16     CHAOS       Chaos                                 [NC3]
    17     UDP         User Datagram                  [RFC768,JBP]
 


这些协议属于传输层协议,封装在IP头里边,而不是以太包里边。也就是说,对于以太包,你首先要判断是不是0x0800(IP包)。如果是IP包,则进一步判断IP头里边的协议部分,看看是不是上面那些类型,然后做你想做的事。
asmsys
驱动老牛
驱动老牛
  • 注册日期2002-03-29
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望17点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
19楼#
发布于:2004-03-19 12:51
楼上兄说的对,那些都是包在以太包里的东西。
但你给出的内容却不是他们的字段,只是写说明,就拿IP包来说他的字段如下:
typedef struct _IPHDR //20byte
{    
unsigned char Ver_Hlen; //高4位IP版本号+4位首部长度(32bit为单位)
unsigned char TOS; //8位服务类型TOS
unsigned short Length; //16位总长度(字节)包括IP头
unsigned short Ident; //16位标识
unsigned short Flags_Offset; //高3位标志位+13位片偏移
unsigned char TTL; //8位生存时间 TTL  
unsigned char Protocol; //8位协议 (TCP, UDP 或其他)  
unsigned short HdrCheckSum; //16位IP首部校验和(不包括数据)  
unsigned long SrcIP; //32位源IP地址  
unsigned long DstIP; //32位目的IP地址  
}IP_HEADER,*PIP_HEADER;


[编辑 -  3/19/04 by  asmsys]
上一页
游客

返回顶部