开始分析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的校验和
阅读(1194) | 评论(0) | 转发(0) |