image.png
    分为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来补充。

    image.png

    ping -l 1472是一个特殊值,超过1472可能就ping不同

    ping的报头大小是8
    ip报头最小是20
    1472+8+20 1500
    一般设备的mtu是1500.