Chinaunix首页 | 论坛 | 博客
  • 博客访问: 392735
  • 博文数量: 77
  • 博客积分: 2031
  • 博客等级: 大尉
  • 技术积分: 855
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-15 19:54
文章分类

全部博文(77)

文章存档

2011年(1)

2009年(52)

2008年(24)

我的朋友

分类: Python/Ruby

2009-01-07 10:58:01

开始分析icmp.py:

ICMP继承自dpkt.Packet

1、其首部定义如下:
   __hdr__ = (
       ('type', 'B', 8), #ICMP类型:8bit,默认8(请求回显)
       ('code', 'B', 0), #代码:8bit,默认0
       ('sum', 'H', 0) #校验和:16bit,默认0
       )

根据RFC792[Poster11981b]的定义,类型和代码含义如下所示:

常用的有:类型8,类型0,类型5,类型11,类型3

2、ICMP class中定义了针对不同类型的子class,对每种子class,定义了各自的首部__hdr__结构:
   类型0,8 Echo:__hdr__ = (('id', 'H', 0), ('seq', 'H', 0))
   类型3 Unreach:__hdr__ = (('pad', 'H', 0), ('mtu', 'H', 0))
   类型5 Redirect:__hdr__ = (('gw', 'I', 0),)

3、重载了__str__,在其中重新计算了icmp的校验和
阅读(1148) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~