ARP协议

ARP协议,即地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议。属于TCP/IP协议簇中的网络层,但与MAC紧密相连,所以也有人说是属于2.5层。

所谓的地址解析的目标就是发现逻辑地址与物理地址的映射关系

一、地址的内容

1、物理地址:

物理地址:物理地址对于主机就类似身份证对于人类。对于每个网络适配器,设置制造商都会给定一个永久的物理地址,将其存储在设备的永久性内存中。就像身份证一样,物理地址就是网络适配器的ID

注:网络适配器

网络适配器,又称为网卡(Network Interface Card,NIC)或网络接口控制器(Network Interface Controller,NIC),是一种用于连接计算机与网络的硬件设备。它通过将数据从计算机转换为网络可识别的格式,并在网络之间进行传输,实现计算机与网络之间的通信。
 

注意,物理地址是和网络适配器绑定的,如果主机更换了网络适配器,那么它的物理地址也会相应改变。

2、逻辑地址

逻辑地址:逻辑地址就是我们常说的IP地址,因为IP地址是由软件实现的,所以把它称为逻辑地址。IP地址是不固定的,它通常从某个网络的IP地址池中获得,改变网络环境,IP地址就会改变。

3、五层体系中对地址的应用:

在TCP/IP分层体系结构中,数据链路层和物理层使用的地址是物理地址。

而网络层、传输层和应用层使用的地址是IP地址(逻辑地址)。

4、分组传输中必须要两级地址:

IP地址和物理地址是在不同的层次下运行的。

        1、同一个目的IP地址可能经过多段链路,每段链路都可能运行不同的链路层和物理层协议,它们的物理地址格式可能都截然不同。

        2、同一段链路可能接收来自不同的网络层协议,比如IPv4或者IPX。

因为不能仅使用物理地址:

        有很多链路层和物理层的协议,它们都有不同的物理地址。如果完全依赖物理地址,那么路由表就需要对每个物理地址建立一个项,那样没有一个路由器能够负担如此庞大的表项。
        而IP地址提供了更高层次的抽象,将不同的物理地址抽象为统一的逻辑地址。
        IP地址有良好的分层。如果分组转发到同一子网,只需要在路由表中记录统一的网络前缀。比如,一个子网有6000个IP地址,对应6000个物理地址。记录IP地址网络前缀只需要1行,记录物理地址则需要6000行。

二、ARP协议

1、工作原理:

主要依赖ARP高速缓存(ARP cache)

        ARP高速缓存就是一个映射表,它记录了IP地址和物理地址的映射关系。

        每一台主机和路由器都设有ARP高速缓存,在实际传输中,通常已知下一跳的目的IP地址,通过查询ARP高速缓存即可知道对应的物理地址。

2、如何建立ARP高速缓存

已知下一跳的目的IP地址,通过广播ARP请求分组得知下一跳对应的物理地址


ARP请求分组有3个重要信息:

        1.源IP地址。2.对应的源物理地址。3.目的IP地址。
查询的内容为:对应的目的物理地址。

(个人理解:和朋友在很多人的广场上走散了,为了找到朋友,在广场上大喊朋友的名字,仅有朋友会应答,并且告知位置后进行定位)

具体步骤:

1、源主机(我)或者路由器会给该网络的所有主机发送ARP请求分组(也就是给这个网络广播该分组)。

2、所有主机会检查分组的目的IP地址是否与自身的IP地址相同。

        如果不相同,就丢弃该分组;

        如果相同,就说明自己就是被寻找的目的主机或者路由器。

收到请求后:

目的主机(朋友)(或目的路由器)在收到ARP请求分组后,会做两件事:
1.将源主机的IP地址和对应的物理地址添加进自身的ARP高速缓存映射表。
        这是因为既然源主机会和自己通信,那么自己之后也可能会主动和源主机通信,提前建立源主机的映射表项是有必要的,之后自己要主动和源主机通信就不用广播ARP请求分组了。
2.给源主机发送ARP响应报文(注意,该报文是单播的)
        目的主机需要给源主机发送ARP响应报文,告知源主机自己的物理地址。源主机在收到所需的ARP响应报文,就可以发送帧给目的主机了。
        目的主机已经有源主机的物理地址了,可以直接给源主机发送对应的帧,不需要广播。

当源主机接收到ARP响应报文后,也会将目的主机的IP地址和对应的物理地址添加到自己的ARP高速缓存映射表中,这样下次再和该目的主机通信,就不用广播ARP分组了。之后就可以通过物理地址,给目的主机发送帧了。

3、报文格式

ARP协议_第1张图片

硬件类型:该字段有16bit。指定运行ARP协议的物理网络类型,ARP协议可以运行在任何物理网络上。以太网是类型1。
协议类型:该字段有16bit。指定高层协议的类型。ARP可用于任何高层协议。IPv4协议的值为0x0800。
硬件长度:该字段有8bit。定义物理地址的长度,以字节为单位。对于以太网,该值为6字节。
协议长度:该字段有8bit。定义逻辑地址的长度,以字节为单位。对于IPv4,该值为4字节。
操作:该字段有16bit。用于定义分组类型,目前常用2种。ARP请求分组和ARP响应分组。
发送方硬件地址:记录发送方的物理地址。
发送方协议地址:记录发送方的逻辑地址。
接收方硬件地址:如果是ARP请求报文,由于不知道接收方的物理地址(请求报文就是通过广播询问接收方物理地址,当然事先不知道),该字段全部填充为0。
接收方协议地址:记录接收方的逻辑地址。
 

4、封装

实际中,ARP协议常封装在以太网帧中。
当广播ARP请求分组时,该网络中的所有主机都会从以太网帧中提取出ARP协议分组,检查接收方协议地址字段,如果和自身IP地址不相同,就丢弃该分组。如果相同,说明自身的物理地址就是被寻找的地址。就需要给发送方回复ARP响应分组(通过单播)。
ARP的响应报文会将发送方硬件地址字段和发送方协议地址字段填写成自身的物理地址和IP地址。将接收方硬件地址和接收方协议地址填写为ARP请求报文的发送方硬件地址和发送方协议地址。

5、抓包 -- 看不太懂


(学自:CSDN博主「万能的柯西」的原创文章,
原文链接:https://blog.csdn.net/qq_983030560/article/details/128754934)

你可能感兴趣的:(实习学习,学习,笔记)