百度网站优化工具,汉川网页设计,企业展厅建筑,深圳品牌内衣t台秀概念#xff1a;
1. ARP协议(地址解析协议):由IP地址转换为MAC地址的协议。IP地址#xff1a;网络号主机号。MAC地址#xff1a;数据链路层的物理地址#xff08;硬件地址#xff09;。IP协议使用了ARP协议#xff0c;因此被划归为网络层#xff0c;但其用途是从网络层…概念
1. ARP协议(地址解析协议):由IP地址转换为MAC地址的协议。IP地址网络号主机号。MAC地址数据链路层的物理地址硬件地址。IP协议使用了ARP协议因此被划归为网络层但其用途是从网络层使用的IP地址解析出数据链路层的硬件地址因此有些也将其划归为数据链路层。与ARP协议成对的协议为RARP它是从MAC地址到IP地址的转换。
2. 网络层使用的是IP地址但在实际网络的链路上传送数据帧时最终还是使用网络的硬件地址。但IP地址和网络的硬件地址本身存在格式上的不同也没有什么直接的映射关系。同时网络上也有不同的主机加入进来或撤走一些主机更换网络适配器也会使硬件地址改变因此引入了ARP协议ARP协议主要解决此类问题的方法是在主机ARP高速缓存中存放一个从IP地址到硬件地址的映射表并且这个映射表经常动态更新。
3. 每个主机都有一个ARP高速缓存里面有局域网的主机和路由器的IP到硬件地址的映射表这些都是该主机目前知道的一些地址。举个栗子哦当主机A要给主机B发送报文时主机A会在高速缓存中找是否有B的IP地址如果有则在ARP高速缓存中找到对应的硬件地址再把这个地址写入MAC帧然后通过局域网把该MAC帧发送到此硬件地址。也有可能查不到其IP地址可能是由于主机B才入网也可能是主机A刚加电高速缓存还是空的。这种情况的话主机A会自动运行ARP来找出硬件地址。 1 ARP在局域网中广播请求分组找主机B的IP地址 2 在局域网上运行的主机都可以接收到ARP广播的消息但只有主机B会有响应其他主机则忽略该广播。 3主机B响应分组后会在ARP响应分组中写入自己的硬件地址此时的响应分组是单播的。刚刚广播是因为不知道主机是哪一个现在知道了具体是哪一个主机后主机B直接给主机A响应因此是普通的单播。 4 主机A收到主机B的响应分组后在ARP高速缓存中写入主机B的从IP地址到硬件地址的映射。为什么要将其写入ARP高速缓存呢你发送数据报可能不止一次当你发送完之后主机B也给主机A响应后可能也会发送数据报这时如果没有ARP高速缓存可能主机B也得以广播的方式先找到主机A的IP再找硬件地址这样就大大降低了网络的通信量因此使用ARP来增加网络的通信量也提供了方便。 4. ARP把保存在高速缓存中的每一个映射地址项目都设置生存时间超过生存时间的项目就从高速缓存中删除掉。比如说主机A给主机B发数据某一天主机B的网络适配器坏了B更换了一块这时其硬件地址也被修改这样的话高速缓存中存的还是原来的那个地址这下你肯定找不到确定的硬件地址有了生存时间后你可以在限定的时间内找如果找不到的话就将原先的硬件地址删除再重新广播发送ARP请求分组重新找到B。继续上述的步骤在高速缓存中写入正确的硬件地址即可。
5. ARP协议是解决局域网的情况如果是不同的网络中的主机间的传送数据报呢这里我们涉及到路由器的概念。主机A无法直接解析主机B的硬件地址我们这时通过连接到主机A的路由器来进行转发找到另一网络通过将路由器A的IP转化为硬件地址以便将IP数据报写入路由器AA从转发表中找到下一跳路由B同时解析出路由器B的硬件地址于是再将数据报转发到路由B上再通过路由器广播的方式解析目的主机的硬件地址找到正确的主机传送数据报。 关于ARP主要有四种典型情况 1. 发送方是主机把IP数据报发送到同一网络的另一个主机此时主机A发送ARP请求分组广播找到目的主机的硬件地址 2. 发送方是主机把IP数据报发送到不同网络的另一个主机这时主机A发送ARP请求分组找到主机A的路由器的硬件地址剩下的工作由路由器完成。 3. 发送方是路由器把IP数据报转发到同一网络的另一个主机此时路由器发送ARP请求分组广播找到目的主机的硬件地址 4. 发送方是路由器把IP数据报转发到不同网络的另一个主机这时路由器R1发送ARP请求分组找到下一跳路由器R2的硬件地址剩下的工作由路由器R2完成。 下面我们来写个脚本来实现抓取主机MAC地址
#!/bin/bash
net192.168.127. //是我自己的主机IP
i1
count0
while [ $i -le 254 ]
doif [ $count -eq 20 ];thencount0sleep 1fiping -c1 $net$i //检查网络是否连通let ilet countdonewait我们可以使用arp -a来查看缓存中的MAC地址。如下 其中显示incomplete的就是没有存入缓存中的。我们可以过滤一下。
#!/bin/bash
net192.168.127.
i1
count0
while [ $i -le 254 ]
doif [ $count -eq 20 ];thencount0sleep 1fiping -c1 $net$i let ilet countdonewait
arp -a | grep -v incomplete这次就会直接将没有连接的IP过滤掉运行结果为 这样我们就很好的抓取到了对应主机的MAC地址。