数据链路层协议 ——— 以太网协议

      最后更新:2022-07-23 01:32:45 手机定位技术交流文章

      文章目录

      • 链路层解决的问题
      • 以太网协议
        • 认识以太网
        • 以太网帧格式
        • 认识MAC地址
        • 理解MAC地址与IP地址的比较
        • 认识MTU
        • MUT对IP协议的影响
        • MTU对UDP协议的影响
        • MTU对TCP协议的影响
        • 通过网络传输数据
      • ARP协议
        • ARP协议的作用
        • ARP数据的格式
        • ARP议定书的工作流程

      链路层解决的问题

      在这里插入图片描述

      • IP具有通过网络从一个主机传输到另一个主机的数据的能力,但IP并不保证它能够每次向相反端的主机提供可靠的数据。因此,IP需要高级的TCP来提供可靠性保证,例如,TCP可以允许IP在数据丢失后再发送数据,最后,在TCP提供的可靠性机制下,IP能够确保数据被可靠地发送到最终主机。
      • 除了为低级IP提供一个可靠性机制外,TCP还提供一个从进程到进程的服务到顶端,这基本上是通过使用TCP或UDP在编程接口时向我们提供的过程到进程服务。
      • 但当数据通过网络传输时,需要从一个主机跳到另一个主机,一个接一个,最后,数据可以转移到目标主机,因此,向目标主机发送数据的前提是,您首先需要将数据转移到下一个直接与当前主机连接的跳跃主机,两个主机的直接连接意味着这两个主机属于同一网络段,因此,将数据转移到下一个跳跃主机实际上是域名网络通信类别的一部分,这就是链层需要解决的问题。
      • 换句话说,网络层IP提供了通过网络发送数据的能力,传输层TCP提供了数据传输的可靠性,连结层解决了两个连接主机之间的通信问题。

      以太网协议

      认识以太网

      局域网技术

      不同宽带网络使用的通信技术可能不同。常见的宽带技术有三个:

      • 以太网: 以太网是计算机宽带技术, 是最广泛使用的宽带技术之一.
      • 环形循环: 在IBM系统中,环形循环通常使用一个叫做“环形”的特殊帧,该帧在环形上连续传输,以确定节点什么时候可以发送数据包。
      • 无线LAN/WAN:无线宽带是无线网络的补充和扩展,现在是计算机网络的重要组织部分。

      虽然网络中的每个本地网络使用的通信技术可能不同,但IP保护了基础网络中的差异,而对于IP层和网络通信各方的先前协议,它们不需要关心在基础网络中具体使用哪个本地网络技术。

      • 数据在发送之前先被包起来,然后链接层在包上给出相应的本地网络标题。
      • 如果要通过网络传输数据,则需要通过路由器传输。
      • 当数据送往路由器上流时, 将相应的本地网络头条删除.
      • 当路由器将数据传输到下一个跳跃时,它还将数据封入与上下跳跃网络相符的本地网络头部。

      换句话说,网络中的路由器不断移除旧的本地网络头衔并添加新的本地网络头衔,因此当数据通过网络传输时,即使网络需要使用不同的本地网络技术交叉,它最终能够正确地完成交叉。

      以太网通信原理

      • “以太网”不是一种具体的网络,而是一种技术标准,它既包含了数据链路层的内容,也包含了一些物理层的内容。例如,以太网规定了网络拓扑结构,访问控制方式,传输速率等。
      • Ethernet的传输速度是10M、100M、100M等。

      所有以太网上的主机共享通信通道,所有权威域网上的主机在域网上的一个主机发送数据后能够接收数据。
      在这里插入图片描述

      • 例如,当权限域中的A主机想向B主机发送数据时,每个本地区域网络中的A主机可以接收A主机发送的数据,但只有B主机最终发送A主机向上的数据。
      • 局域网当中的其他主机虽然也收到了主机A发出的数据,但经过识别后发现这个数据不是发送给自己的,于是就会直接将该数据丢弃而不会向上进行交付。

      也就是说,在进行局域网通信的时候,局域网当中的所有主机都能够看到局域网中传输的任何数据,只不过每个主机都只关心发送给自己的数据罢了。

      扩展:

      • 网络捕获不仅能够捕获自己发送的信息数据,而且可以捕获他人发送的信息数据,事实上,因为在执行网络捕获时,主机将从本地网络上发送所有接收的信息数据。
      • 网络卡有一个叫做混合模式的模式,通过该模式设置的网络卡可以接收通过它的所有数据流,不管其所指明的地址是它。

      碰撞避免算法

      因为Ethernet的所有主机共享通信通道,所以只有一个主机可以同时发送数据,否则,每个主机发送的数据都会相互干涉。从系统的角度来看,每个主机共享的通信渠道是关键资源。这个关键资源只允许一个主机同时使用。

      • 对于这一问题,以太网方法不是限制每个主机首先发送数据的能力,而是直接发送数据,当每个LAN主机想发送数据时,只要发送的数据与其他主机发送的数据碰撞,则必须实现避免碰撞算法。
      • 所谓的碰撞回避算法是当主机发送导致碰撞的数据时,主机需要等待一段时间,然后再传递数据,当主机等待时,它可以让数据尽可能地分散在本地网络中。
      • 以太网通信的原理就像现实生活中开会一样,在开会过程中同一时刻只允许一个人发言,如果两个人突然同时说话,那么双方都会有礼貌的等待别人先说。

      也就是说,以太网中主机发送的数据产生碰撞后该主机会执行碰撞避免算法,所以我们说以太网是基于碰撞区和碰撞检测的局域网通信标准。

      碰撞避免算法就是主机等待一段时间后重新发送数据,因此以太网底层也有重传机制,只不过以太网的重传机制只是为了保证将数据从局域网中的一台主机发送到另一台主机。

      令牌环网

      • 令牌环网(Token-ring network)的传输方法在物理上采用了星形拓扑结构,但逻辑上是环形拓扑结构。
      • 许可循环网络的通信传输介质可以是无屏蔽双线、屏蔽双线和纤维等。
      • 令牌环网中各节点间采用多站访问部件(Multistation Access Unit,MAU)连接在一起,MAU是一种专业化集线器,用来围绕工作站计算机的环路进行传输。

      在这里插入图片描述
      在令牌环网中有一种专门的帧称为“令牌”,这个“令牌”会在环路上持续地传输,只有拿到“令牌”的主机才能发送数据,因此发送出去的数据不会发生碰撞。

      • 令牌环网当中的“令牌”就像系统当中用于保护临界资源的互斥锁一样,“令牌”与互斥锁一样也有“忙”和“闲”两种状态,“忙”表示令牌已经被占用,而“闲”则表示令牌没有被占用。
      • 想要发送数据的计算机必须首先检测一个“不活跃”的许可证并将其置于“不活跃”状态,然后才能发送数据,这类似于申请相互排斥锁的过程。
      • 此外,由于“令牌”在网环上是按顺序依次传递的,因此对于所有入网的计算机而言,它们获取令牌的机会都是相等的,因此不会造成某台主机发送数据的饥饿问题。

      以太网帧格式

      以太网帧格式如下:
      在这里插入图片描述

      • 源地址和目的地地址是指网络卡的硬件地址(也称为MAC地址),这些地址长48位,在网络卡离开工厂时被固化。
      • 框架协议类型字段分别有IP协议、ARP协议和RARP协议的三个值。
      • 帧的末端是CRC校正代码。

      MAC帧如何将标题与实际负荷分开?

      以太网MAC帧的帧头和帧尾都是固定长度的,因此当底部接收MAC帧时,直接提取出MAC帧当中固定长度的帧头和帧尾,此时剩下的就是有效载荷了。

      如何让MAC框架决定哪些协议将有效负载传递到顶层?

      由于有多个顶层协议与一个Ethernet MAC帧相符,因此在MAC帧的消息与实际负载分离时,还必须确定哪些顶层协议应该交付。

      MAC帧的帧头有两个字节类型的字段,这样在将消息头和有效负载分开后,可以根据该字段向相应的顶层协议传递有效负载。

      举个例子

      假设网络中的A主机想向同一网络中的B主机发送IP数据消息,所以编写MAC框架的A主机目标地址是B主机的MAC地址,源地址是主机A的MAC地址,相应的帧协议类型是 0800,下一步是发送IP数据消息,帧的末端与CRC校正相符.
      在这里插入图片描述
      当A主机发送MAC帧到LAN时,所有LAN主机都可以接收MAC帧,包括A主机本身。

      • 主机A收到该MAC帧后,可以对收到的MAC帧进行CRC校验,如果校验失败则说明数据发送过程中产生了碰撞,此时主机A就会执行碰撞避免算法,后续进行MAC帧重发。
      • 在接收MAC帧后,主机B在MAC帧中提取目标地址,并发现目标地址与其自己的MAC地址相同,因此在成功校正CRC后,有效负荷被交付到上层IP层进行进一步处理。
      • 当其他LAN主机接收MAC帧时,它们也从MAC帧中提取目标地址,但发现目标地址与自己的MAC地址不相符,因此它们直接丢弃MAC帧。

      也就是说,当底部接收MAC帧时,根据MAC框架中的目标地址,确定MAC框架是否被发送给自己,如果您将它发送给您自己,它将再次被CRC检查。如果校正成功,它将基于MAC帧的帧协议类型,MAC被交付给相应的高级处理协议。

      认识MAC地址

      • MAC地址用于识别数据链层中相互连接的节点。
      • 长度为48位和6个字符,通常以16位数字的形式表示,有缩写,例如: 08:00:27:03:fb:19。
      • 在网卡出厂时就确定了,不能修改,MAC地址通常是唯一的(虚拟机中的MAC地址不是真实的MAC地址,可能会冲突;也有些网卡支持用户配置MAC地址)。

      我们可以通过ifconfig命令查看我们的MAC地址。
      在这里插入图片描述

      理解MAC地址与IP地址的比较

      在路由过程中,有两个实数据地址集,一个是源IP地址和目标IP地址,另一个是源 MAC地址和目标 MAC地址。

      • IP地址描述了总路线的起点和终点。
      • MAC地址描述了路线上的每个交界点的起点和终点。

      例如,在制造公共汽车时,源IP地址是我们离开公共汽车的地点,目的地IP地址是我们到达的地点,源 MAC地址是公共汽车到达的地点,目的地 MAC地址是下一个公共汽车到达的地点。

      因此,源IP地址和目标IP地址在路由过程中不会发生变化,而源 MAC地址和目标 MAC地址在每次数据跳跃时都会发生变化。

      认识MTU

      MTU(Maximum Transmission Unit,最大传输单元)描述的是底层数据帧一次最多可以发送的数据量,这个限制是不同的数据链路层对应的物理层产生的。

      • 以太网对应MTU的值一般是1500字节,不同的网络类型有不同的MTU,如果一次要发送的数据超过了MTU,则需要在IP层对数据进行分片(fragmentation)。
      • 此外,Ethernet指定MAC帧的最小数据长度为46字节,如果传输的数据量少于46字节,则需要补充数据背后的比特,例如ARP包的长度不足为46字节。

      MUT对IP协议的影响

      因为数据链路层规定了最大传输单元MTU,所以如果IP层一次要发送的数据量超过了MTU,此时IP层就需要先对该数据进行分片,然后才能将分片后的数据向下交付。

      • IP层会将较大的数据进行分片,并给每个分片数据包进行标记,具体就是通过设置IP报头当中的16位标识、3位标志和13位片偏移来完成的。
      • 16位元标识符(id)在相应的IP头条中,对于来自同一数据包的每个数据包消息都是相同的。
      • 在每个批号消息的IP头部的三位标记字段中,第二个设置为0,表示允许批号,第三个用于结束标记(最后的批号消息设置为0,其余的批号消息设置为1)。
      • 当 peer-to-peer IP层接收这些块消息时,必须在序列中组装这些块消息,并将其汇集起来,并向传输层发送。
      • 如果分片后的某个报文在网络传输过程中丢包了,那么对端在进行数据组装时就会失败,此时就需要上层传输层进行数据重传。

      数据分离和组装在IP层中进行,不仅源主机可以分离数据,路由器也可以在路由过程中分离数据。因为不同的MTU网络不同,如果传输路径上的网络的MTU小于源网络的MTU,然后路由器可能能够再次分割IP数据消息。

      注:如果您想了解数据分离和组装的具体过程,请参阅博客的另一篇文章网络层协议-IP协议

      MTU对UDP协议的影响

      IP报头当中如果不携带选项字段,那么IP报头的长度就是20字节,而UDP采用的是定长的8字节报头,因此如果UDP一次携带的数据超过了 1500 − 20 − 8 = 1472 1500-20-8=1472 1 5 0 0 2 0 8 = 1 4 7 2 字节, 此时数据需要在IP层中分开.

      • 在芯片丢失后接收到的多个IP数据信息中,任何一个都会造成接收器IP层的重组失败。
      • 假设在网络上传输数据时,损失的概率是千分之一,如果数据被分成数百个要传输的,那么损失的概率在此时增加到百分之一。
      • 因为只要有一个分片报文丢包了也就等同于这个报文整体丢失了,因此分片会增加UDP报文丢包的概率。

      MTU对TCP协议的影响

      对于TCP,芯片也增加了一个TCP消息丢失的可能性,但与UDP不同,TCP必须在丢失后重新传输,因此TCP应该尽量减少由于芯片而重新传输的数据。

      • TCP发送的数据消息不能无限大,或应该由MTU控制,我们将使用单个TCP数据消息的最大消息长度,称为MSS(Max Segment Size)。
      • 在建立联系的过程中,TCP通信各方将进行MSS协商,最终选择双方支持的最小MSS值为最终MSS。
      • MSS的值实际上是第一个TCP中的40字节选项字段(类型=2)。
      • 在理想情况下,MSS值正好是不能在IP层中分割的数据的最大长度。

      MSS与MTU的关系如下:
      在这里插入图片描述

      通过网络传输数据

      在这里插入图片描述
      例如,A主机通过网络传输数据到B主机。数据路由过程如下:

      • 主机A想通过网络传输数据到主机B,首先需要在同一网络上向A路由器发送数据,因此A主机需要将封闭的MAC帧发送到当前的本地网络,当前在MA框架中的源MAC地址和目标MAC地址,相应的是主机A的MAC地址和路由器A的MAC地址。
      • 此时,A主机的本地网络的所有主机将收到这个MAC帧,但最终只有路由器A发现目标的MAC地址在MAC框架中与其自己的MAC地址相同,然后,MAC帧被拆卸,剩余的IP数据报告将在卸装后交付到IP层。
      • 路由器A的IP层接收了未包装的IP数据消息,将从IP标题中提取目标IP地址,然后确定在查询路由表后需要向路由器B发送数据,然后路由器A再发送数据,重新封锁MAC帧的帧头和帧末端,但此时源 MAC地址和目的地 MAC地址在封闭的 MAC帧中,它成为路由器A的MAC地址和路由器B的MAC地址。
      • 与路由器A直接相连的主机虽然也可能有很多,但最终只有路由器B发现该MAC帧当中的目的MAC地址与自己的MAC地址相同,然后,MAC帧被拆卸,剩余的IP数据报告将在卸装后交付到IP层。
      • 路由器B的IP层接收了未包装的IP数据消息,同样将从IP标题中提取目标IP地址,在查询路由表后,确定需要将数据转移到路由器C,然后路由器B再发送数据,重新封锁MAC帧的帧头和帧末端,但此时的源 MAC地址和封闭的 MAC帧中的目的地 MAC地址又发生了变化,转换为路由器B的MAC地址和路由器C的MAC地址。
      • 重复上述过程,直到最终数据被转移到主机B。

      因此,当数据通过网络传输时,相应的源IP地址和目标IP地址一般是不变的,而数据的源 MAC地址和目标 MAC地址是不断变化的,根本原因是相应的一个跳跃主机和下一个跳跃主机是不断变化的。

      IP网络

      通过网络传输数据就像现实生活中运输包裹的过程一样。

      • 数据从一个到一个新的网格需要附上相应的网格标准头条,就像包在不同运输阶段使用不同的交通工具,例如火车、汽车和自行车一样
      • 但我们在IP层上看到的总是一样,就像我们最终看到的总是一样的包。
      • 不同的传输手段用于传输包,与数据路径通过不同的本地网络时添加的MAC帧标题相符,而包与MAC帧的有效负载相符,即IP数据消息。

      也就是说,数据通过网络传输,相应的MAC帧头条不断变化,MAC帧中的IP数据消息内容不变,所以你看到的IP层的数据内容是一样的,这就是为什么今天的主流网络被称为IP网络。

      ARP协议

      Address Resolution Protocol(ARP)是一种基于IP地址的TCP/IP协议,它获取MAC地址。

      ARP协议的作用

      为什么有ARP这样的协议?

      例如,当数据从主机A通过不同的路径转移到路由器D时,路由器D需要将数据转移到主机B完成数据路径。
      在这里插入图片描述

      • 由于路由器D和主机B属于同一网络,路由器D可以直接发送数据到主机B,但为了发送数据到同一网络中的一个主机,必须先知道对方的MAC地址。
      • 然而,D路由器目前只知道B主机的IP地址,因此D路由器必须以某种方式获取B主机的MAC地址。

      换句话说,为了在同一本地网络中向另一方发送消息,必须知道另一方的MAC地址,在大多数情况下我们只知道另一方的IP地址,因此需要通过ARP协议以IP地址为基础获取目标主机的MAC地址。

      ARP协议的定位

      在TCP/IP四层模型中,网络协议堆由顶部到下部分为应用层、传输层、网络层和数据链层。

      应用程序层中最典型的协议是HTTP、HTTPPS和DNS,最典型的传输层协议是TCP和UDP,最典型的网络层协议是IP,数据链层最典型的协议是MAC帧协议。然而,在实际数据链层中,有两种协议叫做ARP和ARP。
      在这里插入图片描述
      ARP、RARP和MAC框架协议都是数据链层协议,但ARP和RARP协议是MAC框架的顶层协议

      • 换句话说,MAC框架的顶层协议不一定属于网络层,MAC框架的顶层协议也可能属于数据链层,但位于MAC框架的顶层。
      • 与之类似的,网络层当中的ICMP协议和IGMP协议,这两个协议虽然与IP协议都属于网络层,但这两个协议属于IP的上层协议。

      ARP数据的格式

      ARP数据的格式如下:
      在这里插入图片描述

      • 硬件类型指链层的网络类型,1是Ethernet。
      • 协议类型指将转换的地址类型,0x0800是一个IP地址。
      • 硬件地址长度为6字节以太网地址,而MAC地址为48位。
      • 一个IP地址的协议地址长度为4字节,因为IP地址是32位。
      • ARP请求的op字段为1,ARP响应的op字段为2.

      它也可以从ARP数据格式中看出来,ARP是MAC框架协议的顶层协议,ARP数据格式的第一个三个字段和最后一个字段是第一个Ethernet字段,但是由于ARP包的长度不足46字节,因此,ARP包在装入MAC帧时需要用18个字节填充。

      ARP议定书的工作流程

      或者我们刚才给出的例子吧,路由器D将数据传输到同一网络中的B主机,假设路由器D必须知道主机B的MAC地址,现在路由器D只知道主机B的IP地址,所以路由器D现在需要启动ARP请求给主机B,然后等待主机B发送ARP了解主机B的MAC地址。

      ARP请求的过程

      路由器D首先需要建立ARP请求。

      • 首先,由于路由器D被构造为ARP请求,ARP请求中的op字段设置为1。
      • ARP请求中的硬件类型字段设置为1,因为它目前用于Ethernet通信。
      • ARP请求中的协议类型设置为 0800,因为路由器要根据B主机的IP地址获取B主机的MAC地址。
      • ARP请求的硬件地址长度和协议地址长度分别设置为6和4,因为MA地址长48位,IP地址长32位。
      • ARP请求中的发送者以太网地址和ARP请求中的发送者IP地址与路由器D的MAC地址和IP地址相符。
      • ARP请求的目的Ethernet地址和目的IP地址与主机B的MAC地址和IP地址相符,但由于路由器D不知道主机B的MAC地址,目的Ethernet地址的二进制序列设置为完全1,显示在本地区域网络中广播。

      在此阶段,ARP请求构建完成如下:
      在这里插入图片描述
      在ARP请求构建后,为了发送ARP请求到Ethernet,ARP数据包必须交付到MAC框架协议下并封入MAC框架中。

      • 在包装MAC帧标题时,以太网目标地址和以太网源地址,相应的MAC地址分别是主机B和路由器D。但由于路由器D不了解主机B的MAC地址,因此,MAC帧标题中的Ethernet地址的二进制序列只能设置为1,广播在一个地方网络中。
      • 因为这里封装的是一个ARP请求数据包,因此MAC帧当中的帧类型字段设置为0806。
      • 由于ARP请求数据包的长度只有28字节,不足46字节,因此还需要在MAC帧的有效载荷当中补上18字节的填充字段,最后再对MAC帧进行CRC校验即可。

      此时ARP请求就被封装成MAC帧了,如下:
      在这里插入图片描述
      一旦MAC帧被包入, Router D 可以将包入的MAC帧发送到本地网络。

      • 因为这个 MAC帧是通过广播的方式传输的,因此,每个本地网络中的主机收到这个MAC帧后,MAC帧将被卸下。当这些主机认识到MAC帧中的帧类型字段为0806时,知道这是ARP请求或响应包,MAC帧的实际负荷然后运送到ARP层上。
      • 当ARP层接收这个包时,发现ARP数据包中的作战场数为1,因此 决定, 这 是 ARP 请求,然后从ARP包中提取目标IP地址字段,虽然网络中的所有主机将将数据包传递到自己的ARP层,但最终只有主机B发现ARP包的IP地址与其本身相同。因此,只有主机B才会对ARP请求作出回应,而局域网当中的其他主机在识别到ARP数据包当中的目的IP地址与自己不匹配后,此ARP请求消息将直接丢弃。

      需要注意的是,局域网当中其他不相干的主机在收到这个ARP请求报文后,不是在MAC帧层丢弃的,而是在ARP层发现该ARP数据包的目的IP与自己的IP不匹配后丢弃的。

      总结:
      发起者构建一个ARP请求,并将其发送给每个主机。
      每个主机可以识别接收机,然后MAC帧的帧类型字段向每个主机的ARP层传递有效负载。
      其他无关联的主机根据目标IP拒绝它们自己的ARP协议中的ARP请求,只有目标主机有处理请求的机会。

      ARP应答的过程

      主机B首先需要在响应时建立ARP响应。

      • 首先,由于主机B被构造为ARP响应,ARP响应中的op字段设置为2。
      • ARP响应中硬件类型、协议类型、硬件地址长度和协议地址长度的值与ARP请求中设置的值相同。
      • ARP响应中的发送者以太网地址和ARP响应中的发送者IP地址与主机B的MAC地址和IP地址相符。
      • ARP响应的目的是目标的Ethernet地址和IP地址,与路由器D的MAC地址和IP地址相符,因为路由器D发送的ARP请求通知B主机其MAC地址和IP地址,因此B主机知道它。

      在此阶段,ARP应完成以下反应的构建:
      **加粗样式**
      在ARP响应构建完成后,还必须将ARP包发送到MAC框架协议下,并将其封入MAC框架中,以便将ARP响应发送到Ethernet。

      • 在包装MAC帧标题时,以太网目标地址和以太网源地址,对应分别是路由器D和主机B的MAC地址。
      • 因为这里封装的是一个ARP应答数据包,因此MAC帧当中的帧类型字段设置为0806。
      • 由于ARP应答数据包的长度也只有28字节,不足46字节,因此也需要在MAC帧的有效载荷当中补上18字节的填充字段,最后再对MAC帧进行CRC校验。

      此时ARP应答就被封装成MAC帧了,如下:
      在这里插入图片描述
      一旦MAC帧被封锁,主机B可以将封锁的MAC帧发送到本地网络。

      • 此时,网络中的每个主机可以接收到下面的MAC帧,但本地网络中的不一致的主机,发现MAC帧的相应的Ethernet目标地址与其本身不同,MAC帧将被丢弃,并未交付到ARP上层,最终只有路由器D会将解包后MAC帧的有效载荷向上交付给自己的ARP层。
      • 当路由器D的ARP层接收这个包时,ARP数据包中的作战场被发现为2,因此决定这是ARP反应,然后从ARP包中提取Ethernet发送器的地址和发送器的IP地址,此时路由器D就拿到了主机B的MAC地址。

      应该指出,其他不一致的LAN主机接收此ARP响应消息并直接丢弃它在MAC帧层,而不将其交付到自己的ARP层。

      ARP缓存表

      事实上,每次启动ARP请求时,不需要启动ARP请求来获取对方的MAC地址。每次启动ARP请求时,就会建立主机IP地址和MAC地址之间的映射关系。每个主机维护ARP缓存表,我们可以使用arp -a命令进行查看。
      在这里插入图片描述
      需要注意的是,缓存表中的表项有过期时间,这个时间一般为20分钟,如果20分钟内没有再次使用某个表项,那么该表项就会失效,下次使用时就需要重新发起ARP请求来获得目的主机的硬件地址。

      MAC帧标题已经覆盖了源地址和目的地 MAC地址,为什么ARP标题应该有两个字段?

      • 应该指出,MAC框架和ARP都是数据链层,但它们是彼此的顶部和下部,所以它们不关心彼此的头部的数据。
      • 此外,如果底层网络不是以太网网络,而是其他类型的网络,那么ARP层的MAC地址是必要的。

      当您在本地网络上通信时,为什么不直接通过广播发送数据?

      在进行本地网络通信时,即使你只知道对方的IP地址,又不知道对方的MAC地址,它还可以向本地网络广播数据,在此点,本地网络中的主机也可以确定IP层是否匹配目标IP地址。确定收到的数据是否发送给你自己。

      从理论上说,这是可能的,但这不是前进的道路。

      • 对于局域网当中的大多数主机来说,收到的这个报文其实早就应该被丢弃,而现在这个报文却交付到了IP层,我们都知道IP层是属于操作系统管控的,因此这对网络资源和系统资源来说都是一种浪费。
      • 因此在底层MAC帧层就应该判定这个报文是不是发送给当前主机的,而不是当数据向上交付到了IP层再来判断。

      此外,如果无脑使用广播的方式来进行数据的发送,会使得广播和单播的概念变得模糊不清,你明明是想发送数据给局域网当中的一台主机,但你却采用了广播的方式,这显然是不合理的。

      什么时候需要启动ARP请求?

      我们只是谈论D路由器向B主机发送数据,你需要通过ARP获取主机B的MAC地址,但实际数据可能需要为路由过程中的每一个跳跃启动一个ARP请求,查询下一跳台主机的MAC地址,因为每次跳跃我们通常只知道下一次跳跃的IP地址,相应的MAC地址不详。

      注:ARP是本地网络通信的协议标准,因此一个主机不能通过网络向另一个主机发起ARP请求。

      RARP协议

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

      换句话说,在某些情况下,我们只能知道一个主机的MAC地址,并且知道该主机的IP地址,我们可以使用RARP协议。

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

      本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/30464.html

          热门文章

          文章分类