当前位置:网站首页>以太网 ARP
以太网 ARP
2022-08-04 05:32:00 【久违de约定】
在以太网中,一个主机和另一个主机进行通信,必须要知道目的主机的 MAC 地址(物理地址),而目的 MAC 地址的获取由 ARP 协议完成。
ARP 概述
ARP(Address Resolution Protocol),即地址解析协议,是根据 IP 地址(逻辑地址)获取 MAC 地址的 一种 TCP/IP 协议。在以太网通信中,数据是以“帧”的格式进行传输的,帧格式里面包含目的主机的 MAC 地址。源主机的应用程序知道目的主机的 IP 地址,却不知道目的主机的 MAC 地址。而目的主机的 MAC 地址直接被网卡接收和解析,当解析到目的 MAC 地址非本地 MAC 地址时,则直接丢弃该包数据,因此在通信前需要先获得目的的 MAC 地址,而 ARP 协议正是实现了此功能。
ARP 协议的基本功能是通过目的设备的 IP 地址,查询目的设备的 MAC 地址,以保证通信的顺利进行。MAC 地址在网络中表示网卡的 ID,每个网卡都需要并有且仅有一个 MAC 地址。在获取到目的 MAC 地址之后,将目的 MAC 地址更新至 ARP 缓存表中,称为 ARP 映射,下次通信时,可以直接从 ARP 缓存表中获取,而不用重新通过 ARP 获取 MAC 地址。但一般 ARP 缓存表会有过期时间,过期后需要重新通过 ARP 协议进行获取。
ARP 映射是指将 IP 地址和 MAC 地址映射起来,分为静态映射和动态映射。
静态映射指手动创建一张 ARP 表,把 IP 地址和 MAC 地址关联起来。手动绑定之后,源主机在通信之 前,就可以直接从 ARP 表中直接找到 IP 地址对应的 MAC 地址,但这样做有一定的局限性,因为 MAC 地 址可能会变化,比如:

主机 B 利用收到的 ARP 请求报文中的请求方物理地址,以单播的方式直接发送给主机 A,主机 A 将收 到的 ARP 应答报文中的目的 MAC 地址解析出来,将目的 MAC 地址和目的 IP 地址更新至 ARP 缓存表中。当再次和主机 A 通信时,可以直接从 ARP 缓存表中获取,而不用重新发起 ARP 请求报文。需要说明的是, ARP 缓存表中的表项有过期时间(一般为 20 分钟),过期之后,需要重新发起 ARP 请求以获取目的 MAC 地址。
ARP 协议通过以太网进行传输,那么必须也要按照以太网所规定的格式进行传输,我们先来介绍下以 太网的帧格式。
以太网是目前应用最广泛的局域网通讯方式,同时也是一种协议。以太网协议定义了一系列软件和硬 件标准,从而将不同的计算机设备连接在一起。我们知道串口通信单次只传输一个字节,而以太网通信是以数据包的形式传输,其单包数据量达到几十,甚至成百上千个字节。下图为以太网通过 ARP 传输单包数据的格式,从图中可以看出,以太网的数据包就是对协议的封装来实现数据的传输,即 ARP 数据位于以太网帧格式的数据段。这里只是让大家了解下以太网数据包的格式。

边栏推荐
- counting cycle
- sbl_init.asm-适合在编辑模式下看
- 【独立游戏体验计划】学习记录
- MVC自定义配置
- 分布式cache项目
- CAS无锁队列的实现
- Design and implementation of legal aid platform based on asp.net (with project link)
- 枚举和联合(自定义类型)-C语言
- JDBC第一学之进行数据库连接时出现The server time zone.....解决办法
- jdbc:mysql://localhost:3306/student?serverTimezone=CTT&useUnicode=true&characterEncoding=utf-8时报错
猜你喜欢
随机推荐
[English learning][sentence] good sentence
webrtc代码解读二:音视频播放同步过程
线程池原理
LeetCode_Nov_5th_Week
FAREWARE ADDRESS
网络通信与Socket编程概述
彻底删除MySQL教程
SFTP的用法
(位操作符)按位与、按位或、按位异或
Completely remove MySQL tutorial
bind()系统调用的用处
Detailed steps to install MySQL
LeetCode_22_Apr_2nd_Week
最全的最详细的指针讲解(C语言)
target has libraries with conflicting names: libcrypto.a and libssl.a.
LeetCode_Nov_3rd_Week
IEEE802.X协议族
Treating as key frame since WebRTC-SpsPpsIdrIsH264Keyframe is disabled 解决
arm学习-1-开发板
2022在 Go (Golang) 中使用微服务的系统课程