
一 概述
IP数据报由两部分组成:首部+数据部分。首部的前一部分是固定长度,一共20字节大小,是所有IP数据报文必须具有的;固定部分后面是一些可选字段,其长度是可变的。
二 首部固定部分各字段意义
(1)版本:占4位,指IP协议的版本(IPv4或者IPv6)。通信双方的IP协议版本必须一直。
(2)首部长度:占4位,可表示的最大十进制数值为15。其中,首部长度字段所表示的数的单位为32位字(1个32位字长是4字节)。以为首部固定部分为20字节,所有首部长度字段最小值为5(即二进制表示的首部长度0101),最大值为15(二进制位1111),表示首部最大长度可达15个32位字长,即60字节。当IP分组的首部长度不是4字节的整数倍时,必须利用最后的填充字节加以填充。为了尽量避免开销,最常用的首部长度是20字节。
(3)区分服务:占8位。在旧标准中叫做服务类型,但实际一直未使用。
(4)总长度:占16位,指首部和数据部分长度之和,单位为字节,最大长度为:2^16-1=65535字节,实际情况极少遇到,因为在数据链路层种数据帧又有个字段叫做MTU值,其规定了最大传输数据长度。
(5)标识:占16位,每产生一个数据报,计数器就加1,并将此值给标识字段。因为当数据报的长度超过网络的MTU值而必须分片时,这个标识字段的值就被复制道所有的数据报片的标识字段中,相同的标识字段的值使分片后的各数据报能正确的重装为原来的数据报。
(6)标志:占3位,但目前只有两位有意义.标志位最低位为MF,当MF=1表示后面还有分片数据报,MF=0表示这是若干分片数据报的最后一个报文。标志字段中间的一位位DF,意思是不能分片,当DF=0时才允许分片。
(7)片偏移:占13位。指较长的分组在分片后,某分片数据报在原分组种的相对位置。也就是说相对于用户数据字段的起点,该片从何处开始。以8字节位偏移单位,所以每个分片的长度一定是8字节的整数倍。
(8)生存时间:也叫做TTL,占8位,表明这是数据报在网络种的寿命。
(9)协议:占8位,协议字段指出此数据报携带的数据时使用何种协议。
(10)首部校验和:占16位,这个字段只校验数据报的首部,不包括数据部分。
(11)源地址:占32位。
(12)目的地址:占32位。
三 IP部分
首部的可变部分就是一个选项字段,用来支持排错、测量以及安全等措施,此字段的长度可变,从1字节道20字节不等。
四 实战分析
抓取本地任意数据报

整个IP头部如框选所示:45 00 01 80 C2 B6 40 00 37 06 31 1B 1B DE 03 E1 C0 A8 6E 3F,共20字节。

版本:4,表示使用的是IPv4版本

头部长度:5,表示头部长度共5个32位字长,即20字节

区分服务字段:全0,表示未使用

总长度:384,表示数据报总长度为384字节

标识:0xc2b6(十六进制)

分段标识:低位MF为0,中位DF为1,表示该数据报不分片,是最后一个数据报

分段偏移(片偏移):全0,表示该数据报的起点为0

存活时间:55

协议:6,表示使用的是TCP协议。
以下常见协议号:
ICMP------1 (Internet控制报文协议)
IGMP------2 (Internet组管理协议)
TCP ------6 (传输控制协议)
EGP ------8 (外部网关协议)
IGP ------9 (专用内部网关协议)
UDP ------17 (用户数据报协议)
IPv6 ------41 (互联网协议第6版)
GRE ------47 (通用路由封装协议)
ESP ------50 (封装安全载荷协议)
AH ------51 (身份验证标头)
ICMPv6 ------51 (IPv6网络的报文控制协议)
EIGRP ------88 (增强内部网关路由协议,思科独有)
OSPF ------89 (开放式最短路径优先协议)
VRRP ------112 (虚拟路由器冗余协议)
L2TP ------115 (第二层隧道协议)

检验和(首部校验和):0x311b

源地址和目的地址:
