数据链路层

数据链路层

Wed Oct 02 2024
zzcoe
10 分钟
计网
未分配标签
2509 字

以太网帧格式#

Pasted image 20240929210846

  1. 前同步码:用来使接收端的适配器在接收 MAC 帧时能够迅速调整时钟频率,使它和发送端的频率相同。前同步码为 7 个字节,1 和 0 交替。
  2. 帧开始定界符:帧的起始符,为 1 个字节。前 6 位 1 和 0 交替,最后的两个连续的 1 表示告诉接收端适配器:“帧信息要来了,准备接收”。
  3. 类型:上层协议的类型。由于上层协议众多,所以在处理数据的时候必须设置该字段,标识数据交付哪个协议处理。例如,字段为 0 x 0800 时,表示将数据交付给 IP 协议。
  4. 帧检验序列 FCS:检测该帧是否出现差错,占 4 个字节(32 比特)。发送方计算帧的循环冗余码校验(CRC)值,把这个值写到帧里。接收方计算机重新计算 CRC,与 FCS 字段的值进行比较。如果两个值不相同,则表示传输过程中发生了数据丢失或改变。这时,就需要重新传输这一帧。

以太帧洪水攻击#

交换机为了方便数据传输,通常会存储每个端口所对应的 MAC 地址,形成一张表。当交换机收到计算机发来的以太帧时,就会查看帧中的源 MAC 地址,并查找存储的表:

  • 如果表中存在该 MAC 地址,就直接转发数据;

  • 如果没有,则将该 MAC 地址存入该表中。

当其他计算机向这个 MAC 地址发送数据时,可以快速决定向哪个端口发送数据。由于该表不可能是无穷大的,所以当达到一定数量时,将不会储存其他新的 MAC 地址。再有新的主机发来数据帧时,部分交换机将不再查找对应的端口,而是以广播的形式转发给所有的端口。这样,就使其他主机可以接收到该数据帧了。

MTU 概念#

什么是 MTU#

MTU: Maximum Transmit Unit最大传输单元。其实这个是由 数据链路层提供 ,为了告诉上层 IP 层,自己的传输能力是多大。IP 层就会根据它进行数据包切分。一般 MTU=1500 Byte

