首页 > 其他分享 >ARP 协议

ARP 协议

时间:2023-03-25 12:05:48浏览次数:23  
标签:ARP 协议 字节 报文 地址 MAC IP地址


一、ARP 技术背景

1.1、网络设备有数据要发送给另一台网络设备时,必须要知道对方的网络层地址(即IP地址)。IP地址由网络层来提供,但是仅有IP地址是不够的,IP数据报文必须封装成帧才能通过数据链路进行发送。数据帧必须包含目的MAC地址。因此发送端还必须获取到目的MAC地址。通过目的IP地址而获取目的MAC地址的过程是由ARP协议来实现的。

1.2、ARP 报文格式

ARP报文分为ARP请求和ARP应答报文两种,报文长度28个字节,其中ARP报头是8个字节,包含硬件类型、协议类型、硬件地址长度、协议地址长度、操作代码5个字段。除去报头外,剩余20个字节分别表示源、目的MAC地址和IP地址。 

硬件类型

协议类型

硬件地址长度

协议地址长度

操作代码

源MAC地址

源IP地址

目的MAC地址

目的IP地址

2

2

1

1

2

6

4

6

4

值为1表示以太网地址

0x0800表示IP地址

数值为6

数值为4

1表示请求报文,2表示应答报文

如果是ARP请求报文,MAC全为0

ARP首部 8字节

ARP数据 20字节

1.3、ARP 报文的以太网封装格式

ARP是个独立的三层协议,并不需要IP协议封装,而是直接生成自己的报文,到达数据链路层后,由数据链路层协议进行封装,一般是以太网协议。封装的过程,就是在ARP报文的前面加上以太网帧头,再加上4字节的冗余校验码结尾,校验码用于检验数据传输是否出现损坏。

以太网帧头一共14个字节,包含目的MAC地址、源MAC地址、帧类型三个字段,如下所示:

以太网目的地址

以太网源地址

帧类型

硬件类型

协议类型

硬件地址长度

协议地址长度

操作代码

源MAC地址

源IP地址

目的MAC地址

目的IP地址

6

6

2

2

2

1

1

2

6

4

6

4

如果是ARP请求报文,该字段为广播MAC地址

0x0806表示是ARP协议

值为1表示以太网地址

0x0800表示IP地址

数值为6

数值为4

1表示请求报文,2表示应答报文

如果是ARP请求报文,MAC全为0

以太网首部 14字节

ARP首部 8字节

ARP数据 20字节

1.4、以太网帧最小长度是64个字节,最长1518个字节。封装后的ARP帧,实际就是一个最小以太网帧,包含14个字节的以太网帧头,28个字节的ARP报文,一共是42个字节。再加上4个字节的冗余校验码,其余18个字节用0来填充,共计64个字节。

二、ARP 原理

2.1、ARP 工作过程:主机A要发送一个数据包给主机C之前,先要获取主机C的MAC地址

ARP 协议_请求报文

2.2、ARP 请求

主机A在ARP表中找不到对应的MAC地址,则将缓存该数据报文,然后以广播方式发送一个ARP请求报文。ARP请求报文中的发送端IP地址和发送端MAC地址为主机A的IP地址和MAC地址,目标IP地址和目标MAC地址为主机C的IP地址和全0的MAC地址。由于ARP请求报文以广播方式发送,该网段上的所有主机都可以接收到该请求,但只有被请求的主机(即主机C)会对该请求进行处理

目的IP

源IP

目的MAC

源MAC

类型

10.0.0.3

10.0.0.1

00-00-00-00-00-00

00-01-02-03-04-AA

Request

ARP 协议_linux_02

抓包 

ARP 协议_网络_03

 

2.3、ARP 响应

主机C比较自己的IP地址和ARP请求报文中的目标IP地址,当两者相同时进行如下处理:将ARP请求报文中的发送端(即主机A)的IP地址和MAC地址存入自己的ARP表中。之后以单播方式发送ARP响应报文给主机A,其中包含了自己的MAC地址。

目的IP

源IP

目的MAC

