分为5层,一层4个字节(32bits)。
版本(version):4bits,表示IP协议的版本,分为ipv4和ipv6
0100
报头长度(Header length):4bits,标识IP报头的长度,单位是32bits(也就是4字节)
4个二进制(0000-1111),换算成10进制就是15,然后15*4=60,也就是说最大报头长度为60字节。最小长度是20字节。
差分服务字段(Differentiated Services Field):8bits,表示数据包的优先级,主要用于Qos技术中。
总长度(Total length):16bits,标识IP报文的总长度,单位是8bits(也就是1字节)
8个二进制(0000000000000000-1111111111111111),65535*1=65535字节,也就是说一个IP报文的最大长度是65535字节。
标识符(Identification) : 6bits,数据包的一个ID编号,用于标识数据包,特别用于数据包分片技术中。
标志位①(Reserved bit) : 1bit, 保留位
标志位②(Don’t fragment) : 1bit, 不可分片位(DF位),如果置1,则代表此数据包不能被分片。
标志位③(More fragments) : 1bit, 更多分片位(MF位)
如果数据包被分片,则除了最后一个分片报文的MF位是0外,其他分片报文的MF位都是1
分段偏移(Fragment Offset) : 13bits, 单位是8bits,标识分片报文相对于原始报文起始位置的偏移量。
生存时间(Time to Live) : 8bits, 初始数据包会设置一个特定的TTL值, 在传输过程中,每经过一次路由,TTL值就会减1,所以TTL代表了数据包被路由的次数,网络中一般称为跳数。
TTL一旦减至0,则网络设备会丢弃此数据包,以防止数据包在网络中无休止地被传输。
[网络中一旦出现路由环路,如果没有TTL机制》则数据包会无休止地被转发,可能造成网络故障]
协议号(Protocol) : 8bits, 标识网络层之上使用了哪种封装协议,其中TCP=6,UDP=17
报头校验和(Header Checksum) :16bits, 针对IP报头的纠错字段,一定程度防止IP报头数据错乱。
源IP地址(Source Address) : 32bits, 数据包发送方的IP地址
目的IP地址(Destination Address) : 32bits, 数据包接收方的IP地址
可选项&填充项(Options & PaddingD : 0~40字节,一 些可选项, 主要用于测试,不足32bits则用0来补充。
ping -l 1472是一个特殊值,超过1472可能就ping不同
ping的报头大小是8
ip报头最小是20
1472+8+20 1500
一般设备的mtu是1500.