这是最近在看《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 协议的格式
公众号