源MAC

类型

10.0.0.1

10.0.0.3

00-01-02-03-04-AA

00-01-02-03-04-CC

Reply

ARP 协议_服务器_04

抓包 

ARP 协议_linux_05

 

2.4、ARP 缓存

为了避免重复发送ARP请求,产生大量的广播包,每台主机都有一个ARP缓存列表,当源主机得到 ARP 响应后,将目标主机的 IP 地址和物理地址存入本机 ARP 缓存中,并保留一定时间。下次请求 MAC 地址时,直接查询 ARP 缓存,而无须再发送 ARP 请求,从而节约了网络资源。当缓存生存期结束后,才会再次发送ARP请求报文。

主机A>arp -a

Internet Address    Physical Address    Type
10.0.0.3            00-01-02-03-04-CC   dynamic


主机C>arp -a

Internet Address    Physical Address    Type
10.0.0.1            00-01-02-03-04-AA   dynamic


主机B>arp -a

Internet Address    Physical Address    Type
10.0.0.1            00-01-02-03-04-AA   dynamic

标签:ARP,协议,字节,报文,地址,MAC,IP地址
From: https://blog.51cto.com/mshxuyi/6149126

相关文章

  • IP 协议
    一、IP协议简述 IP协议(InternetProtocol),又称之为网际协议,IP协议处于IP层工作,它是整个TCP/IP协议栈的核心协议之一,上层协议都要依赖IP协议提供的服务,IP协议负责将数据报从......
  • TCP 协议
    一、TCP 协议概念TCP即传输控制协议(TransmissionControlProtocol)是一种面向连接的、可靠的、基于字节流的传输层通讯协议。TCP是为了在不可靠的互联网上提供可靠的端到端......
  • UDP协议精华总结
    引入本文面向有一定计网基础的读者。TCP,UDP,IP可以说是计网的常客了,它们三紧密联系,以至于经常看见“TCP/IP”这样的名词,但实际上UDP也是基于IP的,但似乎很少见“U......
  • Winform/Csharp中筛选/过滤/判断点是否在面(区域)内-通过Where和Region
    场景在Redis中存储一些坐标数据,需要遍历这些坐标数据筛选出在某个区域范围内的坐标数据。System.Drawing.Region类https://learn.microsoft.com/zh-cn/dotnet/api/syste......
  • 【小沐学C#】WPF中嵌入web网页控件(WebBrowser、WebView2、CefSharp)
    1、简介使用WindowsPresentationFoundation(WPF),你可以创建适用于Windows且具有非凡视觉效果的桌面客户端应用程序。1.1WPF简介<fontcolor=blue>WPF的核心是......
  • H.265编码协议---SPS语法解析
    一、背景  最近搞Intel平台的多路复用视频解码,发现某些视频会报解码不兼容参数的报错,分析MFX的源码(如下图所示),解码实例通过对比新旧的SPS部分参数来判断是否是相同的......
  • Winform/Csharp中连接Mysql并执行指定sql,查询结果通过反射映射为对象的List
    场景Winform中连接Mysql8并查询表中数据进行显示:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/120395988在上面连接Mysql的基础上,如果需要连接Mysql并执......
  • WebService入门教程_HTTP协议学习
    实现HTTP简介WEB浏览器与WEB服务器之间的一问一答的交互过程必须遵循一定的规则,这个规则就是HTTP协议。HTTP是hypertexttransferprotocol(超文本传输协议)的简写,它是TCP/......
  • EasyCVR视频融合平台如何通过国标GB28181协议级联至海康云眸平台?
    EasyCVR视频融合平台基于云边端一体化,能实现海量视频资源的轻量化接入、汇聚与管理,平台可提供视频监控直播、云端录像、云存储、录像检索与回看、智能告警、平台级联、智能......
  • ARP协议了解
    ARP协议ARP协议​ (Address Resolution Protocol 地址解析协议):是根据IP地址获取MAC地址(物理地址)的一个TCP/IP协议。 主机发送信息时将包含目标IP地址的ARP请求广播到......