IP数据报首部字段
IP数据报首部的固定部分的各字段:
版本:占4位,指IP协议的版本。通信双方使用的IP协议版本必须一致,IPv4的版本号即为4,因此这个字段上的值也是4.
首部长度(IHL:Internet Header Length):占4位,表明IP首部的大小,单位为4字节(32bit),最小为5
区分服务(TOS:Type Of Service):占8位,指期望获得哪种类型的服务
总长度(Total Length):表示IP首部与数据部分合起来的总字节数。该字段占16位,因此IP包的最大长度为65535(=2^16-1)字节
标识(ID:Identification):占16位,用于分片重组。同一个分片的标识值相同,不同分片的标识值不同。通常,每发送一个IP包,它的值也逐渐递增。此外,即使ID相同,如果目标地址、源地址或协议不同的话,也会被认为时不同的分片
标志(Flags):占3位,目前只有两位有意义
比特 | 含义 |
---|---|
0 | 未使用,现在必须是0 |
1 | 指示是否进行分片(don’t fragment) 0:可以分片 1:不能分片 |
2 | 包被分片的情况下,标识是否为最后一个包(more fragment) 0:最后一个分片的包 1:分片中段的包 |
片偏移(FO:Fragment Offset):占13位,用来标识被分片的每一个分段相对于原始数据的位置。第一个分片对应的值为0.由于FO域占13位,因此最多表示8192个相对位置。单位为8字节,因此最大可表示原始数据8×8192=65536字节的位置
生存时间(TTL:Time To Live):该字段指定IP包被路由器丢弃之前允许通过的最大网段数量,指ICMP包的转发次数(跳数),当TTL=0时,就丢弃这个数据报
协议(Protocol):占8位,指出此数据报携带的数据是使用何种协议,以便使目的主机的IP层知道应将数据部分上交给哪个处理。
协议名 | 协议字段值 |
---|---|
ICMP | 1 |
IGMP | 2 |
TCP | 6 |
EGP | 8 |
IGP | 9 |
UDP | 17 |
IPv6 | 41 |
OSPF | 89 |
首部校验和(Header Checksum):占16位,也叫IP首部校验和。该字段只校验数据报的首部,不校验数据部分,用于确保IP数据报不被破坏
源地址(Source Address):占32位,表示发送方IP地址
目标地址(Destination Address):占32位,表示接收方IP地址
可选项(Options):长度可变,通常只在实验或诊断时使用。包含:
- 安全级别
- 源路径
- 路径记录
- 时间戳
填充(Padding):在有可选项的情况下,首部长度可能不是32位的整数倍,为此,通过向字段填充0,调整为32比特的整数倍