浅谈ARP协议

来源:互联网 发布:淘宝举证是什么意思 编辑:程序博客网 时间:2024/06/07 06:28

ARP协议是一种地址解析协议,在实际应用中 ,我们经常会遇到这样的问题,已经知道啦一个主机的IP地址,需要找出与之相应的物理地址,或者反过来已经知道了物理地址需要找出相应的IP地址。地址解析协议ARP和逆地址解析协议就是用来解决这样的问题的。
这里写图片描述
IP地址是表示网络中不同主机的地址,而端口号就是同一台主机上表示不同进程的地址,IP号和端口号合起来表示网络中的唯一进程
虽然IP,ARP,RARP数据报都需要以太网驱动程序来封装成帧,但是从功能上划分,ARP和RARP属于链路层,IP属于网络层
以太网的帧格式:
这里写图片描述
其中源地址和目的地址都是指网卡地址(也叫MAC地址)长度是48位帧协议类型的字段分别有三种值,分别为IP,ARP,RARP
以太网中的数据长度规定最小为46个字节,最大为1500个字节,ARP和RARP数据包的长度不够46个字节要在后面补填充位。最大值1500称为以太网的最大传输单元MTU,不同的网络类型有不同的MTU。

ARP数据报格式
在网络通信时,源主机的应用程序知道目的主机的IP地址和端口号,却不知道目的主机的硬件地址,而数据包首先是被网卡收到再去处理上层协议的,如果接收到的数据包的硬件地址与本主机不符,就直接丢弃,因此在通讯前必须获得目的主机的硬件地址。ARP协议就起到这个作用。

源主机发送ARP请求,询问地址是192.168.0.1的主机的硬件地址是多少”,并将这个请求 ⼴广播到本地⽹网段(以太网帧首部的硬件地址填FF:FF:FF:FF:FF:FF表⽰示⼴广播),目的主机接收到 ⼴广播的ARP请求,发现其中的IP地址与本机相符,则发送⼀一个ARP应答数据包给源主机,将自己的硬件地址填写在应答包中。
每台主机都维护一个ARP缓存表,可以⽤用arp -a命令查看。缓存表中的表项有过期时间(⼀一 般为20分钟),如果20分钟内没有再次使⽤用某个表项,则该表项失效,下次还要发ARP请求来获得 ⽬目的主机的硬件地址。
这里写图片描述

ARP的请求和应答过程:
这里写图片描述
上述例子的源主机和目的主机是在同一个网段的。

编写ARP脚本:

#!/bin/bashi=1count=0while [ $i -le 254 ]do   if [ $count -gt 10 ];then     count=0  fi  ping -c1 192.168.0.$i &  let i++  let count++donewaitecho "#####################################"arp -a |grep -v incompleteecho "#####################################"

这里写图片描述