ARP地址解析协议:为IP地址到相应的硬件地址之间提供动态映射。


下面图为例说明地址解析协议的详细工作流程。


结合图中的序号进行说明。


client通过FTP协议连接server时,首先解析器会把主机名转换为IP地址。这个过程既能够使用DNS服务,又能够使用本机上的hosts文件进行转换,hosts文件通经常使用于补充或代替网络中DNS的功能。


依据目的IP请求建立TCP连接。


TCP连接建立后,发送端向接收端发送一个IP数据报。


数据报交由ARP模块进行地址转换,ARP模块把32位IP地址转换为48位以太网地址。

ARP模块以广播的方式发送一个ARP请求到本网络的全部主机上。ARP请求中包括目的主机的IP地址,表示“假设你是这个IP地址的拥有着,请回答你的硬件地址”。

目的主机的ARP模块收到这个请求后,返回一个ARP应答告诉对方自己的硬件地址。

发送端收到接收端的硬件地址后,就行通过以太网驱动程序发送数据了。


这里有两点须要注意:
  • 以太网驱动程序要发送数据,并须要知道目的端的硬件地址(通常是以太网地址),IP地址对它来说是无法识别的。也就是说,链路层间通信使用硬件地址,而链路层之上的通信则採用IP地址。
  • 上述过程是目的主机在同一个网络中。假设目的主机不在本网络中,那么就须要通过IP路由选择把数据发到外网了。这时,ARP解析到的硬件地址就会是下一跳路由器的硬件地址。

以下来看看ARP的分组格式:



下面是用Wireshark抓取的数据,以太网首部例如以下:



目的地址全为1表示发送的是广播,同一以太网上的全部接口都可以接收到此广播数据帧。类型字段0x0806表示ARP请求或ARP应答,究竟是请求还是应答,要依据ARP包内的某个标识区分。

ARP请求包例如以下:



以下逐一分析每一个字段。

2字节硬件地址表示硬件地址类型,如以太网、令牌环网等。这里的值为1,表示硬件地址为以太网地址。

2字节协议类型表示要映射的协议地址类型。这里的值为0x0800,表示IP地址。

1字节硬件地址长度,单位为字节。这里的值为6,表示48位以太网地址。

1字节协议地址长度,单位为字节。这里的值为4,表示32位IP地址。

2字节op字段指出四种操作类型:
  • 1表示ARP请求
  • 2表示ARP应答
  • 3表示RARP请求
  • 4表示RARP应答
究竟是请求还是应答就是通过这个字段来区分的。

6字节发送端以太网地址。

4字节发送端IP地址。

6字节目的端以太网地址。注意,ARP的目的就是获得对方的硬件地址,发送端在发送ARP请求时显然还不知道目的端的硬件地址为多少,所以这个字段所有填充0.

4字节目的端IP地址。

当目的端收到发给自己的ARP请求后,它会做例如以下工作:
  • 将上述目的端以太网地址用自己的硬件地址填充
  • 交换发送和接受的方向
  • op字段改为2,表示ARP应答
  • 发送

參考:
《TCP/IP具体解释》 P38-P41.

