IP首部

IP 网际协议(Internet Protocol, IP)

IP数据报首部的格式。

首部最小20个字节,最大60个字节。最小时就是只有固定部分(每个单位32bit,也就是4个字节,共5行,就是20个字节),一个单位指的是一行。
在这里插入图片描述
wireshark抓包分析

版本
在这里插入图片描述在数据传输时,发送方和接收方的IP版本是一致,如果不是,那么数据包就会被丢弃。

首部长度
在这里插入图片描述服务类型

type of service (TOS) 服务类型
在这里插入图片描述
总长度
在这里插入图片描述Total Length:表示IP数据报文的总长度,也就是说这个IP数据报文的数据总共有多少个字节,其中包括了IP数据报文的首部和数据部分。总长度占16位(即16-31位),指的是首部部分和数据部分的长度,单位为字节,IP数据报文的最大长度为2的16次方 - 1,也就是65535字节,所以总长度不能超过最大传输单元MTU。

其中首部部分占用20 - 60字节,如果以首部占用60字节来算,那么在传输数据时,最大能传输65535 - 60 = 65475字节的数据(MSS)了。上图中我们抓的包的总长度为为40字节,首部长度为20字节,也就是说我们抓的这个数据报传递的实际数据为20字节大小。

另外,要注意MTU和MSS之间的一些小区别:MTU包括了数据报文的首部和数据部分,而MSS只包括数据部分。

标识
在这里插入图片描述占16位。IP软件在存储器中维持一个计数器,每产生一个数据报,计数器就加1,并将此值赋给标识字段。但这个“标识”不是序号,因为IP是无连接服务,数据报不存在按序接收的问题。当数据报由于长度超过网络的MTU而必须分片时,这个标识字段的值就被复制到所有的数据报片的标识字段中。相同的标识字段的值使分片后的各数据报片最后能正确地重装成为原来的数据报。
同一个数据报的各个分片的标识是一样的
同一个数据报的各个分片的标识是一样的
同一个数据报的各个分片的标识是一样的

标志
在这里插入图片描述标志(flags)占用3位(即16 - 18),这三位分别是:R,D,M三位,第一位是保留位,没有被使用,目前只有后两个比特有意义。

R:标志字段中的第一位是一个保留位,现在还没有使用,可能将来会用到这位

D:标志字段中间的一位是 DF (Don’t fragment),表示传输的数据不允许分片。一般DF = 1的话,表示数据一次性传输过去,不允许分片。

M:标志字段的最低位是 MF (More fragment)。代表数据是否分片,如果MF位值为1,表示后面还有数据,还没有传输完毕,相当于数据分片,分批次传输,如果MF = 0表示最后一个分片或者只有一个分片。

这三位同一时刻也是只能有一个位的值能设置为1
这三位同一时刻也是只能有一个位的值能设置为1
这三位同一时刻也是只能有一个位的值能设置为1

片偏移
在这里插入图片描述片偏移(Fragment offset)占用13位:每次分片传输的数据之间的偏移距离,也就是某分片的数据在原数据中的相对位置,一般偏移以8字节为单位。比如:在网络层传输的ip数据报总长度最大不能超过65535字节,如果超过了,要么对ip数据报进行分片传输,否则将丢弃。

那么问题来了,为什么是以8字节为单位?
  它是由IP头部格式中的“总长度(16bit)”和“偏移(13bit)”两个字段所决定的。总长度定义了IP包的最大长度为2^16 =64KB,偏移说明了IP分片时它最多能表示2^13 个偏移单位,这样偏移单位就是总长度除以偏移量得出片偏移单位(即2^16 / 213=23,即为8字节了)。

通常,我们要发送一个非常大的数据,由于受网络传输的限制,一次性发不过去,就需要对数据进行分片传输,把数据发送到目的地后再把数据重新组装起来是根据偏移量来计算重组的。
在这里插入图片描述因为偏移量是以8字节为偏移单位,对于分片1来说从0字节开始算,偏移量为0 / 8 = 0,对于分片2来说从1400字节开始算,偏移量为1400 / 8 = 175,对于分片3来说是从2800开始算,偏移量为2800 / 8 = 350。
片偏移为0表示这可能是第一个分片,也有可能是这个数据报文不支持分片
片偏移为0表示这可能是第一个分片,也有可能是这个数据报文不支持分片
片偏移为0表示这可能是第一个分片,也有可能是这个数据报文不支持分片
另外,这些数据包分片的ip首部大部分都是一样的,因为它们都属于同一数据报文,对于数据进行重组就需要参考片偏移和标识这两个重要的字段,需要注意的是,片偏移是根据某一数据片的开始位置来计算的。

