网络数据之ARP协议分析
来源:互联网 发布:汉语言文学 知乎 编辑:程序博客网 时间:2024/05/06 00:02
ARP 地址解析协议 用于将IP地址解析为物理地址(MAC地址)。
我们通过OSI七层模型来说明问题
由上图可见,OSI模型将网络分为了七层,而IP地址位于第三层,也就是网络层,MAC地址位于数据链路层,也就是第二层。那么以太网发送IP数据包的时候,需要首先封装第三层和第二层报头。但由于发送数据包时只知道目标IP地址,不知道其MAC地址,而又不能直接跨越第二、三层,所以需要地址解析协议。而在使用ARP协议后,计算机可以按照网络层IP数据包的头部信息,将硬件地址信息(MAC地址)对应起来,以保证通信的顺利进行。ARP协议的基本功能就是将一个已知的IP地址解析成MAC地址。
ARP协议的解析过程只使用了两种数据包:一个ARP请求和一个ARP响应:
其工作原理为:
(1) 当主机A想要给主机B发送数据时,主机A会首先在自己的本地ARP缓存表中检查与主机B相匹配的MAC地址。
(2)如果主机A在自己的缓存表中没有找到主机B相关的条目,那么它就要想办法获取主机B的MAC地址。这就需要将ARP的请求帧广播到本地网络上的所有主机中。这个请求帧含有主机A的IP地址和MAC地址,以及主机B的IP地址。网络中凡是收到请求帧的主机都会检查自己的IP地址是否与请求地址一致,如果不一致,则会丢掉该请求帧。对上图来说,主机C和主机D会丢弃主机A发送的请求帧。
(3)主机B确定ARP请求中的IP地址和自己的IP地址一致,那么就会将主机A的IP地址和MAC地址添加到本地的缓存列表中。
(4)主机B将包含有自己的MAC地址的ARP响应消息直接回复给主机A(单播)。
(5)主机A收到从主机B发来的ARP响应消息后,会将主机B的IP地址和MAC地址添加到自己的ARP缓存表中。接下来主机A就可以向主机B发送消息了。
如果想查看ARP缓存表,可以在CMD下输入ARP -a
分析ARP数据包
我们通过观察ARP请求包,在Frame帧中,可以知道该数据包的大小为42个字节。观察Ethernet发现数据包中的目的地址是ff:ff:ff:ff:ff:ff,这是一个广播地址,说明这个数据包会被广播到当前网段中的所有设备上。而这个数据包中以太网的源地址就是本机的MAC地址。
然后对ARP请求的头部进行分析。按照顺序依次为硬件类型、协议类型、硬件地址长度、协议长度、操作码(该值为1,表示这是一个ARP请求包)、源MAC地址、源IP地址、目的IP地址、目标的MAC地址未知,所以就以全0的形式显示。
ARP响应的数据包和ARP请求数据包很像,不同之处在于,用于响应的操作码(Opcode)现在是2,表明这是一个用于响应的数据包;发送方的MAC地址和IP地址变成了目标的MAC地址和IP地址;ARP请求包中的目的MAC地址和IP地址已经获取到,写入到响应包中。
免费ARP
当网络中的设备IP地址改变,网络主机中缓存的IP地址和MAC地址不在生效。那么为了防止由于映射失败造成通信错误,免费的ARP请求会被发送到网络中,强制所有收到它的设备使用新的IP以及MAC地址映射来更新缓存。通常,它发生在系统引导期间进行接口配置或者IP地址出现变化的时候。
首先我们可以看到这个数据包是以广播的形式发出的,这样这个网络的主机都能接收到它。接下来我们发现,发送方的IP地址和接收方的IP地址是一致的。网络中的其他主机收到这个数据包之后,它会让这些主机使用新的IP地址和MAC地址映射关系来更新它们的ARP缓存。由于这个ARP数据包是源主机未经请求主动发出的,并导致了目标主机更新了ARP缓存,所以称之为免费的ARP。
ARP协议是用来将IP地址解析为MAC地址的协议
主机B已经确定自己就是主机A的目标是,包含有自己的MAC地址的ARP响应消息直接通过单播的形式回复给主机A。
在请求包中当目标的MAC地址未知,所以就以全0的形式显示。
免费ARP会在它发生在系统引导期间进行接口配置或者IP地址出现变化的时候发送。
我们通过OSI七层模型来说明问题
由上图可见,OSI模型将网络分为了七层,而IP地址位于第三层,也就是网络层,MAC地址位于数据链路层,也就是第二层。那么以太网发送IP数据包的时候,需要首先封装第三层和第二层报头。但由于发送数据包时只知道目标IP地址,不知道其MAC地址,而又不能直接跨越第二、三层,所以需要地址解析协议。而在使用ARP协议后,计算机可以按照网络层IP数据包的头部信息,将硬件地址信息(MAC地址)对应起来,以保证通信的顺利进行。ARP协议的基本功能就是将一个已知的IP地址解析成MAC地址。
ARP协议的解析过程只使用了两种数据包:一个ARP请求和一个ARP响应:
其工作原理为:
(1) 当主机A想要给主机B发送数据时,主机A会首先在自己的本地ARP缓存表中检查与主机B相匹配的MAC地址。
(2)如果主机A在自己的缓存表中没有找到主机B相关的条目,那么它就要想办法获取主机B的MAC地址。这就需要将ARP的请求帧广播到本地网络上的所有主机中。这个请求帧含有主机A的IP地址和MAC地址,以及主机B的IP地址。网络中凡是收到请求帧的主机都会检查自己的IP地址是否与请求地址一致,如果不一致,则会丢掉该请求帧。对上图来说,主机C和主机D会丢弃主机A发送的请求帧。
(3)主机B确定ARP请求中的IP地址和自己的IP地址一致,那么就会将主机A的IP地址和MAC地址添加到本地的缓存列表中。
(4)主机B将包含有自己的MAC地址的ARP响应消息直接回复给主机A(单播)。
(5)主机A收到从主机B发来的ARP响应消息后,会将主机B的IP地址和MAC地址添加到自己的ARP缓存表中。接下来主机A就可以向主机B发送消息了。
如果想查看ARP缓存表,可以在CMD下输入ARP -a
分析ARP数据包
我们通过观察ARP请求包,在Frame帧中,可以知道该数据包的大小为42个字节。观察Ethernet发现数据包中的目的地址是ff:ff:ff:ff:ff:ff,这是一个广播地址,说明这个数据包会被广播到当前网段中的所有设备上。而这个数据包中以太网的源地址就是本机的MAC地址。
然后对ARP请求的头部进行分析。按照顺序依次为硬件类型、协议类型、硬件地址长度、协议长度、操作码(该值为1,表示这是一个ARP请求包)、源MAC地址、源IP地址、目的IP地址、目标的MAC地址未知,所以就以全0的形式显示。
ARP响应的数据包和ARP请求数据包很像,不同之处在于,用于响应的操作码(Opcode)现在是2,表明这是一个用于响应的数据包;发送方的MAC地址和IP地址变成了目标的MAC地址和IP地址;ARP请求包中的目的MAC地址和IP地址已经获取到,写入到响应包中。
免费ARP
当网络中的设备IP地址改变,网络主机中缓存的IP地址和MAC地址不在生效。那么为了防止由于映射失败造成通信错误,免费的ARP请求会被发送到网络中,强制所有收到它的设备使用新的IP以及MAC地址映射来更新缓存。通常,它发生在系统引导期间进行接口配置或者IP地址出现变化的时候。
首先我们可以看到这个数据包是以广播的形式发出的,这样这个网络的主机都能接收到它。接下来我们发现,发送方的IP地址和接收方的IP地址是一致的。网络中的其他主机收到这个数据包之后,它会让这些主机使用新的IP地址和MAC地址映射关系来更新它们的ARP缓存。由于这个ARP数据包是源主机未经请求主动发出的,并导致了目标主机更新了ARP缓存,所以称之为免费的ARP。
ARP协议是用来将IP地址解析为MAC地址的协议
主机B已经确定自己就是主机A的目标是,包含有自己的MAC地址的ARP响应消息直接通过单播的形式回复给主机A。
在请求包中当目标的MAC地址未知,所以就以全0的形式显示。
免费ARP会在它发生在系统引导期间进行接口配置或者IP地址出现变化的时候发送。
相关链接:http://bbs.ichunqiu.com/thread-9072-1-1.html?from=csdnJG
0 0
- 网络数据之ARP协议分析
- 网络协议之arp篇
- 实验二 网络层协议分析-2.1 ARP协议分析
- 【网络协议】ARP协议
- 网络层协议IP/ICMP/DHCP/ARP/TCP数据的捕获与分析
- 网络管理之ARP协议篇
- 网络管理之ARP协议篇
- 网络管理之ARP协议篇
- 网络协议之三(ARP、RAPR)
- 网络协议学习之ARP相关概念
- 【协议分析】ARP协议
- Wireshark实战分析之ARP协议
- 小白学网络之四_TCPIP协议之ARP协议
- linux网络编程之:接受网络中的ARP数据并分析(附C语言实现)
- 网络协议 ----ARP
- 【网络】ARP协议
- 网络中的ARP协议
- 网络---ARP协议、脚本
- POJ 2689 Prime Distance
- Python安全编程
- Java学习笔记1:JSONObject与JSONArray的使用
- Codevs 1690 开关灯 USACO
- 数据结构实验之栈七:出栈序列判定
- 网络数据之ARP协议分析
- [Cloud Computing]Patterns: Cross-Storage Device Vertical Tiering
- 使用Scapy分析pcap数据包
- uva 1451 Average 斜率优化
- Cogs 1844. [JSOI2008]最大数maxnumber
- POJ-3026-Borg Maze(BFS+最小生成树)
- 内部类,object(超类
- cdoj柱爷的下凡
- Android第三方集成之一键分享ShareSDK的使用eclipse篇