IPv4 报头分析
- version(4位)
- IP版本号,0100代表IPv4,0110表示IPv6
- Header Length(4位)
- IP报头的长度
- IP报头的长度为20~60字节,该字段以4字节为单位,即该字段的取值范围为0101~1111
- IP报头中,IP Option以外的部分必须存在,占20字节
- IP Option是可选字段,长度范围为0~40字节
- Type of Service, ToS(8位)
- 服务类型,用来指定特殊的报文处理方式
- RFC1349中将其划分为IP precedenc+D/T/R+reserve保留字段
- P P P D T R C 0
- 前三位(P P P)表示报文优先级
- 第四位(D)表示时延(0:普通 1:最大)
- 第五位(T)表示吞吐量(0:普通 1:最大)
- 第六位(R)表示可靠性(0:普通 1:最大)
- 第七位(C)表示开销(0:普通 1:最大)
- 最后一位为保留位,置为0
- RFC2474的ToS取消了IP precedence字段而使用了DSCP,给QoS用来打标签
- Total Length(16位)
- IP数据包总长度,取值范围为0~65535,单位为字节
- 接受者用IP数据包总长度减去IP报头长度,就可以确定数据包数据有效载荷的大小
- Identification(16位)
- 标识符,通常与标记字段和分段偏移字段一起用于数据包的分段
- 数据包的原始长度若超过数据链路的最大传输单元(MTU),则需要将数据包分段为更小的数据包,并将每个数据包的Identification字段设为同样的数值,以便接收设备可以识别出属于一个数据包的分段
- Flags(3位)
- 标记字段,第一位没有使用
- 第二位为不分段(DF)位
- DF=1,表示路由器不能对数据包进行分段处理
- 如果数据包由于不能被分段而未能被转发,则路由器将丢弃该数据包,并向源点发送错误消息
- 通常用于测试链路的MTU值
- 第三位为更多分段(MF)位
- 路由器对数据包进行分段时,除了最后一个分段数据包的MF=0外,其余数据包的MF=1,以便接收者直到收到MF为0的分段为止
- Fragment Offset(13位)
- 分段偏移,单位为8字节,用于标识某个分片在分组中的位置
- 分段起始点相对于报头起始点的偏移量
- 由于分段到达时可能错序,所以该字段可用于使接收者按照正确的顺序重组数组包
- Time To Live, TTL(8位)
- 生存时间,也就是跳数的大小,即数据包能传多少跳
- 数据包在传输过程中每经过一台路由器,TTL数值减1;TTL减为0时,路由器将会丢弃该数据包,并向源点发送错误信息
- TTL可以防止数据包在网络上无休止地被传输
- Protocol(8位)
- 协议,标识出传输层的地址或协议号,即数据要进行什么样的上层服务,应该交给自己上一层的哪个协议
- 1:ICMP
- 2:IGMP
- 4:IP
- 6:TCP
- 8:EGP
- 17:UDP
- 41:IPv6
- 89:OSPF
- Header Checksum(16位)
- 校验和,用于校验检查IP报头传输过程中是否有差错
- 只用于校验IP报头,不计算被封装的数据
- Source IP Address(32位)
- Destination IP Address(32位)
- Option(长度不固定)
- 可选项,用于控制、转发要求、测试等,一般很少使用
- Option字段长度必须为32位的整数倍,不够的部分通过末尾添加0来补充
|