Wireshark(前称Ethereal)是一个网络封包分析软件。网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料。Wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换。
IP数据报的格式如图1所示。普通的IP首部长为20个字节(除非含有选项字段)。
版本:由4比特构成,表示标识IP首部版本号。
首部长度(IHL: Internet Header Length):由4bit构成,表明IP首部的大小,单位为4字节(32bit)。对于没有任何选项的IP包,首部长度则设置为“5”(20字节)。
服务类型(区分服务):由8bit构成,用来表明服务质量。DSCP(Differential Services Codepoint,差分服务代码点),用来进行质量控制;ECN(Explicit Congestion Notification,显式拥塞通告),用来报告网络拥堵情况,由2bit构成。
总长度:表示IP首部与数据部分合起来的总字节数。为16bit,因此IP包的最大长度为65535字节。
16位标识:用于分片分组。同一分片的标识值相同,不同分片的标识值不同。即使ID相同,如果目标地址、原地址或协议不同的话,也会被认为是不同的分片。
3位标志:表明包被分片的信息,每一位对应的具体含义如下:
片偏移:用来标识被分片的每一分段想对于原始数据的位置。第一个分片对应的值为0.最多可以标识8192个相对位置。
生存时间(TTL):指包可以中转多少个路由器的意思。每经过一个路由器,TTL会减少1,知道变为0在丢弃该包。
协议(Protocol):标识IP首部隶属于哪个协议。
16位首部校验和:校验数据包的首部部分,不校验数据部分。
32位源地址:发送端IP地址;
32目标地址:接收端IP地址;
可选项:长度可变,通常只在进行实验或诊断时使用。
填充:在有可选项的情况下,首部长度可能不是32bit的整数倍,为此,通过向字段填充0,调整为32bit的整数倍。
数据:数据部分。
最后贴上使用Wireshark具体分析数据包的情况: