C语言每日一练——第665天:ARP协议
「作者主页」:士别三日wyx
一、什么是ARP协议
我们平时想要联系一个人的时候,可以给她打电话,电话号码是用户的唯一标识,只要知道了对方的电话号码,就可以与对方通话。
计算机也是如此,计算机之间想要进行通信,也需要知道对方的 “电话号码”,计算机的“电话号码” 称为Mac地址,也叫计算机的物理地址。
1. Mac地址
使用命令 ipconfig -all ,可以查看电脑的 Mac地址。
当前网络中,物理地址这一项,就是计算机的 Mac地址。
Mac地址与计算机一一对应,是计算机的唯一标识。
计算机之间想要通信,就必须知道对方的 Mac地址。
2. 网络层的数据
数据到达网络层的时候,网络层会为数据添加源IP和目的IP。
随后网络层需要将数据传递到数据链路层,但数据链路层传输数据需要知道源Mac地址和目的Mac地址,因此,网络层需要根据IP地址找到对应的Mac地址。大致流程如下:
这个根据IP地址寻找Mac地址的动作,就是由ARP协议完成的。
源Mac地址就是发送数据的计算机的Mac地址,可以轻易的获取到,就比如你给别人打电话,你肯定是知道自己的手机号;但对方的手机号就不一定知道了。
因此,寻找目的IP地址对应的Mac地址,是ARP协议的主要工作。
3. ARP协议
ARP协议设定了几条不证自明的公理:
- 每一个计算机或者路由器中都有一个ARP高速缓存,也就是IP地址与Mac地址的映射表
- ARP 高速缓存表只会存储当前局域网内的设备信息,这些设备包括但不限于计算机、交换机、路由器连接此局域网的接口所对应的 IP 和 Mac 映射信息
ARP高速缓存也叫ARP地址缓存表,使用命令 arp -a 可以查看ARP地址缓存表
二、ARP协议执行原理
首先,计算机会判断目的IP地址是否是同网段的IP,如果是同网段,则在当前局域网内查询。
1. 局域网内
计算机先在自己的ARP地址表中查询目的IP地址。
如果ARP地址表能查询到,就会获取IP地址对应的Mac地址,将信息发送到这个Mac地址对应的计算机中;
如果ARP地址表中查询不到,就会在局域网内广播请求,请求的内容中带有源IP地址和目的IP地址。局域网内所有的设备都会收到广播请求。
- 如果请求中的IP地址不是自己的,就不会理会。
- 如果是自己的IP地址,则会通过单播的方式,将自己的IP地址和Mac地址根据请求中的源IP地址,响应给计算机;计算机会将接收到的IP地址和Mac地址添加到自己的ARP地址表中,然后根据Mac地址,将数据发送给对方。
上面的这种情况,源主机和目标主机是在一个局域网内的。
2. 局域网外
如果是不同的局域网,计算机会通过路由器与局域网的连接口,先将数据发送给路由器(路由器的每个接口都有对应的IP地址和Mac地址),路由器通过路由算法选择最优的路线将信息发送到目标主机所在局域网的路由器上。
目标主机的路由器收到信息后,也会先检查自己的ARP地址表。
- 如果有目标IP地址,就直接发送信息
- 如果没有目标IP地址,则会在局域网内广播,目标主机收到广播后返回自己的IP地址和Mac地址,路由器将收到的IP地址和Mac地址存储到自己的ARP地址表中,然后将数据发送给Mac地址对应的目标主机
3. ARP执行流程图
文章来源: blog.csdn.net,作者:士别三日wyx,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/wangyuxiang946/article/details/122541067
- 点赞
- 收藏
- 关注作者
评论(0)