网络层协议还包括ARP,该协议只在以太网中使用,用来将计算机的IP地址解析出MAC地址。

如图1所示,网络中有两个以太网和一个点到点链路,计算机和路由器接口的地址如图所示,图中的MA、MB、…、MH代表对应接口的MAC地址。下面讲解计算机A和本网段计算机B通信过程,以及计算机A和计算机H跨网段通信过程。

ARP协议_数据链路层

图1以太网需要ARP协议

如果计算机A ping计算机C的地址192.168.0.4,计算机A判断目标IP地址和自己在一个网段,数据链路层封装的目标MAC地址就是计算机C的MAC地址,图2是计算机A发送给计算机C的帧。

ARP协议_mac地址_02

图2同一网段的帧

如果计算机A ping计算机H的地址192.168.1.4,计算机A判断目标IP地址和自己不在一个网段,数据链路层封装的目标MAC地址是网关的MAC地址,也就是路由器R1的D接口的MAC地址,如图3所示。

ARP协议_mac地址_03

图3 跨网段的帧

计算机接入以太网,只需给计算机配置IP地址、子网掩码和网关,并没有告诉计算机网络中其他计算机的MAC地址。计算机和目标计算机通信前必须知道目标MAC地址,问题来了,计算机A是如何知道计算机C的MAC地址或网关的MAC地址的?

在TCP/IP协议栈的网络层有ARP协议(Address Resolution Protocol),在计算机和目标计算机通信之前,需要使用该协议解析到目标计算机的MAC地址(同一网段通信)或网关的MAC地址(跨网段通信)。

这里大家需要知道:ARP协议只是在以太网中使用,点到点链路使用PPP协议通信,PPP帧的数据链路层根本不用MAC地址,所以也不用ARP协议解析MAC地址。

图4是使用抓包工具捕获的ARP请求数据包,第27帧是计算机192.168.80.20解析192.168.80.30的MAC地址发送的ARP请求数据包。注意观察目标MAC地址为ff: ff: ff: ff: ff: ff。其中Opcode是选项代码,指示当前包是请求报文还是应答报文,ARP请求报文的值是0x0001,ARP应答报文的值是0x0002。

ARP协议_mac地址_04

图4 ARP请求帧

ARP协议是建立在网络中各个主机互相信任的基础上的,计算机A发送ARP广播帧解析计算机C的MAC地址,同一个网段中的计算机都能够收到这个ARP请求消息,任何一个主机都可以给计算机A发送ARP应答消息,可能告诉计算机A一个错误的MAC地址,计算机A收到ARP应答报文时并不会检测该报文的真实性,就将其记入本机ARP缓存,这样就存在一个安全隐患—ARP欺骗。

在Windows系统中运行arp -a可以查看缓存的IP地址和MAC地址对应表。

C:\Users\hanlg>arp -a

接口: 192.168.2.161 --- 0xb

Internet 地址 物理地址 类型

192.168.2.1 d8-c8-e9-96-a4-61 动态

192.168.2.169 04-d2-3a-67-3d-92 动态

192.168.2.182 c8-60-00-2e-6e-1b 动态

192.168.2.219 6c-b7-49-5e-87-48 动态

192.168.2.255 ff-ff-ff-ff-ff-ff 静态

此文章来自于《华为 HCIA-Datacom认证(2021新版HCIA教材)》

京东购买本书

​https://item.jd.com/13706744.html​

学习计算机网络华为网络工程师 华三网络工程师课程中有问题联系韩老师

韩立刚老师wx hanligangdongqing

韩利辉老师wx 13073172070

华为 HCIA-Datacom认证(2021新版HCIA教材)课程链接 https://edu.51cto.com/course/28956.html

ARP协议_ip地址_05

韩老师招收正式学生、门徒级套餐

​https://edu.51cto.com/topic/819.html​