网络层协议封装

常用的网络层协议有: IPv4、IPv6、arp、icmp

1.IPv4报文格式和分析:

在这里插入图片描述
首先是网络层中的IPv4报头就没有在数据的最后有FCS校验位了,但是有头部的校验位,这里需要记住的是,协议中的每一层都有校验的,这使得功能重复繁琐了,所以在ipv6中将其取消了, IP报头范围为20-60字节,其中具体的内容如下:

第一行:
版本号:该字段为4bit,表示IP报文的版本信息,如果为0X4,表示为IPv4报文,如果为0x6,表示一个ipv6报文。

首部长度:首部长度4个bit,但是表示的是20-60字节,所以首部长度每加一表示多4字节,最小取值为0101,表示20字节,还需要注意的是IPV4报头有20个字节的固定大小,还有不定大小了选择字段,能实现其他功能,但是这样就会出现一个问题,也就是说选项字段大小不定,那么在表示首部长度时只要不是4字节的倍数都无法表示,所以需要在必要时家伙是哪个值为0的填充字节,保证报文头部为4字节的倍数。

DS字段:8bit,表示优先级,其中的内容暂时不进行分析。

总长度字段:16bit,顾名思义,表示整个IP报文的长度,也就是头部加上数据长度,减去头部字段就是IP报文的数据字段的长度了。

第二行: 是用来进行分片操作的
ID字段:16个字节,标识不同数据,比如这个数据是用来做语音的,表示为A,另外一个数据是视频的,表示为B。一个数据包分片后的这个字段保持相同,方便同一个数据包进行组合。

Flags:区分分片后的数据包,占3bit,第一位为保留位,保持为 0,第二位DF(不分片)位,表示是否为能进行分片,如果是1,表示不能进行分片,0表示可以进行分片,最后一位为MF(更多的分片)为,表示是不是最后的分片,如果是最后的分片,表示为0,不是最后的分片,表示为1,后面还有更多的分片。

片偏移:占13位,表示分片报文离第原始报文头部相离的长度(比如1600,表示这个分片离最初报文头部有1600字节,如果按照最大1500MTU来分片的话,第二个分片有120个字节),第一个分段的片偏移为零。有了片偏移和ID字段,我们就可以按照顺序对分片的报文进行组装了。这里需要补充的是,分片只针对数据部分,不针对报文头部,数据部分最多为1480字节。

第四行:
生存时间:1个字节,0-255,每经过一个路由器,TTL值都会减1, 0表示不可达,也是为了防止环路。

协议字段:1个字节,表示上层的协议是是什么,比如6为TCP,17为UDP,89为OSPF,另外ICMP也有协议字段,为1,这个协议最终被划分到了网络层中。

首部校验和:16字节,起一个IP头部的校验作用。

第五行和第六行:
源目IP地址,各自占32bit。

最后一个字段: 0-40字节的选项和填充字段
可选项(options)是用来提供一个余地,以允许后续版本的协议中引入最初版本中没有的信息,以及避免为很少使用的信息分配头部位。可选项是变长的,每个可选项都以一个字节标明内容。有些可选项还跟着有一字节的可选项长度字段,其后是一个或多个数据字节。可选项字段的长度以4字节计,现在已经定义了5个可选项,但并不是所有的路由器都支持5个可选项:

  1. 安全性选项说明信息的安全程度。实际上,所有的路由器都忽略该字段。
  2. 严格的源路由选择选择以一系列的IP地址方式,给出了从源到目的地的完整路径。数据报必须严格地从这条路径传送。当路由选择表崩溃时,系统管理员发送紧急分组,或作时间测量时,该字段很有用。
  3. 松的源路由选择选项要求分组遍及所列的路由器,而且以所指定的次序。但它可以在其间穿过其他的路由器。
  4. 记录路由选项让沿途的路由器都将其IP地址加到可选字段后,这为系统管理员以后分析这个数据包的来源提供了方便,可用来为路由选择算法查错。
  5. 最后,时间标记选项像记录路由选项一样,除了记录32位的IP地址以外,每个路由器还要记录一个32位的时间标记。同样地,这一选项可用来为路由选择算法查错。

2.IPv6报文格式和分析:

在这里插入图片描述
在IPV4报头里面,很多字段其实作用不大,比如头校验位,选项字段。为什么没有选项字段呢,是因为很多路由器其实不会去看,但是又必须读取了才会转发,降低了效率。IPv6具体的内容如下:

第一行:
version:4bits 版本号 ipv6为6。

Traffic Class: 8 bits,传输类别,可用于源节点或转寄路由器标识和区分IPV6包中的不同类别或优先级;类似于实现IPV4的TOS/DIFF。