生存时间
在这里插入图片描述生存时间(Time To Live,简称TTL ),占用8个bit位,表示数据报在网络传输过程中的生存时间,目的是防止无法交付的数据包在网络中出现路由环路,最初是秒作为单位,但为了方便,现在都用“跳数”作为TTL的单位。也就是说数据报每经过一个路由器就是一跳,其TTL值就减 1。

而一般生存时间是有操作系统来设置的,有的是32、64、128、255。从上图可以看出数据经过64-54=10跳路由。
主机A给主机B发送一个数据报文时,该数据报文在网络中会有一个TTL生存时间字段,就是数据报文每经过一台路由器,TTL字段值就会减1,当路由器收到数据报文后TTL字段值减1后为0的话,那么该路由器就会把数据报丢弃并向主机A发回一个ICMP超时报文,这种机制有效的防止了路由环路,也就是解决了数据报在路由器之间一直转圈的问题。

协议
在这里插入图片描述常用的协议和对应的协议字段值

1	ICMP
2	IGMP
4	IP
6	TCP
8	EGP
9	IGP
17 	UDP
41 	IPv6
50 	ESP
89	OSPE

首部校验和
在这里插入图片描述首部检验和字段占用16个bit位,只检验数据报的首部部分,并不包括数据部分,因为数据报每经过一个路由器都要重新计算一下首部校验和(一些字段,如生存时间,标志,片偏移等都可能发生变化),这里不采用 CRC 检验码而采用简单的计算方法,校验数据报在传输过程中是否被篡改或数据报被破坏。

validation disabled表示wireshark软件把首部校验和这个功能关闭了。
  如果[Checksum Status: Good ]中是good则表示校验和是正确的,如果是bad表示是校验和是存在问题的,可能数据出现损坏或被篡改。

在IP中只检验数据报的首部部分,并不包括数据部分
在IP中只检验数据报的首部部分,并不包括数据部分
在IP中只检验数据报的首部部分,并不包括数据部分

源地址
在这里插入图片描述
目的地址
在这里插入图片描述可选字段
 IP 首部的可变部分就是一个选项字段,一般用于支持排错、测试以及安全等措施,内容很多。选项字段的长度可变,从 1 个比特到 32个比特不等,取决于所选择的项目,增加首部的可变部分是为了增加 IP 数据报的功能,但这同时也使得IP数据报的首部长度成为可变的。这也就增加了每一个路由器处理数据报的开销,而实际上这些选项很少被使用。

  • 31
    点赞
  • 92
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
IP首部是IP协议中非常重要的一部分,它包含了IP数据报的基本信息,下面是IP首部中各字段的定义: 1. 版本(Version):该字段占4位,用于表示IP协议的版本号,IPv4版本的IP首部中该字段的值为4。 2. 首部长度(Header Length):该字段占4位,用于表示IP首部的长度,以4字节为单位。因为IP首部中的一些字段长度是可变的,因此该字段的值为4的倍数。 3. 区分服务(Differentiated Services):该字段占8位,用于指定数据报的服务质量要求,如优先级、延迟、吞吐量、可靠性等。 4. 总长度(Total Length):该字段占16位,用于表示整个IP数据报的长度,包括IP首部和数据部分的长度。 5. 标识(Identification):该字段占16位,用于唯一标识一个IP数据报,主要用于数据报分片和重组。 6. 标志(Flags):该字段占3位,用于指定数据报的分片情况,包括是否分片、是否是最后一个分片以及是否需要进行重组。 7. 片偏移(Fragment Offset):该字段占13位,用于指定数据报分片后每个分片在原始数据报中的位置。 8. 生存时间(Time to Live):该字段占8位,用于限制IP数据报在网络中的存活时间,每经过一个路由器,该字段的值减1,当其值为0时,数据报将被丢弃。 9. 协议(Protocol):该字段占8位,用于指定IP数据报中携带的上层协议类型,如TCP、UDP、ICMP等。 10. 首部校验和(Header Checksum):该字段占16位,用于校验IP首部的正确性。 11. 源地址(Source Address):该字段占32位,用于指定源主机的IP地址。 12. 目标地址(Destination Address):该字段占32位,用于指定目标主机的IP地址。 IP首部中的各字段都是非常重要的,它们不仅用于传输数据,还能提供一些额外的信息和控制。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值