概述
【计算机网络学习笔记09】ARP地址解析协议
ARP地址解析协议
在实际应用中,我们常会遇见这样的问题:已知一个机器(主机或路由器)的IP地址,需要找出其相应的硬件,这时就需要使用到地址地址解析协议(Address Resolution Protcol,ARP)。
1 ARP数据包格式
图1 ARP数据包格式
下面介绍 ARP报文中各字段的含义。
(1)硬件地址类型。指明硬件的类型,一般是以太网,值为1。
(2)协议类型。指明发送者映射到数据链路标识的网络层协议类型,一般为P协议,对应值为0x0800。
(3)硬件地址长度。也就是MAC地址的长度,单位是字节。
(4)协议地址长度。网络层地址即IP地址的长度,单位是字节
(5)操作代码。指定了ARP报文的类型,包括ARP Request和 ARP Reply。
(6)源MAC地址和源IP地址。指的是发送ARP报文的设备的MAC地址和IP地址。
(7)目的 MAC地址和目的IP地址。目的MAC地址指的是接收者MAC地址,在ARP Request报文中,该字段值为0;目的IP地址指的是指接收者的IP地址。
2 ARP协议的要点
众所周知,网络层使用的是IP地址,但实际网络的链路上传送数据帧时,最终还是必须使用该网络的硬件地址。但IP地址和下面的网络的硬件地址之间由于格式不同而不存在简单的映射关系。此外,为了解决在一个网络上可能经常会有新的主机加入、撤走,或更换网络适配器也会使主机的硬件地址改变的问题,在主机ARP高速缓存中设有一个从IP地址到硬件地址的映射表,并且这个映射表还经常动态更新。
ARP高速缓存映射表的建立采用的是自学习的方法,学习到的IP地址和MAC地址的映射关系会被放入ARP缓存表中,一般ARP表项的默认存放时间为180s。
3 ARP工作过程
① 源主机和目的主机处在同一局域网络中的情况,如图2所示。
图2 ARP的工作过程
假设PC2为刚接入的主机,PC1的ARP缓存表中没有PC2的MAC地址。在这种情况下,主机 PC1就自动运行 ARP,然后按以下步骤找出主机PC2的硬件地址。
(1) ARP进程在本局域网上广播发送一个ARP Request帧进行请求。如图3所示为被封装的ARP Request帧的具体内容,此时该报文会在整个网络上传播,包括所有主机和网关都会收到此报文。
图3 被封装的ARP Request帧的具体内容
(2)网关会阻止该报文发送ARP Request 报文到其他局域网中去,其他主机会检查所接收的报文目的协议地址字段与自身的IP地址是否匹配,如果不匹配,则直接丢弃。如果匹配,如 PC2,则首先将ARP报文中的源MAC地址和源IP地址信息写入到自己的ARP缓存映射表中,然后通过ARP Reply报文进行响应。ARP Reply被封装成帧的内容如图4所示,封装后的帧和ARP Reply 报文的源地址信息是PC2的,而目的地址信息是 PC1的,同时ARP Reply报文中的操作代码被设置为Reply。ARP Reply报文通过单播传送。
图4 被封装的ARP Reply帧的具体内容
PC1收到ARP Reply后,会检查ARP报文中的目的MAC地址是否和自己的MAC地址匹配,如果匹配,则首先将源MAC地址和源IP地址写入自己的ARP缓存映射表中。
② 源主机和目的主机处在不同局域网络中的情况,如图5所示
图5
(1)发送方是主机PC1,要把IP数据报发送到另一个网络上的一台主机PC2。这时PC1发送ARP请求分组(在网1上广播),找到网1上的一个路由器R1的硬件地址。剩下的工作由路由器R1来完成。
(2)发送方是路由器R1,要把IP数据报转发到与R1连接在同一个网络(网2)上的主机PC2。这时R1发送ARP请求分组(在网2上广播),找到目的主机PC2的硬件地址。
虽然在网络链路上传送的帧最终是按照硬件地址来找到目的主机的,但是我们仍然要用到抽象的IP地址,而不是直接使用硬件地址进行通信。其原因就是在全世界上存在各式各样的网络,它们使用不同硬件地址,要使这些异构网络能够互相通信就必须进行非常复杂的硬件地址转换工作,因此由用户或用户主机来完成这项工作几乎是不可能的事。但IP编址把这个复杂问题解决了。
4 免费ARP和代理ARP
免费ARP
当网络上的一个设备被分配了IP地址或者IP地址发生变更后,可以通过免费ARP来检查其所分配的IP地址在网络上是否唯一,以避免地址冲突。
代理ARP
代理ARP是ARP协议的一个变种。 对于没有配置缺省网关的计算机要和其他网络中的计算机实现通信,网关收到源计算机的 ARP 请求会使用自己的 MAC 地址与目标计算机的 IP地址对源计算机进行应答。
作者: 郑伟钦
排版: 胖虎
初审: 正山小种
复审: 二月二
更多视频课程请访问 “CSDN 正月十六工作室讲师学院首页”
最后
以上就是坚定白云为你收集整理的【计算机网络学习笔记09】ARP地址解析协议【计算机网络学习笔记09】ARP地址解析协议ARP地址解析协议的全部内容,希望文章能够帮你解决【计算机网络学习笔记09】ARP地址解析协议【计算机网络学习笔记09】ARP地址解析协议ARP地址解析协议所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复