IP Header¶
备注
由于TCP/IP首部中所有的二进制整数在网络中传输时都使用大端字节序(big endian),因此它又称作网络字节序。
字段详解¶
版本号-4:
IP 协议版本号,目前使用的是版本 4
首部长度(IHL)-4:
IP 头部的长度:指的是首部占 32 bit字的数目 由于它是一个 4比特字段,因此最大值是15 也就是说最大IP 首部长度是15*32bit=60字节 普通IP数据报(没有任何选择项)字段的值是 5
服务类型(ToS)-8:
表示包传输优先级。 最初的协议对这个参数的规定很模糊,最近 DiffServ 规格重新定义了这个字段的用法 包括: 3 bit的优先权子字段(现在已被忽略) 4 bit的TOS子字段 1 bit未用位但必须置0
总长度-16:
表示 IP 消息的总长度
ID 号-16:
用于识别包的编号,一般为包的序列号。 如果一个包被 IP 分片,则所有分片都拥有相同的 ID
标志(Flag)-3:
该字段有 3 个比特,其中 2 个比特有效,分别代表是否允许分片,以及当前包是否为分片包
分片偏移量-13:
表示当前包的内容为整个 IP 消息的第几个字节开始的内容
生存时间(TTL)-8:
表示包的生存时间 这是为了避免网络出现回环时一个包永远在网络中打转。 每经过一个路由器,这个值就会减 1,减到 0 时这个包就会被丢弃 这个字段规定该数据包在穿过多少个路由之后才会被抛弃 某个ip数据包每穿过一个路由器,该数据包的TTL数值就会减少1,当该数据包的TTL成为零,它就会被自动抛弃 这个字段的最大值也就是255,也就是说一个协议包也就在路由器里面穿行255次就会被抛弃了 根据系统的不同,这个数字也不一样,一般是32或者是64 Tracerouter这个工具就是用这个原理工作的,tranceroute的-m选项要求最大值是255
协议号-8:
协议号表示协议的类型(以下均为十六进制) ICMP: 01 IGMP: 02 TCP: 06 UDP: 11
头部校验和-16:
用于检查错误,现在已不使用
发送方 IP 地址-32:
网络包发送方的 IP 地址
接收方 IP 地址-32:
网络包接收方的 IP 地址
可选字段-可变长度:
除了上面的头部字段之外,还可以添加可选字段 用于记录其他控制信息,但可选字段很少使用