ARP原理

 

前几天有人问我,讲一下ARP原理。我记得我以前推送过,翻了一下,将上次讲的文章,再次推送一下。对了,为了方便...



前几天有人问我,讲一下ARP原理。我记得我以前推送过,翻了一下,将上次讲的文章,再次推送一下。

对了,为了方便大家翻阅往期精彩原创的文章,特此弄了一个菜单【精选】,该菜单汇集了往期精彩文章的链接。同时,大家如果有其他建议,也可以提出来。







声明


网络工程师阿龙”公众号是阿龙唯一的公众号。近来有人反馈出现了其他以阿龙为名义的公众号!新浪微博“网络攻城狮阿龙”,也是阿龙唯一的公众微博。喜欢网络、愿一起交流网络技术、一起成长的,敬请认准公众号。

有读者在新浪微博私信阿龙,关于ARP的困惑:





本期,我就来解答一下关于ARP的工作原理吧!

(今后,各位读者,要是有遇到什么困惑,或者有什么建议,也欢迎来私信,虽然我现在好久没搞路由交换了,但只要阿龙会的,还是会尽力帮大家解答的。别忘了,当初我们的初衷就是:是为了集结所有热爱网络技术的爱好者,大家一起交流、分享知识、分享你我的见解、一起成长。交流的方式有很多,比如大家一起在文章下面进行评论,大家看了,就多收获了解决问题的一种思路、思想。)

本篇适合初学者、在校大学生阅读,本公众号也存在许多技术很厉害,甚至比阿龙强得多的读者,看到本篇,您就饶过阿龙了,就飘过好了。或者当初复习一下也挺好的。

思路

1、思考ARP到底是干嘛的? 为什么要有它?why?

2、掌握ARP的工作原理。

技术人,要掌握一种技术,绝对离不开以上两点基本思路,带着这两个思路去学习新技术,你绝对是不可能学不会的。再笨,你也会学得很深刻的。甚至,你还可以有更多的思路,比如,可不可以没有它? 有它?跟没有它的情况又是什么样的?等等。

1、ARP到底是干嘛的?

我们都知道局域网里面通信,都是靠MAC地址来通信的。ARP简单说,就是用来把IP地址转换成MAC地址,就是某个去往目的IP地址翻译成MAC地址。

交换机的工作原理就是基于源MAC地址学习,基于目的MAC地址转发的。大家都知道网络的参考模型,我们在电脑上要发送消息时,电脑内部的处理机制是先从上层开始一层一层往下封装的。如图:



现在,有了这张图,就更容易理解ARP的作用了。

电脑从上层往下封装,到了二层,要封装帧头部时,就需要把目的mac地址封装上,形成完整的二层头部后,就可以发送出去了。

现在的问题就是,电脑如何知道对方的MAC地址?



计算机A要发送消息,给计算机E。他们是第一次通信。

当用户计算机A在上使用QQ聊天工具,输入:你好,约吗?

回车,计算机A就先从上层往下封装头部。如IP头部就将

目的IP:1.1.1.2   , 源IP就是:1.1.1.1 等信息进行封装,到了二层,就需要将目的MAC地址,源MAC地址进行封装。计算机A肯定知道自己网卡的mac地址,为1111.1111.1111.1111。但是目的mac地址(计算机E的mac地址)就不知道了,因为他们是第一次通信,哪里知道啊~  要是知道,就上天了!

于是,这时候,计算机A就执行ARP程序,发送一个ARP请求报文的广播包:

该数据包的关键字段如下:

二层:

目的MAC地址:ffff.ffff.ffff.ffff

源mac地址:1111.1111.1111.1111

类型:0x0806

arp的关键内容如下:

source mac:1111.1111.1111.1111.1111

source IP: 1.1.1.1

target mac:ffff.ffff.ffff.ffff (因为第一次通信,不知道对方的mac地址)

target IP:1.1.1.2

上面这段报文,可以理解为人类的语言就是:



这样,交换机收到这个报文,看到目的mac地址是全F就进行广播!

【阿龙这里要提醒初学者的是,因为交换机是二层设备,只会拆包、解析到二层信息而已,不会进行更深入的解析,如网络层信息。换句话说,就是交换机根本不知道里面是什么数据,只知道这个数据包的源、目mac地址而已。】

这样,所有的计算机收到这个广播包,会进行更深入的解析,看到里面的target IP 是1.1.1.2,  与自己的IP地址进行对比,发现不一样,就丢弃。发现一样,就回应ARP报文。单播回应喔!

ARP的响应报文里的关键字段如下,

二层:

目的MAC地址:1111.1111.1111.1111

源mac地址:2222.2222.2222.2222

类型:0x0806

arp的关键内容如下:

source mac:2222.2222.2222.2222

source IP: 1.1.1.1

target mac:1111.1111.1111.1111 (从请求包里得知A的mac地址,于是单播)

target IP:1.1.1.1

以上这段报文,你可以理解为人类语言就是:



这样,计算机A收到这个报文后,就将计算机E的mac地址记录下来,存在计算机A的一个数据库,叫做ARP缓存表。下次通信时,如果缓存未超时,就可以直接使用了。如果超时了,就再次进行arp请求广播了。

如果你还不信的话,那龙哥就亲自动手做实验吧!



计算机A的信息:



计算机E的信息:



用计算机A ping 计算机E来模拟A发送消息给计算机E,并且抓包:



抓包就会发现抓到了2个ARP的报文:



分别如下:

1、



2、



这时,你就可以在计算机A看到arp缓存表了:



不知道,那位同学明白了没? 如以上有讲错地方,欢迎大家在下方评论地方指出! 如您还有其他见解,也欢迎您在下方评论的地方进行参与。

感觉您的阅读! 祝您学习愉快!

猜您可能想阅读的文章:

搞懂CSMA/CD,你就明白为什么以太网最小帧是64字节。

HTTP响应报文与工作原理详解

Vmware的三种网络连接模式,你知多少?(图文)

【网络安全】阿龙今天就根据个人见解来跟大家分享802.1x的工作原理

【阿龙原创】快来看看,PPP协商分配对端IP地址,路由器之间是怎么对话的?


    关注 网络工程师阿龙


微信扫一扫关注公众号

0 个评论

要回复文章请先登录注册