IP报文属于网络层,也就是第三层。在这层发送的数据我们称之为数据包。
上面是一个数据帧,当数据链路层再拿掉帧头和帧尾的时候,他会根据剩下的type字段来确定下一层发送到那个协议进行处理,这里可以看到时0800那么属于时IP协议,如果时0806那就时ARP协议。
将他拿掉后向下一级发送的就是我们的IP报文了。
1.版本:告知ip地址是ipv4 (0100)还是ipv6 (0110)
2.首部长度:告知这个数据包有没有可选项(由于ip包头长度不固定,所以要告知长度)
3.优先级:(QoS)与服务类型(ToS):一般是运营商使用来控制专线网速,控制不同的服务的网速;最后一个字节保留
4.总长度:上三层的总长度/IP包的总长度,当总长度超过1500字节(bit),需要进行IP分片
5.段偏移量:决定了IP分片的先后顺序!只能是0或1480的倍数
偏移量理解,好比拼图,我们将碎片分为3块,分别按顺序写上1 2 3 我们送出去,拿到的人就会根据该顺序来进行拼图,如果拼为 1 3 2,那么这个拼图就不完整,偏移量就是运用这个道理进行顺序发送,只不过是必须是0和1480的倍数,如 第一片0 第二片1480 第三片2960 第四片5920
6.标识符:区分不同的IP分片数据流!
同一时间出现两个相同的偏移量怎么办,你是1480,我也是1480,不可能我跑到你得0后面去填充撒。他就是区分这个的。
7.标志位:
第一位bit未启用为0
(1)第二位bit如果需要分片第二位为0,不需要分片第二位为1
(2)第三位比特为1代表还有后续分片,为0代表为最后一个分片
(3)001 = 我后面还有兄弟 000 = 我是最后一个兄弟,后面没有了 010 = 我一个人来的
标志位就是判断这个包分片后发没发送完,后面还有没有。
8.TTL:生存时间,单位为跳数,作用是防止数据包再网络中永久的循环。TTL范围: 1-255
(1) windows系统TTL一般为128
(2)linux系统一般为1-128之间,如56,64
(3)跳点跟踪:tracert 网址
9.协议号:作用是区分上层协议的,6代表TCP,17代表UDP
10.首部校验和:校验三层IP包头