网络数据链路层-MAC帧(2)

云掣YunChe10个月前技术文章743

3.ARP协议

地址解析协议(Address Resolution Protocol,ARP)协议,是根据IP地址获取MAC地址的一个TCP/IP协议。


3.1为什么有ARP协议?

ARP 协议建立了主机 IP 地址 和 MAC 地址 的映射关系。


在网络通讯时,源主机的应用程序知道目的主机的 IP 地址和端口号,却不知道目的主机的硬件地址(MAC地址);

数据包首先是被网卡接收到再去处理上层协议的,如果接收到的数据包的硬件地址与本机不符,则直接丢弃;

因此在通讯前必须获得目的主机的硬件地址。

3.2ARP的定位

在TCP/IP四层模型中,网络协议栈自顶向下分为应用层、传输层、网络层和数据链路层。


其中应用层最典型的协议有HTTP、HTTPS和DNS等,传输层最典型的协议有TCP和UDP,网络层最典型的协议就是IP,数据链路层最典型的协议就是MAC帧协议,但实际数据链路层还有两种协议叫做ARP和RARP。

603d3562ced2a3dcfecbc1692e0b2be6.png



ARP、RARP和MAC帧协议虽然都属于数据链路层的协议,但ARP协议和RARP协议属于MAC帧的上层协议。


也就是说,MAC帧的上层协议不一定就直接是网络层的协议,MAC帧的上层协议有可能也属于数据链路层的协议,但就是位于MAC帧的上层。


网络层当中的ICMP协议和IGMP协议,这两个协议虽然与IP协议都属于网络层,但这两个协议属于IP的上层协议。


3.3ARP协议工作流程

c8d9fdc7d782e961a89ffd32227c46ca.png


源主机发出 “ARP请求”,询问“IP 地址是 172.20.1.2 的主机的硬件地址是多少”,并将这个请求广播到本地网段(以太网帧首部的硬件地址填 FF:FF:FF:FF:FF:FF 表示广播)。

目的主机接收到广播的 ARP请求,发现其中的 IP 地址与本机相符,则发送一个 “ARP应答” 数据包 给源主机,将自己的硬件地址填写在应答包中;

每台主机都维护一个 ARP 缓存表,可以用arp -a命令查看。 缓存表中的表项有过期时间(一般为 20 分钟),如果 20 分钟内没有再次使用某个表项,则该表项失效,下次还要发 ARP 请求来获得目的主机的硬件地址。

3.4ARP数据格式

c3fbaa40396220af3d324a936a321e62.png


硬件类型指链路层的网络类型,1为以太网。

协议类型指要将什么类型的地址转换为MAC地址,0800为IP地址。

硬件地址长度对于以太网地址为6字节,因为MAC地址是48位的,该字段如果硬件类型为以太网,则填6。

协议地址长度对于IP地址为4字节,因为IP地址是32位的,该字段如果协议类型为IP,则填4。

op字段为1表示ARP请求,op字段为2表示ARP应答。

从ARP的数据格式也可以看出,ARP是MAC帧协议的上层协议,ARP数据格式中的前3个字段和最后一个字段对应的就是以太网首部,但由于ARP数据包的长度不足46字节,因此ARP数据包在封装成为MAC帧时还需要补上18字节的填充字段。


所以根据MAC帧中的类型字段,可以决定将该MAC帧交付给上层的哪一个协议:IP协议、ARP协议还是RARP协议。


4.RARP协议

RARP(Reverse Address Resolution Protocol,反向地址转换协议),是根据MAC地址获取IP地址的一个TCP/IP协议。


也就是说,某些情况下我们可能只知道一台主机的MAC地址,此时要得知该主机的IP地址就可以使用RARP协议。


理论上来说,RARP协议一定比ARP协议简单,因为既然我们已经知道一台主机的MAC地址了,那么我们就已经可以直接向给主机发送消息了,因此我们可以直接发消息询问对方的IP地址就行了。


相关文章

lru_cache 缓存

Python 语法: @functools.lru_cache(maxsize=128, typed=False)Least-recently-used 装饰器。Iru 最近最少使用、cache 缓存...

linux时间同步工具Chrony的配置和使用

linux时间同步工具Chrony的配置和使用

一、chrony简介       chronony是网络时间协议(NTP)的通用实现。它可以同步系统时钟与NTP服务器,chronyd包含两个程序,chronyd是一个守护进程,chronyc是一个命...

Nginx性能优化

Nginx性能优化

       前言:Nginx作为高性能web服务器,即使不特意调整配置参数也可以处理大量的并发请求。 以下的Nginx配置参数作为参考,具体需根据线上业务情况进行调整。一、worker进程work...

大数据自动化巡检系统使用说明

大数据自动化巡检系统使用说明

1. 大数据自动化巡检系统首页显示巡检集群数量、巡检模版、巡检指标、当日巡检情况等,如下图所示2. 自动化巡检提供基础配置,提供给两种巡检集群对接方式,一种是可以对接外部集群,通过系统接口调用,一种是...

scylladb简单命令介绍

一、cql 命令查看版本SHOW VERSION查看连接的数据库地址SHOW HOST批量执行.cql文件中的命令SOURCE '/home/thobbs/commands.cql'开启和关闭命令追踪...

单节点Kafka部署并开启Kerberos配置

安装Kerberosserver节点安装kerberos相关软件yum install -y krb5-server krb5-workstation krb5-libs修改配置文件krb5.conf...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。