这是近期在看《TCP/IP详解》系列书总结出来的,之后会陆续把其他协议部分分享出来。
我尽量以简单易读、易懂的方式呈现出来,但是,由于文笔和水平有限,有些地方也许存在描述上的不足或繁琐或缺失,还请各位看官指出,我会尽量去弥补和更正。
这序列文章,首版是在公众平台发布,同时会同步到csdn(http://my.csdn.net/xiongxianhe),欢迎大家指正和交流。
ARP协议,将分以下序列:
1、什么是ARP协议
2、ARP协议格式详解
3、ARP协议编程
4、ARP协议欺骗和攻击
5、ARP安全防护
一、什么是ARP协议
1、我们先来看看TCP/IP协议族的四个层次,如图(图片来自《TCP/IP详解卷1》)
我们计算机接入互联网的主要目的是获取别人计算机上的资源,或者供别人获取我们的资源。
那我们如何能到达别人的计算机呢?聪明的人类就用地址来标识互联网上的每台机器,我们日常所说的IP地址等。比如,要获取我之前写的“在线编译器”代码的话,你就可以用
ftp://115.29.235.230/pub/MyProject/CompileOnline/
其中115.29.235.230就是一个ip地址。但是有了IP地址还不够,因为IP地址是网络层(TCP/IP协议族)使用的,计算机最后是要在物理设备(网卡、网线等)上传输的,因此还必须有个计算机的物理地址,我们称为:MAC地址或物理地址(每台机器在出厂后,mac地址就已经确定,并且是唯一的)。因此要使两台机器能通信,IP地址和MAC地址是不能少的。
ftp://115.29.235.230/pub/MyProject/CompileOnline/,我只给出了IP地址,却没有MAC地址,但我在浏览器里访问得到,这个是怎么来实现的呢?此时我们的ARP就出场了:
ARP(Address
Resolution Protocol),地址解析协议,它是将IP地址转化为MAC地址的协议规则。
Q:ARP是如何将IP地址转为MAC地址的?
A:每台机器内核都实现了ARP协议。它是通过一个高速缓存,把IP映射到对应的MAC。你可以在你机器上执行命令
arp -a,将会出现你机器现在缓存的IP和MAC的映射,如:
Q:这张映射表是如何生成的?
A:
(1)这张表中,每条记录(非静态)的生存时间一般为20分钟,起始时间从被创建开始算起,一旦过期,将在这张表中删除。(手动删除全部,可以用 arp -d *命令)。
(2)当A主机要发送信息给B时,A先在ARP高速缓存里查询B的IP是否有对应的MAC地址,如果有则把B IP对应的MAC地址取出封装在数据包里,然后发送出去。
(3)如果A在ARP高速缓存里没有找到B IP对应的MAC,则向A所在的局域网内广播或者询问网关(路由):谁有B IP的MAC,请告诉A。
(4)如果B和A是同一个局域网,B回这条信息,并把B的MAC地址带上,A再把B的IP和MAC写入到ARP的高速缓存里(一般有效时间为20分钟)。
(5)如果B和A不是同一个局域网,并且A所在的网关知道(或间接知道(询问和发包))B的MAC,则网关发消息给A,并且带上B的MAC地址。A收到消息后,再把B的IP和MAC写入到ARP的高速缓存里(一般有效时间为20分钟)。
(6)如果没人回应,则超时,对方不可达。
Q:那B的IP地址,A怎么知道?
A:(你猜!)
上面的问答形式,现在明白了ARP是干嘛的吧?
对,就是你想的那样的!
下面一篇,我们来学习下 ARP 协议的格式
公众号
版权声明:本文为博主原创文章,未经博主允许不得转载。