Flow Label:20bits 流标签,数据流不仅可以通过源目IP地址进行区别,还可以通过流标签进行,数据流是指从某特定的源节点向某特定的目的节点发送的数据包序列。当源节点希望中间的路由器对数据包进行一些特殊处理时,就可以使用数据流标签,不支持数据流标签的可以赋值为0;比如标记FTP等流量。

第二行:
Payload Length: 16bits unsigned integer, ipv6的载荷长度,首部以外的长度(包括扩展首部)。

Next Header:8 bits 指明紧跟IP首部后面的下一个首部的类型,包括拓展报头。

Hop Limit:8bits unsigned integer,在每个传输此包的节点处减1,如果跳数限制减到0,就抛弃此包。

第三,四行:
Source Address:128 bit 源地址

Destnation Address:128 bit 目的地址

我们通过将需要实现的功能通过拓展报头添加在ipv6报头的后面,让ipv6报文更加的灵活。

3.ARP报文格式和分析:

ARP包括多种类别(普通ARP、RARP、Gratuitous ARP、InARP),熟悉普通ARP和免费ARP即可。

普通ARP:通过IP地址请求对方MAC地址。
RARP:通过MAC地址请求IP地址。
免费(无故)ARP:改变自己的ARP表项和地址重复检查等,或者更新交换机的MAC地址表(VRRP中)。
IARP:在帧中继中使用,此技术基本已被淘汰。

普通,无故ARP报文格式:
在这里插入图片描述
硬件类型字段:指明了发送方想知道的硬件接口类型,以太网的值为1;

协议类型字段:指明了发送方提供的高层协议类型,IP为0800(16进制);

硬件地址长度和协议长度:指明了硬件地址和高层协议地址的长度(MAC地址就为6)(IP地址为4),这样ARP报文就可以在任意硬件和任意协议的网络中使用;

操作字段:用来表示这个报文的类型,ARP请求为1,ARP响应为2,RARP请求为3,RARP响应为4;

发送方的硬件地址(0-3字节):源主机硬件地址的前3个字节;

发送方的硬件地址(4-5字节):源主机硬件地址的后3个字节;

发送方IP(0-1字节):源主机硬件地址的前2个字节;

发送方IP(2-3字节):源主机硬件地址的后2个字节;

目的硬件地址(0-1字节):目的主机硬件地址的前2个字节;

目的硬件地址(2-5字节):目的主机硬件地址的后4个字节;(普通arp为全0,无故arp为全F)

目的IP(0-3字节):目的主机的IP地址。(普通arp为对方的地址,无故arp为自己的地址)

逆地址解析协议 RARP:
定义:逆地址解析协议 RARP 使只知道自己硬件地址的主机能够知道其IP地址。

用途:这种主机往往是无盘工作站,因此 RARP 协议目前已很少使用。

与普通APR的比较:
在这里插入图片描述

4.ICMP报文格式和分析:

虽然封装在IP地址之上,但是根据功能,一般被归纳为网络层协议。
在这里插入图片描述
类型:3 终点不可达、11 时间超过、12 参数问题、5 改变路由、8或0 回送请求或回答、13或14 时间戳请求或回答。

代码 : 进一步区分某种类型中的几种不同情况。

检验和 : 用于检验整个ICMP报文。但是IP首部检验和并不检验IP数据报的内容,因此不能保证经过传输的ICMP报文不产生差错。

ICMP差错报文:

  1. 终点不可达:类型=3,代码0~15,首部,由路由器或者目的主机检查后发送差错报告给初始源数据。即使没有终点不可达差错报文也不能代表数据报交付成功。

  2. 源点抑制:类型=4,缺乏流量控制和拥塞控制。当路由器或主机丢弃数据报时,向源数据端口发送源点抑制差错报文。该报文两个作用:第一通知源点数据报已经丢弃,二通知源点慢点发数据。

  3. 超时:类型=11,解决多个路由表中出现环路现象。每个数据报通过一个路由器生存时间就-1,当生存时间为0时,就向源点发送一个超时差错报告报文。如果报文的一个分片超时也发送差错报告报文。

ICMP 询问报文:

  1. 回送请求与回答:类型8或0。回送请求与回答可以判定两个主机之间是否可达,通常可以通过ping命令来实现。

  2. 时间戳请求与回答:确定IP数据报在这两个机器之间来回所需的往返时间。

总结: 通过类型和代码字段组合了很多不同类型的ICMP报文,具体如下图所示:
在这里插入图片描述

整理资料来源于网络上

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

格洛米爱学习

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值