电子说
网络层的ARP协议
通过ARP协议知道对方的mac地址,已经知道对方ip地址的情况下,不知道mac地址。定义了一个ARP协议来解决这个问题。
因为在数据链路层的时候需要知道一个mac地址,然后才能进行数据链路层的封装。所以需要通过网络层的ARP协议来获取mac地址。
打开控制面板-网络连接-连接详细信息
物理地址:是这台电脑的mac地址。
IPv4地址:是这台电脑的ip地址。
通过ip对应成域名。mac地址不方便记忆,所以最先记住的是ip地址或域名。
要进行数据链路层的封装又必须要知道它的mac地址。所以用ARP协议,通过ip地址获取对方的mac地址。
ARP-地址解析协议,实现通过对方的ip地址(域名)寻找对方的mac地址。
图片来自网络
目的:老师想给班级里一个学生a发消息催作业,用微信。
「老师」 :
1.先去微信通讯录查找有没有同学a的微信,如果有,直接给同学a发消息,让她交作业。
2.没有同学a的微信。去班级群发消息:“同学a的微信,给我一下,我是某某老师。”
同学a看到群里消息,她把微信单独发给老师。老师收到同学a回复的微信消息。
3.老师加好友,可以在微信通讯录找到同学a,可以直接发消息了。
给同学a单独发了一条消息:"同学a,我们要交作业了。"
同学a单独回复:"我马上交作业。""
「同学a」 :
1.添加老师的微信到微信通讯录。
2.私聊发消息。
这个过程就是ARP协议实现的过程。
图片来自网络
主机a给主机b发消息进行通信。
1.主机a找主机b的mac地址。
知道主机b的ip地址:192.168.1.2
主机a的ip地址:192.168.1.1
现在主机a要发消息,找主机b的mac地址。ARP表和微信通讯录很相似(ip地址和mac地址的对应表)。
如果找到了mac地址,去数据链路层封装mac地址,进行数据包的发送。如果在arp表里没有找到ip地址对应的mac地址,主机a发消息给主机b所在的主机群组。
主机a发广播消息:“谁有主机b(192.168.1.2)的mac地址,我是主机a(192.169.1.1)。”
主机b回复主机a一条单播消息:“我就是192.168.1.2,我的mac地址是xxxxx。”
2.主机b收到主机a的广播消息后,在回复消息之前。主机b保存主机a的mac地址和ip地址到自己的ARP表里面。
再找主机a通信的时候,就直接在ARP表里面找到主机a的ip地址和mac地址的对应关系,直接发送单播消息。
3.主机a收到主机b的单播消息,同样把主机b的ip地址和mac地址保存到ARP表里。
1.主机a首先查看自己的ARP表,如果找到了主机b的mac地址,则直接对ip数据包进行帧封装,发送给主机b。
2.如果主机a在ARP表中找不到主机b的mac地址,则将缓存该数据报文,然后以 「广播方式」 发送一个arp请求报文。
ARP请求报文中带上 「源ip地址和源mac地址(主机a)」 ,目标ip地址和目标mac地址为主机b的ip地址和 「全0的mac地址」 。
广播,该网段上的所有主机都可以接收到该请求。但只有被请求的主机(即主机b)会对该请求进行处理。
3.主机b比较自己的ip地址和ARP请求报文中的目标ip地址,当两者相同时进行如下处理:将arp请求报文中的发送端(即主机a)的ip地址和mac地址存入自己的ARP表中。
之后以 「单播方式」 发送arp响应报文给主机a,其中包含了自己的 「mac地址」 。
4.主机a收到ARP响应报文后,将主机b的mac地址加入到自己的ARP表中以用于后续报文的转发,同时将ip数据包进行封装后发送出去。
全部0条评论
快来发表一下你的评论吧 !