首页 技术 正文
技术 2022年11月21日
0 收藏 477 点赞 3,896 浏览 1864 个字

ARP(Address Resolution Protocol)地址解析协议,是根据IP地址获取物理地址的一个TCP/IP协议。

当在同一网络段内或同一子网内,主机发送信息时将包含目标IP地址的ARP请求广播发送到网络上的所有主机,并接收返回消息,以确定目标主机的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。

ARP提供的功能是32bit的IP地址与48bit的MAC接口地址之间的动态映射。

ARP工作过程

  TCP/IP ARP

  主机A的IP地址为172.16.1.1,MAC地址为78-51-7b-21-0f-05;主机B的IP地址为172.16.1.2,MAC地址为78-51-84-11-10-05。

  当主机A要与主机B通信时,ARP地址解析协议将主机B的IP地址172.16.1.2解析成主机B的MAC地址,以下为工作流程:

  1、根据主机A上的路由表,确定访问主机B的转发接口地址。A主机在本机ARP缓存中查询主机B IP地址对应的MAC地址。

  2、如果主机A在ARP缓存中没有找到映射,它将询问172.16.1.2对应的MAC地址,并将ARP请求帧广播到本地网络上的所有主机。源主机A的IP地址和MAC地址都包含在ARP请求帧中。本地网络上的每台主机都会收到ARP请求并检查是否与自己的IP地址匹配,如果主机发现请求的IP地址与自己的IP地址不匹配,则丢弃ARP请求包。

  3、主机B确定ARP请求中的IP地址与自己的IP地址匹配,则将主机A的IP地址和MAC地址映射添加到本机ARP缓存中。

  4、主机B将包含其MAC地址的ARP回复消息直接发送回主机A。

  5、当主机A收到从主机B发来的ARP回复消息时,会用主机B的IP和MAC地址映射更新ARP缓存。

  本机缓存是有生存期的,生存期结束后,将再次重复上面的过程,主机B的MAC地址一旦确定,主机A就能向主机B发送IP通信了。

  

ARP缓存

  ARP缓存是储存IP地址和MAC地址的缓冲区,其本质是一个IP地址与MAC地址的对应表,表中记录了网络上主机的IP地址与对应的MAC地址。当地址解析协议被询问一个已知IP地址对应的MAC地址时,先在ARP缓存中查看,若存在,就直接返回与之对应的MAC地址,若不存在,才发送ARP请求向局域网查询。

  

ARP报文格式

  TCP/IP ARP

  1、目的地址(6bit):ARP请求的目的地址,全F代表广播地址。

  2、源地址(6bit):发送ARP请求的以太网地址。

  3、帧类型(2bit):表示后面的数据类型,ARP请求和ARP应答这个值为0x0806。

  4、硬件类型(2bit):硬件地址的类型,是以太网类型时此值为1。

  5、协议类型(2bit):要映射的协议地址的类型,要对IPv4地址进行映射,此值为0x0800。

  6、硬件地址长度(1bit):MAC地址占用的长度,6字节。

  7、协议地址长度(1bit):IP地址占用的长度,4字节。

  8、操作类型OP(2bit):ARP请求(值为1)、ARP应答(值为2)、RARP请求(值为3)、RARP应答(值为4)。

  9、发送端以太网地址(6bit):发送ARP请求地址(MAC)。

  10、发送端IP地址(4bit):发送ARP请求的IP地址(IP)。

  11、目的以太网地址(6bit):接收ARP请求地址(MAC)。

  12、目的IP地址(4bit):接收ARP请求的IP地址(IP)。

ARP实例(分析):

  1、此次测试环境,我选择在我们的局域网中用真机进行的测试,为了能还原ARP协议在真实的网络环境中,整个请求与应答的全过程。

   2、为了测试ARP协议,请求的主机IP是243,应签主机IP是1,当IP是243的主机向局域网发ARP Request请求时:

  TCP/IP ARP

  3、当IP是1的主机回应IP是243的主机发ARP Response回应时:

  TCP/IP ARP

  总结:在window 7环境下,发ARP Request请求时,发送的数据包长是42字节,发ARP Response回应时,发送的数据包长是60字节。为何不是TCP/IP模块中对以太网最小帧64字节的定义呢?

  1、发送时是42字节,并未补18个字节的空值,也没有4字节的FCS值。

  2、回复时是60字节,有18个字节的空值,没有4字节的FCS值。

  猜想,当数据包发送与回复时,抓包软件抓取的数据包帧长度并未与以太网最小帧长64字节匹配,是网卡做了优化?

    

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:8,918
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,444
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,255
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,069
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,702
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,741