Administrator
发布于 2023-01-17 / 19 阅读
0
0

网络层工作

ARP广播报文 & ARP帧

ARP (Address Resolution Protocol ,地址解析协议)的全称是Ethernet Address Resolution Protocol ,即以太网地址解析协议。

它是通过己知的 IP 地址解析未知的以太网 MAC 地址(或称物理地址)的一种三层协议 。

但是它的报文是不需要经过 IP 协议封装的(即 ARP 报文头部没有 IP协议头〉,因为它比 IP 协议的层次要低,尽管同样是位于网络层 。

ARP广播报文 和 ARP帧,图示分别如下:

image-20230117150821986

ARP 报文在向下传输到数据链路层时仍需要经过数据链路层协议的帧封装 ,形成 ARP 帧。

ARP帧就是在 ARP 报文的最前面加上以太网帧头和帧尾
image-20230117151214161

这里,一定要区分下概念:以太网帧头,只有源MAC和目的MAC,没有源IP和目的IP。


另外,以太网帧是数据链路层的概念,和 IP协议,没有任何关系。因为IP协议是网络层的概念。

另外,如果是ARP广播请求报文,那么以太网帧头中,目的MAC的值为FF-FF-FF-FF,其目标是网络上的所有主机。
而,ARP报文中目的 MAC 地址的值,全为 0,即 00-00-00-00-00-00 , 表示任意地址,因为现在不知道这个 MAC 地址 。

注意,区分这2个目的MAC地址 的值。

ARP工作 & 网关

refer to : 8.4 ARP 协议

前置知识:

ARP 广播请求报文,不能跨网段传播

一个MAC地址,可以对应多个IP;但一个IP,只能对应一个MAC地址。  
也就是说,一个MAC地址,可以被多个IP地址绑定

问题:网关转发时,会将源IP 和 源MAC地址,换成网关自己吗?
转发过程:

1.网关会先发送一个ARP 广播请求报文,其中源MAC地址是网关MAC地址、源IP是网关IP,目的IP是主机B的IP,目的MAC地址全是0,

2.主机B,会处理这个ARP 广播请求报文,给出响应,响应中,源IP 是主机B的IP,源MAC是主机B的MAC地址,目的IP是网关IP,目的MAC是网关MAC地址

如下图:
image-20230117152230018

注意,上面2步,其实都是ARP广播报文,所以说的源MAC、目的MAC,指的都是ARP请求报文中的,不是以太网帧中的

通过上面2步,我们就能得到IP地址,对应的MAC地址了,所以,会把这个得到MAC地址使用起来,一般是赋值给以太网帧头的目的MAC中,所以,接下来第3步中,说的源MAC、目的MAC,都是以太网帧中的,不是ARP请求报文中的。注意区分。

3.当网关收到来自主机 B 的响应报文后,建立基于主机 B 的 ARP 映射表项,然后利用获取的主机 B 的 MAC 地址,对收到来自主机 A 的数据重新进行以太网帧封装,此时以太网帧中的源 MAC 地址是网
关接口的 MAC 地址,以太网帧中的目的MAC 地址就是主机 B 的 MAC 地址了,然后可以直接发送给主机 B 了。

4.在第3步中,我们发现,数据转发时,源MAC地址,变成了网关的MAC地址,但是注意,但是源IP不会换成网关IP,还是源主机IP。

也就是说,IP协议中的源地址/ 目的地址( Source Address/Destination Address )。
分别表示该 数据报发送端和接收端的 IPv4 地址,各占 32 位 。 在整个数据报传送过程中,
无论经过什么路由,无论如何分段,这两个字段一直保持不变 。

5.ARP协议 和 IP协议,是一个平等的关系。一个请求报文,要么使用ARP协议,获取指定IP对应的MAC地址;要么使用IP协议,发送数据;不能存在一个报文,既有IP协议内容,又有ARP协议内容。

而在ARP协议 和 IP协议的下层,是以太网帧。这个以太网帧是数据链路层的概念,包括以太网帧头中的源MAC 和 目的MAC等。


评论