Alan的Python新世界

学习网络、Python等技术

[python]学习dpkt-icmp.py

开始分析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的校验和。

posted on 2007-07-17 09:10  轩辕14  阅读(911)  评论(0)    收藏  举报

导航