IP包头结构

上图说明如下:
- 版本号:长度4b,作用是区分IP协议版本号,0100(IPv4),0110(IPv6)
- 首部长度(IP包头长度):作用是描述IP包头长度,单位4B,IP包头长度最小5x4B=20B,最大15x4B=60B(B代表字节,60B就是60个字节)
- 服务类型(TOS):服务类型,具体如下:

例如:Telnet的TOS值为10000
- 封包总长度:以B为单位,16位二进制,所以IP包最大为65535
- 标识:用于区分不同的切片属于哪个IP包
- 标志(Flags):

标志位的补充:
1.有的路由器禁止分片,当路由器禁止分片时会返回给主机信息,主机接到信息后会在应用层对发送的信息进行分片使信息可以传递出去)
2.路由器为什么禁止分片那,黑客会利用分片的功能对主机的偏移量进行更改导致分片的信息不能组装到一起,接受信息的主机cpu会一直处理改数据到导致处理器过载宕机。(这个攻击名称叫水滴攻击,属于Dos攻击的一种)
3.当ip层进行分片时会经上层的信息全部进行分片,所谓的全部就是将上层的协议(例如:http)头也进行分片包装到不同的数据包中。
- 段偏移量:决定IP分片的先后顺序,用于还原IP包(偏移量的数值是0或1480的倍数,因为二层数针所能承载的数据量最大是1500B,1480加上20字节的IP头刚好是1500字节)
- TTL(存活时间):单位为跳,作用是防止数据包在网络中死循环,范围1-255(使用ping命令是TTL值小于100时一般是linux设备,大于100时一般是windows设备,当是255表示是网络设备)
- 协议号:表示上层所用的协议,1-ICMP,6-TCP,17-UDP (主要目的是识别上层到底值什么协议)
- 首部校验和:将该字段全置0,然后将IP包头每16为进行二进制取反求和,结果保存到该字段
- 源地址:发IP包一方的IP地址
- 目标地址:要将IP包发送给目标的IP地址

网络-ip协议
原文:https://www.cnblogs.com/heboxiang/p/14770872.html