前几天有人问我, 讲一下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
……