ARP地址解析协议原理
来源:互联网 发布:mac flac转mp3 编辑:程序博客网 时间:2024/05/19 03:25
理解ARP协议
ARP地址解析协议,是一个很重要的协议。当一个数据帧经过多次路由到达目的网络时,路由器只能知道其数据帧中的目的IP地址,而不知目标主机的硬件地址(网络层使用的是IP地址,但是在实际网络链路上传送数据帧时,最终必须使用该网络的硬件地址),此时需要目的主机的硬件地址,就要使用ARP来获取到对应IP地址主机的硬件地址。
注意:ARP是解决同一局域网中主机或者路由器的IP地址和硬件地址的映射问题,在每一台主机中都有一个ARP高速缓存(ARP cache),里面存储本主机所知道本局域网中其他主机的IP地址与硬件地址的映射表,那么主机是怎样获取到他们之间的映射呢?在此之前先了解一下ARP数据报。
ARP数据报:格式如下
局域网中一台主机获取已知一台IP地址的主机的硬件地址过程:
当主机A向本局域网上的主机B发送IP数据报时,先在ARP高速缓存中查找B主机IP所对应的硬件地址,要是找到了,就将此硬件地址写入到MAC帧首部的目的地址中,然后通过局域网发送;要是没有找到,那么主机A会运行ARP,将会按照以下步骤找出主机B的硬件地址。
①主机A想局域网中广播发送一个ARP请求分组,广播的主要内容是:“我的IP地址是IPA,我的硬件地址是MACA,我要知道IP地址为IPB的主机的硬件地址”。
此时局域网中的主机都会收到这样的一个数据帧。
②链路层在接收到这个数据帧之后将有效载荷和报头分离之后,将有效载荷交付给ARP协议进行处理(因为MAC帧首部的帧类型为ARP协议)。
③在所有局域网中的主机获得链路层交付的有效载荷后,它们会对其进行处理,发现其中的接收端IP地址与自己的IP地址不同,则会将该数据报丢弃,不做处理。只有B主机会发现接收端IP地址与自己的IP地址相同,此时B主机会向A主机单播一个响应分组(因为通过A的广播,B知道了A的IP地址和硬件地址),“我的IP是IPB,我的硬件地址是MACB”。
④在主机A收到主机B的ARP响应分组后,就在ARP的告诉缓存中写入B主机的IP地址到硬件地址的映射。
在学习到这些知识之后我们可以做这样一些实验,编写一个脚本抓取和自己电脑处于同一局域网的其他主机的MAC地址。
原理很简单,一个C类的地址最多有254台主机,所以我们可以暴力的去ping每个IP,我们就可以获取到连接在本局域网中的其他主机的MAC地址。
#!/bin/bashnet='192.168.199.'i=1count=0while [ $i -le 254 ]do if [ $count -eq 20 ];then count=0 sleep 1 fi ping -c1 $net$i & let i++ let count++donewaitecho '############################################'arp -a | grep -v 'incomplete'echo '############################################'
在我电脑上成功抓取到其他主机的硬件地址。
注意:如果是使用VM虚拟机,要将网络适配器改为桥接模式。
阅读全文
0 0
- ARP地址解析协议原理
- ARP地址解析协议原理
- ARP 地址解析协议原理及应用
- ARP地址解析协议工作原理
- ARP:地址解析协议
- ARP:地址解析协议
- 地址解析协议(ARP)
- ARP地址解析协议
- ARP:地址解析协议
- ARP:地址解析协议
- 地址解析协议 ARP
- 地址解析协议(ARP)
- ARP地址解析协议
- ARP:地址解析协议
- arp(地址解析协议)
- ARP:地址解析协议
- 地址解析协议(ARP)
- arp 地址解析协议
- const笔记
- 计蒜客 管家的忠诚(二) 线段树(水题续)
- Android中轻松使用greenDao实现数据持久化
- linux下安装GraphicsMagick
- java中10大常见异常
- ARP地址解析协议原理
- 左程云_算法与数据结构 — 链表问题 — 02在单链表和双链表中删除倒数第K个节点
- 学习Linux命令(46)
- 面试题34:丑数
- Spring学习笔记之使用Spring发送Email
- Java面试集锦
- iOS 崩溃报告符号化
- Python简介的小语法
- 【JVM】Java内存模型