详解 ARP 与 RARP 协议

ARP 与 RARP 协议

The article was written by:GoodGoodStudy(76371578@qq.com

通常我们只要确定了 IP 地址即可向目标发送数据报。然而,在底层数据链路层,进行实际通信时却有必要了解每个 IP 地址所对应的 MAC 地址。ARP 正是一种解决地址问题的协议。

ARP 以目标 IP 地址为线索,用来定位下一个应该接收数据分包的网络设备对应的 MAC 地址。如果目标主机不在同一个链路上时。可以通过 ARP 查找下一跳路由器的 MAC 地址。不过 ARP 只适用于 IPv4,不能用于 IPv6。IPv6 中可以用 ICMPv6 替代 ARP 发送邻居探索消息。

ARP 的工作机制

ARP 通过请求与响应两种类型包来确定 MAC 地址。

如下图所示,假定主机 A (172.20.1.1)向同一链路上的主机 B (172.20.1.2)发送 IP 包,它们互不知道对方的 MAC 地址。

image

主机 A 为了获得主机 B 的 MAC 地址,起初要通过广播发送一个 ARP 请求包,这个包中包含了想要了解其 MAC 地址的主机 IP 地址(即 ARP 请求包中包含了主机 B 的 IP 地址 172.20.1.2。由于广播的包可以被同一链路上所有的主机或路由器接收,因此 ARP 的请求包也会被这同一链路上所有的主机和路由器进行解析。如果 ARP 请求包中的目标 IP 地址与自己的 IP 地址一致,那么这个节点就将自己的 MAC 地址塞入 ARP 响应包返回给主机 A。

即 ARP 协议是通过往同一链路上的节点广播发送 ARP 请求包(含想了解 MAC 地址的节点 IP 地址),等待目标节点返回响应包来获取其 MAC 地址,从而实现链路内的 IP 通信。

根据 ARP 可以动态地进行地址解析,因此 TCP/IP 的网络构造和网络通信中无需事件知道 MAC 地址究竟是什么,只要有 IP 地址即可。

如何解决每次发送 IP 数据报都要进行一次 ARP 请求 ?

如果每次发送一个 IP 数据报都要进行一次 ARP 请求以此确定 MAC 地址,那将会造成不必要的网络流量。因此,通常的做法是把获取到的 MAC 地址与其 IP 地址的映射关系缓存一段时间。这样下一次再向这个 IP 地址发送数据报时就无需再重新发送 ARP 请求,而是直接使用缓存表中的 MAC 地址。这样,在一定程度上可以防止 ARP 包在网络上被大量广播的可能性。

一般来说,发送过一次 IP 数据报的主机,继续发送多次 IP 数据报的可能性会比较高。因此,这种缓存能有效地减少 ARP 包的发送。反之,接收 ARP 请求的那个主机又可以从这个 ARP 请求包中获取发送端主机的 IP 和 MAC 地址,这时它也可以将这些 MAC 地址缓存起来,从而根据 MAC 地址发送响应包给发送端主机。

为什么即需要 IP 地址,还需要 MAC 地址

可能有人会疑惑:"数据链路上只要知道接收端的 MAC 地址不就知道数据发送给主机 B 吗,为什么还需要 IP 地址?如果知道 IP 地址,即使不做 ARP,只要在数据链路上做一个广播不就能发给主机 B 了吗?那 ARP 这不是在做多余的事情吗?"

此时我们要考虑一下以下情况,即:发送给其它数据链路中某一主机时;

如下图所示,当主机 A 想要发送给 IP 数据报给主机 B 时必须得经过路由器 C。即使知道了主机 B 的 MAC 地址,由于路由器 C 会隔断两个网络,还是无法实现直接从主机 A 发送数据报给主机 B。此时,主机 A 必须得先将数据报发送给路由器 C 的 MAC 地址 C1。

image-20201218145418137.png

此外,假定 MAC 地址就用广播地址,那么路由器 D 也将会收到该广播消息。于是路由器 D 又将该消息转发给路由器 C,导致数据包被重复发送两次。

IP 地址与 MAC 地址承当着不同的作用,IP 地址是目标的地址,而 MAC 地址承担着 "下一目标" 的地址,数据报要经过多次中转才能到达最终的目标上。

在以太网上发送 IP 包时,"下次要经由哪个路由器发送数据报",这一信息非常重要。而这里的 "下一个路由器" 就是相应的 MAC 地址。

如此看来,IP 地址和 MAC 地址两者缺一不可。于是就有将这两个地址相关联的 ARP 协议。

我们再试想一下,倘若不使用 IP 地址,而是通过 MAC 地址连接世界上所有网络中所有的主机和节点情况。仅仅凭一个 MAC 地址,人们是无法知道这台机器所处的位置的。而如果全世界设备都使用 MAC 地址相连,那么网桥在习得之前就得向全世界发送包。可想而知那将会造成多大的网络流量。并且网桥还得维护一张巨大的表来维护所有学到的 MAC 地址,一旦这些信息超过网桥所能承受的极限,那将会导致网桥无法正常工作。

RARP

RARP(Reverse Address Resolution Protocol)是将 ARP 反过来,从 MAC 地址定位 IP 地址的一种协议。

例如将打印机服务器等小型嵌入式设备接入到网络时就经常用到。平常我们可以通过个人电脑设置 IP 地址,也可以通过 DHCP 自动分配获取 IP 地址。然而,对于使用嵌入式设备时,会遇到没有任何输入接口或无法通过 DHCP 动态获取 IP 地址的情况。在类似情况下,就可以使用 RARP。

为此,需要架设一台 RARP 服务器,从而在这个服务器上注册设备的 MAC 地址及其 IP 地址。然后再将这个设备接入到网络,插电启动设备时,该设备就会发送一条 "我的 MAC 地址是 ***,请告诉我,我的 IP 地址应该是什么"的请求信息。RARP 服务器接收到这个消息后返回类似于 "MAC 地址为 *** 的设备,IP 地址为 ***"的信息给这个设备。而设备就根据从 RARP 服务器所收到的应答信息设置自己的 IP 地址。

image

代理 ARP

通常 ARP 包会被路由器隔离,但是采用代理 ARP 的路由器时,可以将 ARP 请求转发给邻居的网段。由此,两个以上的网段节点之间可以像在同一个网段中一样进行通信。

最后编辑于
?著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,029评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,238评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,576评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,214评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,324评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,392评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,416评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,196评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,631评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,919评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,090评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,767评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,410评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,090评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,328评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,952评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,979评论 2 351

推荐阅读更多精彩内容

  • 我们知道在网络中通讯,都是知道对方的IP地址后,才能发起连接,IP地址所在的层是网络层,而在网络层下面是数据链路层...
    卡巴拉的树阅读 9,022评论 2 19
  • 1.这篇文章不是本人原创的,只是个人为了对这部分知识做一个整理和系统的输出而编辑成的,在此郑重地向本文所引用文章的...
    SOMCENT阅读 13,053评论 6 174
  • “TCP/IP协议”可谓是我们日常工作中接触到的最多的数据传输协议了,也是在网络访问过程中的底层协议??赡芎芏嘈』?..
    吃大米的小蚂蚁阅读 3,103评论 0 2
  • 由硬件交换的帧需要使用正确的硬件地址定位到正确的接口;否则,无法传输数据。一个传统IPv4网络需要使用自已的地址:...
    Myth52125阅读 1,047评论 0 0
  • 《Tcp/Ip协议簇》读书笔记 在IP协议能够把一个分组从源主机交付到目的主机之前,它首先要知道如何将这个分组交付...
    Zhang21阅读 1,672评论 0 0