上一篇文章我简单讲述了一个数据报文是如何在局域网中转发的,简单的回顾一下流程:
- 主机封装数据报文,其中包含
请求体、源IP、目标IP和源MAC地址等信息。 - 报文经过交换机,交换机将报文发送给路由器进行解析。
- 路由器将报文的
目标IP与路由表中的子网掩码进行逻辑与运算,得到目标网段,并根据匹配的目标网段的路由网关进行转发。
在文章的末尾我还说了,如果在交换机中已经记录了当前局域网中所有设备的映射,那么报文是不会经过路由器进行转发的,那么交换机是如何做到的呢?我们来了解一个协议–ARP协议
什么是ARP协议
首先,ARP协议是三层网络协议,也就是基于网络层的协议。在网络层协议中,数据的报文将仅关注IP地址和MAC地址这些信息,LVS其实也是基于三层网络协议的(其实是伪三层,因为LVS会偷窥数据包的握手信息)。
大白话来讲,ARP协议就是用来广播统一局域网段内机器的IP和MAC信息的。
ARP协议的工作流程
还是以之前的局域网络拓扑为例:

如果主机10想要和11进行通讯,会经历以下几个步骤:
- 创建一个ARP协议格式的报文,报文的目标MAC地址全为F,目标IP为11。
- 报文发送至交换机,交换机发现是一个ARP协议的报文,会将此报文通过自己记录的端口进行广播。
- 11和12两台主机都接收到ARP报文,12发现目标IP与自己本机IP不符,将此报文丢弃;11发现与本机IP一致,将自己的MAC地址也封装成ARP协议的报文,发送给交换机。
- 主机10收到报文,将11的MAC地址缓存到本地的ARP列表中。
这里需要说明的一点是,在第三步中,主机11将自己的MAC地址封装成ARP协议报文,其实是一个将原来的报文进行替换的过程,如下图:

交换机在这些报文一来二去的通讯过程中,会记录自己的端口与所连主机的映射关系:

比如上图的交换机连接了3台主机,对应的端口分别为1,5,7。主机第一次通过交换机发送报文的时候,交换机会把端口对应的主机的MAC地址记录下来,如此通讯多次后,交换机内部就能具备能够告知各个主机节点去路的能力。由于交换机仅记录MAC地址,所有交换机属于二层协议的设备。
下一篇文章我们将跨入互联网通讯,探明互联网中的两台主机是如何进行通讯的,并介绍NAT、DR、TUN等知识。
本文深入讲解了ARP协议的作用及工作流程,揭示了局域网中如何通过ARP协议实现IP地址与MAC地址的映射,使主机间能正确进行数据报文的发送与接收。
1730

被折叠的 条评论
为什么被折叠?



