链路层 & ARP

数据链路层 #

数据链路层的职责是,将数据帧(Frame)发送往相邻的另一个节点

三个步骤

  1. 将IP数据包封装成帧
  2. 通过MAC地址选择合适链路传输数据包
  3. 错误检测:检查算法,一般是直接写在了网络接口的硬件里

数据帧格式

MAC目的地址 MAC源地址 网络层协议类型 网络层数据报 CRC
6字节       6字节     2字节          46-1500      4字节
  • MAC地址:网卡地址,在帧传输过程中,MAC目的地址和MAC源地址一直在变化
  • 协议类型:IP、ARP、RARP
  • 数据报:46字节-1500字节,最大传输单元就是MTU
  • CRC:循环冗余检查法

在wireshark 中,数据包的第二行 (Ethernet II) 是链路层协议

MTU

  • 如果IP层有一个数据报的长度比链路层的MTU还大,那么IP层就需要进行分片
  • 路径MTU: 两台主机所在网络的MTU的值,是两台通信主机路径中的最小MTU

链路层使用MAC地址,是因为可以同时被不同的网络层使用。 例如,一组使用TCP/IP协议的主机和另一组使用某种协议的主机可以共享相同的电缆。

ARP 地址解析协议 #

ARP 是解析目标IP地址的MAC地址

  1. ARP 将IP地址进行广播请求,广播目标MAC地址是固定的 FF-FF-FF-FF-FF-FF
    意思是如果你是这个IP地址的拥有者,请回答你的硬件地址
  2. 所有主机都会收到请求,只有目标主机看到IP是自己的才会响应,于是发送一个ARP应答
    这个ARP应答包含IP地址及对应的硬件地址
  3. MAC 就会被记录到主机内的 ARP table,缓存,下次就不用在广播了

广播是不能跨路由的

ARP欺骗:收到广播请求,主动响应是自己的MAC地址,即让他人的ARP table中存储错误的MAC地址

arp 命令需要安装包 net-tools

arp -n

# 建立静态 ARP,几乎用不到
arp -s 192.168.1.100 01:00:2D:23:A1:0E

# 删除
arp -d 192.168.1.100

注意:ARP 和 RARP 是网络层的协议

RARP 逆地址解析协议 #

根据MAC地址解析IP地址

使用场景:主机从网络启动,此时主机还不知道自己的IP,有点 DHCP 的味道