ARP协议工作原理

ARP协议可以完成任意网络地址到任意物理地址的转化,本次主要讲解IP网络地址到以太网(MAC地址)地址的转化。ARP的工作原理:主机向自己所在的网络广播一个ARP请求,该请求包含目标机器的网络地址。该网络中的其他机器都会收到这个ARP请求,但只有包含目标网络地址的机器会回应这个ARP请求,并且回应的信息中包含目标的物理地址。

  1. 以太网ARP请求/应答报文详解

以太网ARP请求/应答报文格式如下图所示:

硬件类型 协议类型 硬件地址长度 协议地址长度 操作 发送端以太网地址 发送端IP地址 目的端以太网地址 目的端IP地址
2字节 2字节 1字节 1字节 2字节 6字节 4字节 6字节 4字节

以太网ARP请求/应答报文各字段介绍:

  • 硬件类型字段定义物理地址的类型,MAC地址使用1来表示。
  • 协议类型字段表示要映射的协议地址类型,IP地址使用0x800表示。
  • 硬件地址长度和协议地址长度,顾名思义,代表他们由几个字节来表示。以太网类型的硬件地址长度需要6个字节来表示,IP(V4)类型的协议地址长度需要4个字节来表示。
  • 操作字段指出4种操作类型:ARP请求(值1)、ARP应答(值2)、RARP请求(值3)、RARP应答(值4)。
  • 最后4个字段指定通信双方的以太网地址与IP地址。发送方需要指定除了目的端的以太网地址外的其他三个地址,从而构建出ARP请求并发送出去。接受端发送ARP请求的目的端IP地址是自己,就将自己的以太网地址填充到里面,并且交换发送端与目的端的以太网地址和IP地址,将操作字段的值设置为2并发送出去。

    由上表可知,ARP报文的长度为28字节。如果再加上以太网帧的头部与尾部的18个字节,则一个携带ARP请求/应答包的以太网帧的长度为46个,字节。不过有些要求以太网帧的数据部分的长度不低于46个字节,所以ARP请求/应答包将增加一些填充字节,以满足该要求。在这种情况下,一个携带ARP请求/应答的以太网帧的长度为64个字节。

2. ARP高速缓存的查看和修改

通常ARP会维护一个高速缓存,其中保存着经常访问(例如网关地址)以及最近访问的机器的IP地址到物理地址的映射。这样避免了重复的ARP请求,大大提高了发送数据包的速度。

Linux可以使用arp命令来查看和修改ARP高速缓存。例如:我的Ubuntu在某一时刻(注意:ARP高速缓存是动态变化的)的ARP高速缓存内容如下(命令arp -a)

第一行描述的是本机在docker0上面的IP地址与MAC地址,第二行描述的是本机在eth0上面的IP地址与MAC地址。下面两条命令分别是删除和添加一条ARP高速缓存项

$sudo arp -d 192.168.48.254                                        #删除ARP缓存项

$sudo arp -s 192.168.48.254 00:50:56:e6:2d:1f                      #添加ARP缓存项

3. 使用tcpdump观察ARP通信过程

为了清楚地了解ARP的通信过程,我们从本机上使用telnet命令登录到docker0的echo服务(已开启echo服务),并且使用tcpdump抓取两个测试机器交换的以太网帧,具体操作如下所示:

$sudo arp -d 172.17.0.2                                                                #清楚ARP缓存中的docker0的缓存项

$sudo tcpdump -i docker0 -ent '(dst 172.17.0.2 and src 172.17.0.1) or (dst 172.17.0.1 and src 172.17.0.2)'   #开始抓包

$telnet 172.17.0.2 echo                                                                #在新的终端上面输入该命令

在执行telnet命令之前,应该先使用arp -d 命令清除arp缓存区。否则的话,ARP通信将不被执行,我们也就无法获得包含ARP的以太网帧。tcpdump抓取的众多数据包中,只有最靠前的两个与ARP通信有关系,现将内容列举到下面:

1. 02:42:56:39:22:6e > ff:ff:ff:ff:ff:ff, ethertype ARP (0x0806), length 42: Request who-has 172.17.0.2 tell 172.17.0.1, length 28

2. 02:42:ac:11:00:02 > 02:42:56:39:22:6e, ethertype ARP (0x0806), length 42: Reply 172.17.0.2 is-at 02:42:ac:11:00:02, length 28

由tcpdump抓取的数据包本质上还是以太网帧,我们通过该命令的众多选项来控以太网帧制帧的过滤(比如:使用dst与src来指定目标端的IP地址与源端的IP地址)和显示(使用 -e来显示以太网帧的头部信息)

第一个以太网帧数据包中,ARP的源端的物理地址是02:42:56:39:22:6e,目标端的物理地址是ff:ff:ff:ff:ff:ff,这是以太网的广播地址,用来表示整个LAN。该LAN上的所有机器都会收到并处理这样的帧。0x0806是以太网帧头部的类型字段的值,它表示分用的模块是ARP模块。该以太网帧的长度是42个字节,其中数据部分的长度是28个字节。Request 表示这是一个ARP请求。“who-has 172.17.0.2 tell 172.17.0.1”表示本机要查询的docker0的IP地址。

第二个以太网帧数据包中,ARP的源端的物理地址是02:42:ac:11:00:02,目标端的物理地址是02:42:56:39:22:6e。Reply表示这是一个ARP应打包。“172.17.0.2 is-at 02:42:ac:11:00:02”表示目标机器报告其物理地址。

