ARP原理简述

本文不会跟书上一样详细地介绍ARP相关的命令与它的报文格式,而是试图从宏观上通俗地说明白ARP协议的实现原理。

我们知道,依据以太网协议(加粗的意思在点对点信道上只要有IP协议也可以通信),两台主机想要通信至少得互相知道对方的MAC地址。

“当一台主机把以太网数据帧发送到位于同一局域网上的另一台主机时,是根据48 bit的以太网地址来确定目的接口的。设备驱动程序从不检查IP数据报中的目的IP地址”。

这句话是《TCP/IP详解 卷1》中的原话,它的意思是说负责主机间通信的硬件设备在通信活动中从未使用过IP地址这个东西,它(下层应用)只使用且MAC地址来完成通信活动。

而我们在实际应用中,我们关注的往往是上层应用,通常只知道对方主机的IP地址,而主机间的通信又必须要使用到MAC地址。那么主机间的通信如何完成呢?

ARP协议就是为了解决这个矛盾而产生的:如何通过IP地址得到MAC地址,使得主机间通信可行。

ARP,全称是”Address Resolution Protocol”(地址解析协议),它提供了IP地址转换MAC地址的功能,ARP协议将动态分配的IP地址与每台电脑唯一的MAC地址给联系了起来,构成对应关系。

现假设某局域网内有这么两台主机:

主机A的IP地址为192.168.1.90,MAC地址为MAC_A

主机B的IP地址为192.168.1.91,MAC地址为MAC_B

主机A要与主机B主动通信则需要执行以下步骤:

自应用层起至物理层终,主机A将一些必要的东西封装到数据包裹里面去,此包裹中包括了通信应用双方的端口号、IP地址、MAC地址。这样我们才能知道是主机A上的哪个应用与B主机上的哪个应用进行通信。而此时主机A它只知道主机B的IP地址,于是主机A拿着主机B(目标主机)的IP地址去查询自己的ARP高速缓存。

如果主机A没有在自己的ARP高速缓存中查到目标主机B的IP与MAC的对应关系,它将给自己所在局域网内的所有主机广播一个ARP请求帧,说白了就是群发一个特殊的数据包,这个数据包包含主机A(自己)的IP地址、MAC地址,主机B(目标)IP地址,以及要期望通信的主机B的MAC地址,此处主机B的MAC地址按照协议约定写成 “ff:ff:ff:ff:ff:ff:ff”,意思是这个数据包用于询问主机B的MAC地址。

局域网内的所有主机接收到此询问数据包后会发现这个是一个群发的而不是正常通信发送的数据包,那么每个主机在匹配目标IP的时候发现与自己的IP地址不匹配,则丢弃这个数据包,且对这个群发的询问数据包不予回应,而IP匹配上了的主机B需要将询问数据包来源主机(主机A)的IP对应MAC地址存在本机的ARP高速缓存中后,再对主机A进行单播应答(私聊),此时的应答中,就包含了主机B的MAC地址了。


为了更通俗些地描述,下面再举一个栗子:

快递员周先生需要给三年二班的小华送快递,周先生查了查随身携带的记事本,发现自己虽然认识三年二班在哪儿但是他既不认识小华也不认识小华的座位,于是他走到了三年二班后大声地吆喝了一声“小华是哪位,拿快递啦”。周先生吆喝的内容中必须是这样固定的,这样吆喝了一声的好处很明显,名字不叫小华的同学就当做没听见吆喝就好了,而听见了吆喝的小华就答应一声然后快递就会送到他座位上。此时周先生将小华的位置信息记录在记事本上,下次送快递就不用吆喝了而是直接送到小华座位上。这个栗子举得不算好,但是辅助理解应该够了。

再回到我们前文提及的“高速缓存”的概念,除了主机IP地址与MAC地址的映射关系以外,最需要重点关注的就是这每个主机上都有的ARP高速缓存,这个缓存的实现是ARP协议的根本,它存放了最近因特网地址与硬件地址之间的映射记录,高速缓存中,每一项都有生命周期(TTL),一般为20分钟。

前面我们提到,在主机A进行广播找主机B的MAC地址时,给局域网内的每个主机都发送了询问包。实际上这个环节是较为脆弱的,假设此时有接收到了询问包的主机C,本来目标IP匹配与主机C的IP不符合,它应该主动丢弃,但是如果主机C居心叵测,它未将此包丢弃,反而是伪装成主机B进行回应。那么源主机A会先后接收到真假两个回应,两个回应中分别包含映射“主机B的IP地址映射主机B的MAC地址”与“主机B的IP地址映射主机C的MAC地址”。

主机A无法确定哪个是真的,它只能默认地选择后到的回应为真的,也就是之后的通信都与后到的MAC地址建立,本该发往主机B的数据包都发往了主机C。

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

推荐阅读更多精彩内容

  • LT-0807,2018.03.11翻译,@成都 声明 本文是一篇关于TCP/IP协议组件的RFC,聚焦于一个IP...
    摩诃婆罗多阅读 4,075评论 1 5
  • TCP/IP 协议族 Transmission Control Protocol/Internet Protoco...
    槑小姐_1419阅读 916评论 0 1
  • 1、TCP为什么需要3次握手,4次断开? “三次握手”的目的是“为了防止已失效的连接请求报文段突然又传送到了服务端...
    杰伦哎呦哎呦阅读 3,475评论 0 6
  • 个人认为,Goodboy1881先生的TCP /IP 协议详解学习博客系列博客是一部非常精彩的学习笔记,这虽然只是...
    贰零壹柒_fc10阅读 5,051评论 0 8
  • 1.这篇文章不是本人原创的,只是个人为了对这部分知识做一个整理和系统的输出而编辑成的,在此郑重地向本文所引用文章的...
    SOMCENT阅读 13,053评论 6 174