ARP地址解析协议的更多相关文章

  1. ARP地址解析协议原理

    概述 网络层以上的协议用IP地址来标识网络接口,但以太数据帧传输时,以物理地址来标识网络接口.因此我们需要进行IP地址与物理地址之间的转化. 对于IPv4来说,我们使用ARP地址解析协议来完成IP地址 ...

  2. 《TCP/IP详解 卷1:协议》第4章 ARP:地址解析协议

    4.1 引言 本章我们要讨论的问题是只对TCP/IP协议簇有意义的IP地址.数据链路如以太网或令牌环网都有自己的寻址机制(常常为48 bit地址),这是使用数据链路的任何网络层都必须遵从的.一个网络如 ...

  3. ARP:地址解析协议

    ARP是地址解析协议,简单语言解释一下工作原理.1:首先,每个主机都会在自己的ARP缓冲区中建立一个ARP列表,以表示IP地址和MAC地址之间的对应关系.2:当源主机要发送数据时,首先检查ARP列表中 ...

  4. arp:地址解析协议(Address Resolution Protocol)(来自维基百科)

    地址解析协议(Address Resolution Protocol),其基本功能为通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。它是IPv4中网络层必不可少的协议,不过在I ...

  5. 【网络协议】ARP地址解析协议

    地址解析协议ARP 在以太网协议中规定,同一局域网中的一台主机要和另一台主机进行直接通信,必须要知道目标主机的MAC地址.而在TCP/IP协议中,网络层和传输层只关心目标主机的IP地址.这就导致在以太 ...

  6. 【网络基础】ARP地址解析协议

    ARP(Address Rssolution Protocol) 地址解析协议 用于将IP地址解析为MAC地址. MAC地址是设备的物理地址,是被分配给每一个网络接口卡的全球唯一序号. 全球唯一:理论 ...

  7. 网络协议抓包分析——ARP地址解析协议

    前言 计算机之间可以相互通信的前提是要知道对方的地址,才可以发送信息给其他计算机,就像别人要联系你也得先知道你的电话号码一样.这里的地址因为网络分层的原因就包括IP地址和MAC地址(即网卡地址.硬件地 ...

  8. 第二章ARP——地址解析协议

    本章我们要讨论的问题是只对 T C P / I P协议簇有意义的I P地址.数据链路如以太网或令牌环网都有自己的寻址机制(常常为 48 bit地址),这是使用数据链路的任何网络层都必须遵从的.一个网络 ...

  9. 第四章:ARP 地址解析协议

    网络接口有一个硬件地址,48bit的值,在硬件层次上进行的数据帧交换必须有正确的接口地址.tcp/ip有自己的地址,32bit的IP地址. 但是知道主机的IP地址并不能让内核发送一帧数据给主机.内核( ...

随机推荐

  1. C#复习三(Day 22)

    哈哈,又到了总结的时间了.今天还是在继续复习C#的基础语法.这次总结主要以一下小程序为主. Split()的运用 123-456---789-----123-2把类似的字符串中重复符号去掉,得到123 ...

  2. objective-C学习笔记(五)函数成员:初始化器和析构器

    初始化器:init 对象初始化器: -(id)init 可以重载多个. 类型初始化器: +(id)initialize只能有一个. 对象初始化器: 初始化对象实例时,init通常和alloc(手动内存 ...

  3. Html中截切文章内容,造成标签不全的问题

    把标签全部进行替换 ) { string strText = System.Text.RegularExpressions.Regex.Replace(html, "<[^>]+ ...

  4. Nmon的安装及使用

    1.安装软件 1) 用root用户登录系统,建立目录:#mkdir  /nmon 2) 通过FTP将下载的nmon工具上传至服务器 192.168.40.212目录/nmon下. 3) 修改tar包权 ...

  5. MySql 日期转字符串

    1.date_format 日期转字符串 select date_format(now(),'%Y-%m-%d %H:%i:%s'); 2.str_to_date 字符串转日期 select str_ ...

  6. python初探-collections容器数据类型

    collections容器数据类型是对基本数据类型的补充,简单介绍下计数器.有序字典.默认字典.可命名元祖.队列. 计数器(Counter) Counter是对字典类型的补充,用于追踪值得出现次数 c ...

  7. windows 7 里面的iis在哪里

    我的电脑------控制面板-----卸载程序------打开或关闭WINDOWS功能-----INTERNET信息服务------WEB管理工具下就能找到 给你找图你看看 向左转|向右转

  8. 关于Qt信号与槽机制的传递方向性研究(结论其实是错误的,但是可以看看分析过程)

    最近由于项目的需求,一直在研究Qt.信号与槽机制是Qt的一大特色,该机制允许两者间传递参数,依次来实现对象间的通信.这个参数会分别存在于信号的参数列表和槽函数的参数列表中.需要注意的是,若将槽函数绑定 ...

  9. OpenCV之Python学习笔记

    OpenCV之Python学习笔记 直都在用Python+OpenCV做一些算法的原型.本来想留下发布一些文章的,可是整理一下就有点无奈了,都是写零散不成系统的小片段.现在看 到一本国外的新书< ...

  10. 汇编语言学习——第二章 寄存器(CPU工作原理)

    1.一个典型的CPU由运算器.控制器.寄存器等器件组成,这些器件靠内部总线相连. 区别: 内部总线实现CPU内部各个器件之间的联系. 外部总线实现CPU和主板上其它器件的联系. 8086CPU有14个 ...