原文地址:http://blog.51cto.com/13813797/2155946

时间: 2024-10-10 00:49:49

ARP协议工作原理的相关文章

TCP/IP协议工作原理简述

TCP/IP协议工作原理简述 Table of Contents 1 概要 2 应用层 3 传输层 4 网络层 5 链路层 1 概要 协议是什么?协议是一组为完成特定需求或功能而定义的标准通讯格式.协议是服务于具体需求或功能的,它不能独立存在. 制定TCP/IP协议的目的是为了解决主机互联以及互联的主机上的应用通讯的问题.TCP/IP协议共有四层:应用层.传输层.网络层.链路层.应用层实际就是我们的应用程序,对于非具体应用而言这一层的协议是未定义的,需要我们自己根据我们具体的业务模型来制定.传输

TCP/IP 协议工作原理与Linux系统下调优

TCP/IP建立连接的三次握手过程: 建立TCP连接共需要三个packet Client--> syn=1,ack=0,fin=0 -->  Server Client<--  syn=1,ack=1,fin=0 <--  Server Client-->  syn=0,ack=1,fin=0 -->  Server TCP/IP关闭连接的四个过程: 关闭TCP连接需要四个packet: Client-->  FIN  -->  Server Client&

ARP协议工作流程

地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议.主机发送信息时将包含目标IP地址的ARP请求广播到网络上的所有主机,并接收返回消息,以此确定目标的物理地址:收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源.地址解析协议是建立在网络中各个主机互相信任的基础上的,网络上的主机可以自主发送ARP应答消息,其他主机收到应答报文时不会检测该报文的真实性就会将其记

http协议工作原理(转)

WWW是以Internet作为传输媒介的一个应用系统,WWW网上最基本的传输单位是Web网页.WWW的工作基于客户机/服务器计算模型,由Web 浏览器(客户机)和Web服务器(服务器)构成,两者之间采用超文本传送协议(HTTP)进行通信.HTTP协议是基于TCP/IP协议之上的协议,是Web浏览器和Web服务器之间的应用层协议,是通用的.无状态的.面向对象的协议. HTTP协议的作用原理包括四个步骤: (1) 连接:Web浏览器与Web服务器建立连接,打开一个称为socket(套接字)的虚拟文件

HTTP协议工作原理

HTTP简介        超文本传输协议(HTTP:Hypertext Transport Protocol)是万维网应用层的协议,它通过两个程序实现:一个是客户端程序(各种浏览器),另一个是服务器 (常称Web服务器).这两个通常运行在不同的主机上,通过交换报文来完成网页请求和响应.报文简介        报文是一个数据块,包括要传送的数据,也包括必要的附加信息,像目的IP.目的端口.源地址.源端口.数据长度.所用协议.加密等,它定义了报文的结构和客户与服务器之间交换报文的规则. 报文可简单

RIP协议工作原理

RIP协议是基于Bellham-Ford(距离向量)算法,此算法1969年被用于计算机路由选择,正式协议首先是由Xerox于1970年开发的,当时是作为Xerox的“Networking Services(NXS)”协议族的一部分.由于RIP实现简单,迅速成为使用范围最广泛的路由协议. 路由器的关键作用是用于网络的互连,每个路由器与两个以上的实际网络相连,负责在这些网络之间转发数据报.在讨论 IP 进行选路和对报文进行转发时,我们总是假设路由器包含了正确的路由,而且路由器可以利用 ICMP 重定

http协议工作原理(精简)

HTTP协议进行通信时,需要有客户端(即终端用户)和服务端(即Web服务器),在Web客户端向Web服务器发送请求报文之前,先要通过TCP/IP协议在Web客户端和服务器之间建立一个TCP/IP连接 在浏览器输入网址进行访问 首先进行DNS解析 客户端浏览器将端口号(默认80)从访问地址(URL)中解析出来. Web浏览器通过解析后的IP地址及端口号于Web服务器之间建立一条TCP连接 建立连接后,客户机发送一个请求报文给服务器,请求报文的格式为:统一资源标识符(URL).协议版本号,后边是MI

TCP/IP协议族——ARP、DNS工作原理及实例详解

 测试网络: 通过VMware创建了两个虚拟机,并利用桥接方式联网以此模拟两台主机连接一台路由器的情况.测试网络图如下: ARP协议工作原理 ARP协议能实现任意网络地址到任意物理地址的转换,这里仅讨论IP地址到以太网地址(MAC地址)的转换.其工作原理是:主机向自己所在网络广播一个ARP请求,该请求包含目标机器的网络地址.此网络上的其他机器都将接收到这个请求,但只有被请求的目标机器会回应一个ARP应答,其中包含自己的物理地址. 以太网ARP请求/应答报文 以太网ARP请求/应答报文格式如下

Lvs原理及部署之ARP协议

1.什么使ARP协议 ARP协议,全称"Address Resolution Protocol" ,中文名是地址解析协议,使用ARP协议可实现通过IP地址获得对应的物理地址(MAC地址). 在TCP/IP的网络环境下,每个联网的主机都会被分配一个32位的IP地址,这种互联网地址是在网际范围标识主机的一种逻辑地址.为了让报文在物理网络上传输,还必须要知道对方目的主机的物理地址(MAC)才行.这样就存在把IP地址转换成物理地址的地址转换的问题. 我们以以太网环境为例说明,为了正确地向目的主