网络中的ARP协议

    地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议。主机发送信息时将包含目标IP地址的ARP请求广播到网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。

    OSI模型把网络工作分为七层,IP地址在OSI模型的第三层,MAC地址在第二层,彼此不直接打交道。在通过以太网发送IP数据包时,需要先封装第三层(32位IP地址)、第二层(48位MAC地址)的报头,但由于发送时只知道目标IP地址,不知道其MAC地址,又不能跨第二、三层,所以需要使用地址解析协议。使用地址解析协议,可根据网络层IP数据包包头中的IP地址信息解析出目标硬件地址(MAC地址)信息,以保证通信的顺利进行。

1、硬件类型字段定义物理地址的类型,值为1表示MAC地址
2、协议类型字段表示要映射的协议地址类型,它的值为0x800,表示IP地址。
3、硬件地址长度字段和协议地址长度字段(单位是字节),对MAC地址来说长度是6,对IP(v4)地址来说长度是4。
4、操作字段指出四种操作类型(op):ARP请求:1,ARP应答:2,RARP请求:3,RARP应答:4。
5、最后四个字段指定通信双方的以太网地址和IP地址,发送端除了去填充目的端以太网地址外的其他3个字段,以构建ARP请求并发送。
由此可见,ARP请求/应答的长度为28,加上以太网帧头部和尾部的18字节,则一个ARP请求/应答的长度为46字节。有的实现要求以太网帧的数据长度最少为46字节,此时ARP的长度就是64字节。

#!/bin/bash

net='192.168.1.'
i=1#i表示IP地址的最后三位

count=0
while [ $i -le 254 ]#三位进制数最大可表示0-255,去掉0和ff剩下254个数
do
    if [ $count -eq 20 ];then#每隔20个地址ping一次,sleep1秒
    count=0
    sleep 1
    fi
    ping -c1 $net$i &
    let i++
    let count++
done

wait
echo '###################################################'
arp -a | grep -v 'incomplete'#打印所有不包含incomplete的IP地址和对应MAC地址
echo '###################################################'
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值