假设 IP 层有 <= 1500 byte 需要发送,只需要一个 IP 包就可以完成发送任务;假设 IP 层有 > 1500 byte 数据需要发送,需要分片才能完成发送,分片后的 IP 首部标识符相同,同时为了分片后能在接收端把切片组装起来,还需要在分片后的 IP 包里加上各种信息。比如这个分片在原来的 IP 包里的偏移量。[[网络层#IP 首部]]

为什么 MTU 大小是 1500#

再传输过程中数据量越大越容易丢包,但是数据量小了传输效率又太低(带宽都用来传输首部了),综合评价选了 1500

同时 MTU 的大小由网卡决定 ,在一条传输线路上不同的设备可能有不同的 MTU。

ARP/RARP 协议#

ARP (Address Resolution Protocol):#

将 IP 地址解析为 MAC 地址。当一台设备需要与同一局域网内的另一台设备通信时,它需要知道对方的 MAC 地址。ARP 协议通过发送广播请求来获取目标设备的 MAC 地址。

RARP (Reverse Address Resolution Protocol):#

将 MAC 地址解析为 IP 地址。RARP 协议允许没有存储设备的计算机(如无盘工作站)通过网络获取自己的 IP 地址。

由于 RARP 的局限性和复杂性,它已经被 DHCP(动态主机配置协议)等更先进的协议所取代

ARP 报文格式#

Pasted image 20240930160833

ARP 是一个独立的三层协议,所以 ARP 报文在向数据链路层传输时不需要经过 IP 协议的封装,而是直接生成自己的报文,其中包括 ARP 报头,到数据链路层后再由对应的数据链路层协议(如以太网协议)进行封装

ARP 查询原理#

  1. ARP 请求

    • 当一台设备(例如计算机 A)需要与同一局域网内的另一台设备(例如计算机 B)通信时,计算机 A 首先会检查本地的 ARP 缓存表(ARP Cache),以查找目标设备的 IP 地址是否已经有对应的 MAC 地址映射。
    • 如果 ARP 缓存表中没有目标 IP 地址的 MAC 地址映射,计算机 A 会发送一个 ARP 请求广播包到局域网。这个 ARP 请求包包含了计算机 A 的 IP 地址和 MAC 地址,以及目标设备的 IP 地址。
  2. ARP 响应

    • 局域网内的所有设备都会接收到这个 ARP 请求包,但只有目标设备(计算机 B)会响应。
    • 目标设备(计算机 B)在接收到 ARP 请求后,会发送一个 ARP 响应包,包含它的 MAC 地址,并将这个响应包单播回发送 ARP 请求的设备(计算机 A)。
  3. 更新 ARP 缓存表

    • 计算机 A 在接收到 ARP 响应包后,会将目标设备的 IP 地址和 MAC 地址映射关系添加到本地的 ARP 缓存表中,以便后续通信使用。
  4. 数据传输

    • 现在,计算机 A 已经知道了目标设备(计算机 B)的 MAC 地址,可以直接将数据包发送到目标设备。

免费 ARP#

免费 ARP(Gratuitous ARP)是一种特殊的 ARP 请求,它的发送者 IP 地址和目标 IP 地址是相同的,即请求自己的 IP 地址对应的 MAC 地址。免费 ARP 的主要作用包括:

  1. IP 地址冲突检测:当设备发送免费 ARP 请求时,如果收到响应,说明网络中存在与自身 IP 地址重复的设备,从而检测到 IP 地址冲突。
  2. 更新 ARP 缓存:免费 ARP 可以用于通知网络中的其他设备更新其 ARP 缓存表项,确保网络中的 ARP 表项是最新的。
  3. VRRP 场景:在虚拟路由冗余协议(VRRP)中,免费 ARP 用于通知网络中的设备更新其 MAC 地址表项。

免费 ARP 通常用于网络设备启动或 IP 地址变更时,以确保网络的正常运行和稳定性。

ARP 缓存#

无论是主机,还是交换机都会有一个用来缓存同一网段设备 IP 地址和 MAC 地址的 ARP 映射表,用于数据帧的转发。设备通过 ARP 解析到目的 MAC 之后,将会在自己的 ARP 映射表中增加 IP 地址到 MAC 地址的映射表,以用于后续到同一目的地数据帧的转发。ARP 表项分为动态 ARP 表项和静态 ARP 表项。 Pasted image 20240930162003

动态 ARP 表项#

动态 ARP 表项由 ARP 协议通过 ARP 报文自动生成和维护,可以被老化,可以被新的 ARP 报文更新,也可以被静态 ARP 表项所覆盖。当到达老化时间或接口关闭时会删除相应的动态 ARP 表项。

静态 ARP 表项#

静态 ARP 表项通过手工配置(通过对应设备的 IP 地址与 MAC 地址绑定命定进行)和维护。不会被老化,也不会被动态 ARP 表项覆盖。配置静态 ARP 表项可以增加通信的安全性,因为静态 ARP 可以限定和指定 IP 地址的设备通信时只使用指定的 MAC 地址(也就是我们通常所说的 IP 地址和 MAC 地址的绑定),此时攻击报文无法修改此表项的 IP 地址和 MAC 地址的映射关系,从而保护了本设备和指定设备间正常通信。静态 ARP 表项又分为短静态 ARP 表项和长静态 ARP 表项

短静态 ARP 表项#

在配置短静态 ARP 表项时,只需要配置 IP 地址和 MAC 地址项。如果出接口是三层以太网接口,短静态 ARP 表项可以直接用于报文转发;如果出接口是 VLAN 虚接口,短静态 ARP 表项不能直接用于报文转发,当要发送 IP 数据包时,先发送 ARP 请求报文,如果收到的相应报文中的源 IP 地址和源 MAC 地址与所配置的 IP 地址和 MAC 地址相同,则将接受 ARP 响应报文的接口加入该静态表项中,之后就可以用于 IP 数据包的转发了。

长静态 ARP 表项#

在配置长静态 ARP 表项时,除了配置 IP 地址和 MAC 地址项外,还必须配置该 ARP 表所对应的 VLAN(虚拟局域网)和出接口。也就是长静态 ARP 表项同事绑定了 IP 地址、MAC 地址、VLAN 和端口,可以直接用于报文转发。