IP报文头部
- IP PDU 报头
- 固定长度20字节
版本
- 版本占4bit
- 目前IPv4,IPv6已经在互联网开始推广,局域网使用的是IPv4
- IPv4表示IP地址共32位
- IPv6表示IP地址共128位
首部长度
- 首部长度占4bit
- 表示ip报文头部多长
- 首部长度可表示的最大数值是15个单位,一个单位为4字节,因此IP的首部长度的最大值是60字节
区分服务
- 区分服务占8bit
- 一般不太关注
- 区分服务用来获得更好的服务,在旧标准中叫做服务类型,但实际上一直未被使用过.后改名为区分服务.只有在使用区分服务(DiffServ)时,这个字段才起作用.一般的情况下不使用
总长度
- 总长度占16bit
- 表示首部加数据部分总长度
- 总长度指首部和数据之和的长度,单位为字节,因此数据报的最大长度为
65535 字节.总长度必须不超过最大传送单元 MTU
标识
- 标识占16bit
- 标识是一个计数器,通常,每发送一个报文,该值会加1, 也用于数据包分片,在同一个包的若干分片中,该值是相同的
- 用于数据包分片,在同一个包的若干分片中,该值是相同的 。
因为tcp的段中数据报文比较大,而数据链路层中frame的数据最大为1500,因此必然涉及到数据的切分,将一个大包拆分成能放到帧能放下的包。此时切分的包的标识相同。
标志
- 标志(flag)占3位
- 标志数据包是否分片
- 标志位一共三位:最高位不用、DF、MF、
- DF: Don’t Fragment(分片) 中间的一位,只有当 DF=0 时才允许分片
- MF: More Fragment 最后一位,MF=1表示后面还有分片,MF=0 表示最后一个分片
片偏移
- 片偏移占13位
- 片偏移用于区分一个大的数据包中被分片时,所在位置
- 片偏移指较长的分组在分片后,该分片在原分组中的相对位置。片偏移以8个字节为偏移单位
生存时间
- 生存时间占8位,即为TTL
- Linux 数据报文生命期为128 Windows数据报文生命期64
- 数据报文在网络中路由次数跳一跳
- 生存时间记为TTL (Time To Live) 数据报在网络中可通过的路由器数的最大值,TTL 字段是由发送端初始设置一个 8 bit字段.推荐的初始值由分配数字RFC 指定,当前值为 64.发送 ICMP 回显应答时经常把 TTL 设为最大值 255
协议
- 协议占8位
- 当前层为上层提供服务,需要标识出上层协议类型
- 指出此数据报携带的数据使用何种协议以便目的主机的IP层将数据部分上交给哪个处理过程,1表示为 ICMP 协议, 2表示为 IGMP 协议, 6表示为TCP 协议, 17表示为 UDP 协议
- ICMP也在此类型中,但不属于传输层,可理解为ICMP在IP协议同层之上
首部校验和
- 首部检验和占16位
- 只检验数据报的首部不检验数据部分.这里不采用 CRC 检验
码而采用简单的计算方法
源地址
- 源地址占4字节
目标地址
- 目的地址占4字节