arp脚本
ARP协议
什么是ARP协议?
ARP (Address Resolution Protocol) 是个地址解析协议。最直白的说法是:在IP以太网中,当一个上层协议要发包时,有了该节点的IP地址,ARP就能提供该节点的MAC地址。
为什么需要有ARP协议?
OSI 模式把网络工作分为七层,彼此不直接打交道,只通过接口(layre interface). IP地址在第三层, MAC地址在第二层。
协议在发生数据包时,首先要封装第三层 (IP地址)和第二层 (MAC地址)的报头, 但协议只知道目的节点的IP地址,不知道其物理地址,又不能跨第二、三层,所以得用ARP的服务。
在网络通讯时,源主机的应用程序知道目的主机的IP地址和端口号,却不知道目的主机的硬件地址,而数据包首先是被网卡接收到再去处理上层协议的,如果接收到的数据包的硬件地址与本机不符,则直接丢弃。因此在通讯前必须获得目的主机的硬件地址。ARP协议就起到这个作用。
当一台主机把以太网数据帧发送到位于同一局域网上的另一台主机时,是根据 48位的以太网地址来确定目的接口的,设备驱动程序从不检查 IP数据报中的目的IP地址。ARP(地址解析)模块的功能为这两种不同的地址形式提供映射:32位的 IP地址和 48位的以太网地址。
ARP数据报
其中op表示操作类型,是ARP数据报类型,值为1表示ARP请求,值为2表示ARP应答。
ARP协议工作过程
原理:(ARP协议只使用于局域网中)
1、在局域网中,网络中实际传输的是“帧”,帧里面是有目标主机的MAC地址的。
2、在以太网中,一个主机要和另一个主机进行直接通信,必须要知道目标主机的MAC地址。但这个目标MAC地址是如何获得呢?它就是通过地址解析协议获得的。所谓“地址解析”就是主机在发送帧前将目标IP地址转换成目标MAC地址的过程。
3、ARP协议的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。
4、点对点的连接是不需要ARP协议的
工作过程:
1、当主机A向本局域网上的某个主机B发送IP数据报时,就先在自己的ARP缓存表中查看有无主机B的IP地址。
2、如果有,就可以查出其对应的硬件地址,再将此硬件地址写入MAC帧,然后通过以太网将数据包发送到目的主机中。
3、如果查不到主机B的IP地址的表项。可能是主机B才入网,也可能是主机A刚刚加电。其高速缓存表还是空的。在这中情况下,主机A就自动运行ARP。
①ARP进程在本局域网上广播一个ARP请求分组。ARP请求分组的主要内容是表明:我的IP地址是192.168.0.2,我的硬件地址是00-00-C0-15-AD-18.我想知道IP地址为192.168.0.4的主机的硬件地址。
②在本局域网上的所有主机上运行的ARP进行都收到此ARP请求分组。
③主机B在ARP请求分组中见到自己的IP地址,就向主机A发送ARP响应分组,并写入自己的硬件地址。其余的所有主机都不理睬这个ARP请求分组。ARP响应分组的主要内容是表明:“我的IP地址是192.168.0.4,我的硬件地址是08-00-2B-00-EE-AA”,请注意:虽然ARP请求分组是广播发送的,但ARP响应分组是普通的单播,即从一个源地址发送到一个目的地址。
④主机A收到主机B的ARP响应分组后,就在其ARP高速缓冲表中写入主机B的IP地址到硬件地址的映射。
注意:ARP是解决同一个局域网上的主机或路由器的IP地址和硬件地址的映射问题。
ARP脚本
在简单学习了ARP协议之后,我们尝试去编写以下ARP脚本
先创建一个arp.sh类型的文件,然后在文件中敲入以下代码:
然后保存并退出,这个以.sh结尾的文件不需要去编译,直接运行就可以了,当然,一开始的时候应该运行不了,好像这个文件默认创建时是不可执行的。所以我们需要给文件加上x可执行权限,在超级用户下使用命令chmod +x arp.sh给文件加上可执行权限,然后我们就去执行文件。
我只能ping通我自己的地址,其余的全是没有。