SharpPcap开发包分析
1.协议部分
===========================================================================================================================
Packet类
提供属性
Bytes 只读,没有实际实现
Data 只读,没有实际实现
Header 只读,没有实际实现
Color 每一层都继承,颜色不一样
===========================================================================================================================
EthernetPacket类
继承Packet
构造函数:提供Bytes和ethernet层长度
EthernetHeader 与Header相同,链路层头,14bytes
Header* 同EthernetHeader
EthernetHeaderLength 链路层头长度,14
HeaderLength 同EthernetHeaderLength
EthernetData 去掉链路层头后剩下部分
Data* 同EthernetData
Bytes* 所有数据,包括链路层,IP层及以上
EthernetProtocol 可读写,链路层协议字段,0x0800表示IP协议,0x0806表示ARP,0x8035表示RARP
SourceHwAddress 可读写,源MAC地址
DestinationHwAddress 可读写,目的MAC地址
EthernetProtocols_Fields结构
提供ethernet层协议的常量,如0x0800表示IP协议
EthernetProtocol类
提供ethernet层协议中字段的解析方法,有一个字段需要解析,协议类型
EthernetFields_Fields结构
提供ethernet层协议中所有字段的偏移(从本层协议头开始)
===========================================================================================================================
Packet类
提供属性
Bytes 只读,没有实际实现
Data 只读,没有实际实现
Header 只读,没有实际实现
Color 每一层都继承,颜色不一样
===========================================================================================================================
EthernetPacket类
继承Packet
构造函数:提供Bytes和ethernet层长度
EthernetHeader 与Header相同,链路层头,14bytes
Header* 同EthernetHeader
EthernetHeaderLength 链路层头长度,14
HeaderLength 同EthernetHeaderLength
EthernetData 去掉链路层头后剩下部分
Data* 同EthernetData
Bytes* 所有数据,包括链路层,IP层及以上
EthernetProtocol 可读写,链路层协议字段,0x0800表示IP协议,0x0806表示ARP,0x8035表示RARP
SourceHwAddress 可读写,源MAC地址
DestinationHwAddress 可读写,目的MAC地址
EthernetProtocols_Fields结构
提供ethernet层协议的常量,如0x0800表示IP协议
EthernetProtocol类
提供ethernet层协议中字段的解析方法,有一个字段需要解析,协议类型
EthernetFields_Fields结构
提供ethernet层协议中所有字段的偏移(从本层协议头开始)
===========================================================================================================================
IPPacket类
继承EthernetPacket类,
构造函数,直接调用基类EthernetPacket的构造函数
Version 只读,版本
IPVersion 可读写,4位版本
HeaderLength* 只读,IP首部长度
IPHeaderLength 可读写,4位IP首部长度*4,字节数
IpHeaderLength 同IPHeaderLength
Id 可读写,16位标识
FragmentOffset 可读写,13位片偏移
SourceAddress 可读写,源地址
DestinationAddress 可读写,目的地址
IPHeader 只读,IP头部字节数组
Header* 同IPHeader
IPData 只读,IP的数据段长度
Data* 同IPData
IPChecksum 可读写,16位首部校验和
Checksum 同IPChecksum
ValidIPChecksum 只读,检查校验和
ValidChecksum 同ValidIPChecksum
TypeOfService 可读写,8位服务类型
IPTotalLength 可读写,16位IP总长度,字节数
Length 同IPTotalLength
FragmentFlags 可读写,片偏移的三位标志
TimeToLive 可读写,8位生存时间,TTL
方法:
ComputeIPChecksum,参数设为true会更新首部校验和
继承EthernetPacket类,
构造函数,直接调用基类EthernetPacket的构造函数
Version 只读,版本
IPVersion 可读写,4位版本
HeaderLength* 只读,IP首部长度
IPHeaderLength 可读写,4位IP首部长度*4,字节数
IpHeaderLength 同IPHeaderLength
Id 可读写,16位标识
FragmentOffset 可读写,13位片偏移
SourceAddress 可读写,源地址
DestinationAddress 可读写,目的地址
IPHeader 只读,IP头部字节数组
Header* 同IPHeader
IPData 只读,IP的数据段长度
Data* 同IPData
IPChecksum 可读写,16位首部校验和
Checksum 同IPChecksum
ValidIPChecksum 只读,检查校验和
ValidChecksum 同ValidIPChecksum
TypeOfService 可读写,8位服务类型
IPTotalLength 可读写,16位IP总长度,字节数
Length 同IPTotalLength
FragmentFlags 可读写,片偏移的三位标志
TimeToLive 可读写,8位生存时间,TTL
方法:
ComputeIPChecksum,参数设为true会更新首部校验和
IPProtocols_Fields结构
提供IP层协议字段的常量
提供IP层协议字段的常量
IPProtocol类
提供IP层协议的解析方法,并提供支持协议的描述
提供IP层协议的解析方法,并提供支持协议的描述
IPFields_Fields类
提供IP层协议的每隔字段的偏移(从本层协议头开始)
提供IP层协议的每隔字段的偏移(从本层协议头开始)
IPAddress类
提供IP层中IP字段相关的操作,包括从字节buffer中取的IP地址和修改地址
提供IP层中IP字段相关的操作,包括从字节buffer中取的IP地址和修改地址
IPPorts_Fields结构
提供所有常用端口的常量定义
IPPort类
提供常用端口的描述信息
提供所有常用端口的常量定义
IPPort类
提供常用端口的描述信息
IPProtocols_Fields结构
提供IP层协议字段的常量
提供IP层协议字段的常量
IPProtocol类
提供IP层协议的解析方法,并提供支持协议的描述
===========================================================================================================================
提供IP层协议的解析方法,并提供支持协议的描述
===========================================================================================================================
UDPPacket类
继承IPPacket
SourcePort 可读写,源端口
DestinationPort 可读写,目的端口
UDPLength 可读写,16位UDP长度,字节 等于Header.Length+Data.Length
Length* 只读,UDPLength
UDPChecksum 可读写,UDP校验和
Checksum* 可读写,UDPChecksum
UDPHeader 只读,UDP头部字节数组
Header* 只读,UDPHeader
UDPData 可读写,UDP的数据段(写属性在1.6.2版才有)
Data* 只读,UDPData
方法:
ComputeUDPChecksum 参数设为true会更新首部校验和
SetData 设置UDP包的数据段内容,会自动更新UDPLength,IPTotalLength,调用基类OnOffsetChanged方法,更新PcapHeader(在1.6.2版才有)
继承IPPacket
SourcePort 可读写,源端口
DestinationPort 可读写,目的端口
UDPLength 可读写,16位UDP长度,字节 等于Header.Length+Data.Length
Length* 只读,UDPLength
UDPChecksum 可读写,UDP校验和
Checksum* 可读写,UDPChecksum
UDPHeader 只读,UDP头部字节数组
Header* 只读,UDPHeader
UDPData 可读写,UDP的数据段(写属性在1.6.2版才有)
Data* 只读,UDPData
方法:
ComputeUDPChecksum 参数设为true会更新首部校验和
SetData 设置UDP包的数据段内容,会自动更新UDPLength,IPTotalLength,调用基类OnOffsetChanged方法,更新PcapHeader(在1.6.2版才有)