浅谈ARP协议

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/bash
i=1
count=0
while [ $i -le 254 ]
do 
  if [ $count -gt 10 ];then
     count=0
  fi
  ping -c1 192.168.0.$i &
  let i++
  let count++
done
wait
echo "#####################################"
arp -a |grep -v incomplete
echo "#####################################"

这里写图片描述

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值