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. activity的横屏和竖屏设置

    主要在清单文件这样配置: <application android:allowBackup="true" android:icon="@drawable/ic_la ...

  2. c++ primer plus 习题答案(8)

    p475.2 //头文件: class Cd{ private: char *performers; char *label; int selections; double playtime; pub ...

  3. Java判断字符串是中文还是英文

    在做开发的时候我们经常需要用到根据某个字符或者字符串来判断其是中文还是英文,从而做相应的处理,其实不难,大多数人们都是用到正则来判断的,下面小贝就给大家分享一下Java判断字符串是中文还是英文 推荐文 ...

  4. 使2个div 在一行上显示

    <!DOCTYPE html> <html> <head> <meta name="viewport" content="wid ...

  5. C-重定向

    说实话,第一次接触重定向这一个概念,感觉是那么的神奇简洁不可思议…………………… freopen() 本来应该是打开的是文件指针,但是分配了指针,使她(亲切)指向了标准输入.输出.错误流. 用 法: ...

  6. jQuery File Upload

    jQuery File Upload介绍.............................................. 2 实现基本原理......................... ...

  7. Mac OS X Mavericks or Yosemite 安装Nginx、PHP、Mysql、phpMyAdmin

    翻译:http://blog.frd.mn/install-nginx-php-fpm-mysql-and-phpmyadmin-on-os-x-mavericks-using-homebrew/ 最 ...

  8. 关于DLL搜索路径顺序的一个问题

    DLL的动态链接有两种方法.一种是加载时动态链接(Load_time dynamic linking).Windows搜索要装入的DLL时,按以下顺序:应用程序所在目录→当前目录→Windows SY ...

  9. Struts2之—集成Json插件实现Ajax

       上篇博客介绍了Struts2中自己定义结果集实现Ajax,也分析了它的缺点:这样自己定义的结果集,写死了,不能做到client须要什么数据就传什么数据:Struts2之-自己定义结果集实现aja ...

  10. 总线接口与计算机通信(四)USB外部总线(初级认识)

    USB简介   USB是英文Universal Serial BUS(通用串行总线)的缩写,是一个外部总线标准,用于规范电脑与外部设备的连接和通讯,是应用在PC领域的接口技术.USB接口支持设备的即插 ...