数据链路层 #
数据链路层的职责是,将数据帧(Frame)发送往相邻的另一个节点
三个步骤
- 将IP数据包封装成帧
- 通过MAC地址选择合适链路传输数据包
- 错误检测:检查算法,一般是直接写在了网络接口的硬件里
数据帧格式
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地址
- ARP 将IP地址进行广播请求,广播目标MAC地址是固定的 FF-FF-FF-FF-FF-FF
意思是如果你是这个IP地址的拥有者,请回答你的硬件地址 - 所有主机都会收到请求,只有目标主机看到IP是自己的才会响应,于是发送一个ARP应答
这个ARP应答包含IP地址及对应的硬件地址 - 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 的味道