ARP解析MAC地址的过程分析(ARP的工作机制)

地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议。
主机发送信息时将包含目标IP地址的ARP请求广播到网络上的所有主机,并接收返回消息,
以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,
下次请求时直接查询ARP缓存以节约资源。地址解析协议是建立在网络中各个主机互相信任的基础上的,
网络上的主机可以自主发送ARP应答消息,其他主机收到应答报文时不会检测该报文的真实性就会将其记入本机ARP缓存;


地址解析协议由互联网工程任务组(IETF)在1982年11月发布的RFC 826中描述制定。[1] 
 地址解析协议是IPv4中必不可少的协议,而IPv4是使用较为广泛的互联网协议版本(IPv6仍处在部署的初期)。
OSI模型把网络工作分为七层,IP地址在OSI模型的第三层,MAC地址在第二层,彼此不直接打交道。


在通过以太网发送IP数据包时,需要先封装第三层(32位IP地址)、第二层(48位MAC地址)的报头,
但由于发送时只知道目标IP地址,不知道其MAC地址,又不能跨第二、三层,所以需要使用地址解析协议。
使用地址解析协议,可根据网络层IP数据包包头中的IP地址信息解析出目标硬件地址(MAC地址)信息,以保证通信的顺利进行。



ARP解析MAC地址的过程分析(ARP的工作机制)_第1张图片
ARP解析MAC地址需要了解的:
以太网环境下,同一个网段的主机之间需要互相知道对方的MAC地址,才能访问。


TCP/IP协议栈从上层到下层的封装过程中,第三层封装需要知道目的IP,第二层封装需要知道目的MAC。


目的IP一般由用户手工输入,或者由应用程序填充,也可以通过名称解析系统解析得到,而目的MAC就需要使用ARP来解析。


ARP解析MAC地址的过程:
第一步:


上层应用产生数据,这里用FTP协议为例,在FTP协议中定位了目的IP。


第二步:


那么,封装的过程如下:


应用层:需要FTP的控制信息,包括用户名、密码等;
传输层:目的端口号为21,源为随机端口号;
网络层:目的IP为172.16.1.200,源IP为172.16.1.1;
数据链路层:因为不知道目的IP 172.16.1.200对应的MAC,所以目的IP到目的MAC的封装映射失败;
三层到二层的封装失败,由于二层是以太网,ARP的工作机制便会产生ARP Request去解析目的MAC,此时,源MAC为数据发起者的MAC,目的MAC地址为FFFF:FFFF:FFFF(代表所有MAC)


第三步:


ARP Request到达本网段中的所有设备上,因为目的为FFFF:FFFF:FFFF,所以所有设备都可以拆掉二层的封装,然后解读ARP数据包中需要解析的目的IP。


第四步:


目的IP不正确的设备直接忽略这个ARP请求包,目的IP正确的设备,会产生一个ARP Reply去回应这个ARP Request。


此时,二层的源MAC为被解析设备的MAC,目的为ARP解析发起者的MAC。


第五步:


数据的发起者接到ARP Reply后,将目的IP与目的MAC的对应关系添加到自己的ARP表中。


第六步:


之前未完成二层封装的FTP数据,这时重新开始封装二层头部,此时,正确的目的MAC就被封装到了整个数据帧中。


只有完成了整个TCP/IP协议栈封装的数据帧,才能正常的从主机上发出去。


这就是ARP解析MAC地址的整个过程。


ARP缓存是个用来储存IP地址和MAC地址的缓冲区,其本质就是一个IP地址-->MAC地址的对应表,
表中每一个条目分别记录了网络上其他主机的IP地址和对应的MAC地址。
每一个以太网或令牌环网络适配器都有自己单独的表。
当地址解析协议被询问一个已知IP地址节点的MAC地址时,先在ARP缓存中查看,若存在,就直接返回与之对应的MAC地址,若不存在,才发送ARP请求向局域网查询。
为使广播量最小,ARP维护IP地址到MAC地址映射的缓存以便将来使用。ARP缓存可以包含动态和静态项目。动态项目随时间推移自动添加和删除。
每个动态ARP缓存项的潜在生命周期是10分钟。


新加到缓存中的项目带有时间戳,如果某个项目添加后2分钟内没有再使用,则此项目过期并从ARP缓存中删除;
如果某个项目已在使用,则又收到2分钟的生命周期;
如果某个项目始终在使用,则会另外收到2分钟的生命周期,一直到10分钟的最长生命周期。
静态项目一直保留在缓存中,直到重新启动计算机为止。




http://blog.csdn.net/luobin1984/article/details/12153099

你可能感兴趣的:(Sockets)