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

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

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

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报文格式

  

  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请求时:

  

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

  

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

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

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

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

    

TCP/IP ARP的更多相关文章

  1. TCP/IP——ARP与RARP简记

    ARP(Address Resolution Protocol):ARP为IP地址到对应的硬件地址(MAC)之间提供动态映射.这个过程是自动完成的,一般应用程序用户和系统管理员不必要关心. ARP高速 ...

  2. [TCP/IP]ARP与RARP的总结

    一. 总述 简单的说,ARP协议就是将IP地址转换为MAC物理地址:而RARP,就是ARP的逆向,也就是将MAC物理地址转换为IP地址.看起来这两个协议是完全对称的,但发明这两个协议的初衷基本上没有什 ...

  3. TCP/IP||ARP/RARP

    1.ARP ARP(地址解析协议)主要为IP地址到对应的硬件提供动态映射,过程是自动完成 在网络接口有一个硬件地址(48 bit),在硬件层次上的数据帧交换必须有正确的接口地址,但是32 bit 的I ...

  4. 《TCP/IP 详解 卷一》读书笔记 -----第四章 ARP

    1.一个物理层的网络,例如以太网,可以同时被多个不同的网络层所使用.例如网络中的一些主机使用TCP/IP协议,其他主机使用其他的网络协议. 2.设备驱动软件从不关心IP数据报中的目的IP地址.这也是为 ...

  5. 《TCP/IP详解卷1:协议》第4章 ARP:地址解析协议-读书笔记

    章节回顾: <TCP/IP详解卷1:协议>第1章 概述-读书笔记 <TCP/IP详解卷1:协议>第2章 链路层-读书笔记 <TCP/IP详解卷1:协议>第3章 IP ...

  6. TCP/IP详解学习笔记(4)-- ARP 和 RARP

    1.ARP      地址解析协议(Address Resolution Protocol,ARP)是在仅知道主机的IP地址时确地址解析协议定其物理地址的一种协议.      在TCP/IP协议中,A ...

  7. TCP/IP详解学习笔记(3)-IP协议,ARP协议,RARP协议

    把这三个协议放到一起学习是因为这三个协议处于同一层,ARP协议用来找到目标主机的Ethernet网卡Mac地址,IP则承载要发送的消息.数据链路层可以从ARP得到数据的传送信息,而从IP得到要传输的数 ...

  8. tcp/ip 卷一 读书笔记(5)arp和rarp 同网段和不同网段之间的通信过程

    arp和rarp 同网段和不同网段之间的通信过程 IPv6中已经没有arp rarp协议,所以这里都是IPv4. 链路层使用以太网地址来确定目的地址,应用则常使用ip地址通信 arp协议是指从ip地址 ...

  9. TCP/IP协议——ARP详解

    本文主要讲述了ARP的作用.ARP分组格式.ARP高速缓存.免费ARP和代理ARP. 1.学习ARP前要了解的内容 建立TCP连接与ARP的关系 应用接受用户提交的数据,触发TCP建立连接,TCP的第 ...

随机推荐

  1. linux磁盘阵列 逻辑卷管理器

    Difficult doesn't mean impossible.It simply meansthat you have to work hard.困难并不代表不可能,它仅仅意味着你必须努力奋斗. ...

  2. CS DevExpress程序启动(主窗体初始化优化)

    在进入程序主界面时,某些情况下主界面的初始化会消耗很长时间,例如一些复杂的业务系统,可能会从服务器上下载最新的数据进行展示等等,在这种情况下,我们可以采用一个进度界面展示“系统正在加载...”,等主界 ...

  3. Redis数据类型List

    Redis的List是通过Linked List(链表)来实现的String集合,所以插入数据的速度很快.但是缺点就是在数据量比较大的时候,访问某个数据的时间可能会很长,但针对这种情况,可以使用Sor ...

  4. 利用Graphviz绘制逻辑关系依赖图

    说明:在很多情况下,需要将复杂且有些规律的代码整理成逻辑片段,这个时候就需要画图,很多时候图比代码更加直观 Graphviz是一个比较好的绘图工具,可以通过简单的代码绘制出复杂的逻辑图,且其代码就像平 ...

  5. 西北地区打不开github的解决办法~

    泱泱我大西北,github打不开,的确痛苦的. http://ipaddress.com/ip_lookup/ 先查github.com 可能存在打不开的情况~ 随便找一个web在线代理,就可以查到了 ...

  6. 前端开发-1React-1概述

    React 起源于 Facebook 的内部项目,因为该公司对市场上所有 JavaScript MVC 框架,都不满意,就决定自己写一套,用来架设Instagram 的网站.做出来以后,发现这套东西很 ...

  7. Python学习(四十)—— Djago之认证系统

    一.COOKIE 与 SESSION 概念 cookie不属于http协议范围,由于http协议无法保持状态,但实际情况,我们却又需要“保持状态”,因此cookie就是在这样一个场景下诞生. cook ...

  8. 最简单的SQLserver,发布订阅教程,保证一次就成功

    最简单的SQLserver,发布订阅教程,保证一次就成功 发布订阅用来做数据库的读写分离,还是很好用的 当单台数据库的压力太大时,可以考虑这种方案,一主多从,主服务器的数据库只管写入,其他的数据库都是 ...

  9. 大数据项目之_15_帮助文档_NTP 配置时间服务器+Linux 集群服务群起脚本+CentOS6.8 升级到 python 到 2.7

    一.NTP 配置时间服务器1.1.检查当前系统时区1.2.同步时间1.3.检查软件包1.4.修改 ntp 配置文件1.5.重启 ntp 服务1.6.设置定时同步任务二.Linux 集群服务群起脚本2. ...

  10. WPF: 共享Grid宽度或高度的方法

    需要两个属性: 1. Grid.IsSharedSizeScope="True" 2. SharedSizeGroup=名称 <StackPanel Margin=" ...