『 Linux 』数据链路层 - MAC帧/以太网帧

文章目录


MAC帧/以太网帧

MAC帧也叫做以太网帧,通常情况下MAC帧也是一个更广义的语术,用来描述数据链路层,即OSI模型的第二层的一种数据帧格式,这种格式包括其他如WI-FI,令牌环,帧中继等数据链路层所使用的数据帧;

以太网帧是具体使用的一种MAC帧,通常在讨论数据链路层的帧结构时两词代指相同内容;

MAC帧的报文结构如图所示;

MAC帧所采用的报文为定长报文,通过定长报文的方式将报头与有效载荷进行分离;

在进行分用时,MAC帧报头中类型字段将表明一些常用的数据格式,如IP(类型0800),ARP请求/响应(类型0806),PARP请求/响应(类型0835);

通过该字段来判断报文中的有效载荷需要交付给上层网络层的哪个协议,即分用思路;

而报文中的源地址和目的地址表示的通常为MAC地址;


局域网的通信原理

在网络通信过程中始终需要遵从"先决策,后执行"的策略,即上层进行决策,下层进行执行;

对应在网络通信过程中,网络层通常担任决策的一方,即决定需要将数据包交由给下一跳的哪一台设备;

以IP协议为例,在使用IP协议进行网络通信时,通常使用IP地址进行决策,即具体下一跳(Next hop)需要将数据发送至哪一个IP地址的设备,而真正在数据链路层所使用的地址为MAC地址;

  • MAC地址

    通常MAC地址简单来说就是网络设备的"身份证";

    用于唯一标识联网设备的硬件地址,每台设备上的网络接口卡(如以太网卡,WIFI适配器)都有一个独特的MAC地址;

    MAC地址通常为48位,用6对十六进制数字不表示,如00:1A:2B:3C:4D:5E;

    每个MAC地址都是全球唯一的,在局域网中,MAC地址用于标识和区分不同设备;

通常情况下在同一个局域网中,数据链路层中数据的传输是每个设备都能接收到的,但每台设备在收到对应的MAC帧时对MAC帧进行分析,当观察到MAC帧中的目的地址与本机的MAC地址不同时将会丢弃剩下的有效载荷;

这种通信原理在数据链路层中也被称为单播,对应的广播情况下同一个局域网内的所有设备都会获取到该MAC帧,并将该MAC帧交付给上层;

通常情况下,在同一局域网中至运行一个设备进行网络通信,因为本质上网络通信在光缆中是光电信号,光电信号在传输过程中也可能因为其他信号从而被干扰,这种情况被称为数据碰撞;

因此本质上互联网就是有限资源,因此为了避免这种情况,每台设备在数据链路层都会提供对应的"碰撞避免算法",但"碰撞避免算法"终究只能尽量避免数据碰撞的发生;

在数据传输过程中,通常一个数据若是过大,那么它在网络中需要传输的时间也就更长,因此MAC帧对报文进行了定长的方式,避免过大的报文在网络中进行传输;

同时为了兼容MAC帧的载荷大小,上层协议也需要做出调整,如IP协议再面对较大的数据包时将会对数据包进行分片处理,使得向数据链路层交付的每个数据包都不会超过MAC帧限制大小;

而在之前的文章提过,通常不支持IP协议对数据包进行分片处理,原因是数据包若是进行分片且其中一个分片在传输过程中出现丢包情况则会导致所有的IP数据包再次进行重发而不会只重发丢失的分片,因此引入了传输层的一些策略,如TCP协议中的流量控制,滑动窗口,慢启动等策略;

每一层的协议都在与更下一层的协议进行兼容;

在上面的内容中可以了解到,每一个设备都要对所接收到的MAC帧进行检查,确保MAC帧中的MAC地址与本设备的MAC地址相同时才会交付给上层,而真正交付到对应设备时,对应的设备同样的在数据链路层中先进行解包为IP数据包,再由网络层协议如IP协议检查对应的路由表找到下一个设备的IP地址,再交付给数据链路层封装为MAC帧交由下一台设备;

因此在进行网络通信时本质上数据是在不停的进行 "封装-解包-再封装" 的操作的;

当一个MAC帧因目的MAC地址匹配而重新到达网络层进行查看路由表并重新设置新的目标MAC地址而重新封装为新的MAC帧,这意味着一个MAC帧是只在当前局域网内有效的,因为每过一个新的网关(路由器)后都会有一个新的MAC帧,也许其有效载荷是相同的,但实际他们的MAC帧报头都是重新封装且不同的,所以一个MAC帧只在当前局域网内有效;

本质上所谓的数据发送到目标网络是通过无数个连续的子网实现的;

的MAC帧报头都是重新封装且不同的,所以一个MAC帧只在当前局域网内有效;

本质上所谓的数据发送到目标网络是通过无数个连续的子网实现的;

相关推荐
爬树的小蚂蚁1 小时前
Linux 修改bond后网关不生效的问题
linux·运维·服务器
洁洁!1 小时前
从零开始在亚马逊云科技 EC2上部署DeepSeek R1大语言模型:完整实战指南
服务器·科技·语言模型
lisw053 小时前
网络化:DevOps 工程的必要基础(Networking: The Essential Foundation for DevOps Engineering)
网络·devops
风行無痕4 小时前
Ubuntu Linux系统配置账号无密码sudo
linux·服务器·ubuntu
驱动小百科5 小时前
WiFi出现感叹号上不了网怎么办 轻松恢复网络
网络·智能路由器·wifi出现感叹号怎么解决·wifi无法上网·电脑wifi
好多知识都想学5 小时前
协议路由与路由协议
网络·智能路由器
爆农5 小时前
centos搭建dokcer和vulhub
linux·运维·centos
SZ1701102315 小时前
中继器的作用
服务器·网络·智能路由器
chenxy025 小时前
如何快速分享服务器上的文件
运维·服务器
重启就好6 小时前
【Ansible】模块详解
linux·服务器·ansible