计网Lesson10 - 网络层之IP协议分析



网络层协议

IPv4 数据报格式

IPv4 数据报首部格式

版本(Version)

  • 长度为 4 b i t 4bit 4bit,用于表示 IP 协议的版本。
    0 b 0100 0b0100 0b0100 I P v 4 IPv4 IPv4         0 b 0110 0b0110 0b0110 I P v 6 IPv6 IPv6

首部长度(Header Length)

  • 长度为 4 b i t 4bit 4bit,将长度乘以 4 4 4 才是最终长度,用来表示IPv4数据报的首部长度。
    • 最小值取 0 b 0101 = 5 10 0b0101 = 5_{10} 0b0101=510,首部长度最少为 20 20 20 字节。
    • 最大值取 0 b 1111 = 1 5 10 0b1111 = 15_{10} 0b1111=1510,首部长度最多为 60 60 60 字节。

区分服务(Differentiated Services Field)

  • 长度为 8 b i t ( 1 B ) 8bit(1B) 8bit(1B)
  • 用于提高网络服务质量。

可选字段

  • 长度从 1 1 1 字节到 40 40 40 字节不等,用来支持排错、测量以及安全措施等功能。
  • 虽然可选字段增加了 I P v 4 IPv4 IPv4 数据报的功能,但这同时也使得 I P v 4 IPv4 IPv4 数据报的首部长度成为可变的,这就增加了因特网中每⼀个路由器处理 I P v 4 IPv4 IPv4 数据报的开销。

填充

  • 当首部长度不是 4 4 4 字节的整数倍时,我们用 0 0 0 填充。

总长度(Total Length)

  • 长度为 16 b i t ( 2 B ) 16bit(2B) 16bit(2B)
  • 首部 + 数据的总长度,跟首部长度不一样,不需要乘 4 4 4
  • 最大值是 65535 ( 2 16 ) 65535(2^{16}) 65535(216),单位为字节。

标识、标志、片偏移

  • 由于帧的数据不能超过1500字节,所以过大的IP数据包,需要分成片(fragments)传输给数据链路层。
  • 每一片都有自己的网络层首部(IP首部)
标识(Identification)
  • 16 b i t ( 2 B ) 16bit(2B) 16bit(2B)
  • 分包时,网络层会对同一数据包的片打上同一标识。
  • 有⼀个计数器专门管理数据包的ID,每发出⼀个数据包,ID就加1。
标志(Flags)
  • 3 b i t 3bit 3bit
  • 最高位为保留位,必须设置为 0 0 0
  • 中间位(Don’t Fragment,DF)
    • DF = 1 表示不许分片;
    • DF = 0 表示可以分片。
  • 最低位(More Fragment,MF)
    • MF = 1 表示后面还有分片;
    • MF = 0 表示后面没有分片。
片偏移(Fragment Offset)
  • 13 b i t 13bit 13bit
  • 片偏移乘以8:字节偏移。
  • 每⼀片的长度⼀定是8的整数倍。

片偏移指的是每个数据在原数据报中的位置。
由于之前的标志占了 3 b i t 3bit 3bit,所以 13 b i t 13bit 13bit 的偏移长度肯定不够表示 16 b i t 16bit 16bit 的总长度,那么就想到一个办法:右移 3 3 3 位。但是这样就得保证数据片长度得是 8 8 8 的倍数。

生存周期(Time To Live,TTL)

  • 8 b i t 8bit 8bit
  • 每个路由器在转发之前会将TTL减1,⼀旦发现TTL减为0,路由器会返回错误报告。

协议

  • 8 b i t 8bit 8bit,用来指明IPv4数据报的数据载荷是何种协议数据单元PDU。也就是说这个数据包要交给谁。

  • 首先,分解数据报: 1580 = 1560 + 20 1580 = 1560 + 20 1580=1560+20,说明数据部分时 1560 B 1560B 1560B
  • 分第一片: 数据 + 20 < = 800 数据 + 20 <= 800 数据+20<=800由于片偏移的存在,数据得是 8 8 8 的整数倍,所以数据长 776 B 776B 776B;剩下数据 784 B 784B 784B
  • 分解第二片: 数据 + 20 < = 800 数据 + 20 <= 800 数据+20<=800,所以数据长度还是 776 B 776B 776B,剩下数据 8 B 8B 8B
  • 那么第二片的总长度字段为 776 + 20 = 796 776 + 20 = 796 776+20=796,由于后面还有同一包的数据片,所以 MF = 1。

答案为 B B B

  • 23
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值