IPv4数据报格式

在这里插入图片描述

 

版本(Version)

  • 占4位
  • 数据报的IP协议版本
  • 不同的IP版本使用不同的数据报格式
  • 通过查看版本号,路由器能够确定如何解释IP数据报的剩余部分
  • 0100=4  即:IPv4
  • 0110=6  即:IPv6
     

首部长度(Header Length)

  • 占4位,步长4B
  • 最小值 0101=5,  即:5 * 4B = 20B
  • 最大值1111=15,  即:15 * 4B = 60B
  • 有可选项时,若首部长度不是4B的整数倍,必须利用最后的填充字段加以填充
为什么要有首部长度字段?

因为一个IP数据报的可选项字段的大小会发生变化,导致首部长度不固定。(大多数IP数据报不包含可选项,所以一般的IP数据报具有20B的首部)

 

服务类型(Type of Service, ToS)

  • 占8位
  • 指定特殊数据报的处理方式

ToS字段已经作为区分服务(Diffserv)架构的一部分被重新定义
在Diffserv下,数据报可以归类到不同的分类中
路由器根据分类,使用不同的优先级对数据报进行排序和转发

 

总长度(Total Length)

  • 占16位,单位:字节
  • 首部长度 + 数据长度
  • 理论最大长度:216-1 = 65535B

总长度 - 首部长度 = 数据的长度 用于确定数据部分从何处开始

 

标识(Identifier)

  • 占16位
  • 标识(Identifier)、标记(Flag)、片偏移(Fragment Offset) 这三个字段 用于数据报的分片
什么是分片?

此时,在网络层,有一个4000B的数据报,接下来它要经过数据链路层
数据链路层的帧有一个性质叫MTU(Maximum Transmission Unit),即:最大传送单元,以太网帧为1500B。也就是说,网络层下来的数据报,若是超过MTU,便要分片。

标识如何产生?

一个数据报在生成时,发送主机会为该数据报设置源和目的地址,同时也设置了标识号。发送主机通常将它发送的每个数据报的标识号加1。
当某路由器需要对一个数据报分片时,形成的每个数据报(即片)具有初始数据报的源地址、目的地址与标识号。
目的主机从同一发送主机收到一系列数据报后,根据标识号可以确定哪些数据报实际上是同一较大数据报的分片。

 

标记(Flag)

  • 占3位
未定义DFMF
此位未定义作用DF=0 可以分片
DF=1 不能对数据报进行分片
MF=0 此分片是最后一个分片
MF=1 不是最后一个分片

 

片偏移(Fragment Offset)

  • 占13位,步长8B
  • 某片在原数据报的相对位置,用于指明分片的起始点相对于报头起始点的偏移量
一个数据报总长度4000B,首部=20B,MTU=1500B,则数据报分了几片?每一片的MF标志位及片偏移是多少?

数据报 = 20B首部 + 3980B数据
每一个分片都要有20B的首部,所以分片的数据部分最大为1500B-20B=1480B
 
在这里插入图片描述
 

生存时间(Time To Live,TTL)

  • 占8位
  • 最多可经过的三层设备(如:路由器)的数量
  • 为避免环路导致网络拥塞,数据报每经过一台三层设备,TTL值减1,然后判断TTL值是否为0,若为0,则丢弃数据报。

 

协议(Protocol)

  • 占8位
  • 表明数据报的数据部分应该交给哪一个上层协议
1261789
ICMPIGMPTCPUDPOSPF

 

首部检验和(Header Checksum)

  • 占16位
  • 帮助路由器检测收到的数据报中的比特错误。只检验首部,因为TCP、UDP等都有各自的检验和
  • 由于每台路由器都会减少TTL值,所以每台路由器都必须重新计算检验和

 

源地址(Source Address)

  • 占32位,4B

 

目的地址(Destination Address)

  • 占32位,4B

 

可选项(Options)

  • 允许IPv4数据报首部被扩展
  • 很少使用,主要用于测试
  • 常用的可选项如下:
    • 松散路由选择(Loose Source Routing)
    • 严格路由选择(Strict Source Routing)
    • 记录路由(Record Route)记录自己到过哪里
    • 时间戳(TimeStamp)记录到达的时间

 

参考资料

  • 《TCP/IP路由技术》
  • 《计算机网络-自顶向下方法》
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值