目录
链路层
在IP协议章节,我们已经能把一个数据报文跨网络传输到另一台主机。我们当时是默认了,局域网之间的主机是能直接通信的。接下来的问题是:局域网之间的主机如何直接通信
数据从主机A到主机B的时候,可能会经过无数个子网。而链路层解决的,就是数据报文如何在一个子网中,进行转发。
实际上,链路层完成的工作就是局域网的转发。
以太网通信原理
前提:主机可以直接发送数据到自己所连接的局域网上
MAC地址
-
MAC地址的功能:主要用于处于同一个子网之间的主机进行数据路由/转发。
-
MAC地址的唯一性:MAC地址在局域网中必须是唯一的。MAC地址是分配给网络设备(例如网卡、路由器、交换机等)的物理地址,它是由设备的制造商在生产时烧录到设备的网络接口控制器(NIC)中的。
-
MAC地址的格式:每个MAC地址由48位(6个字节)组成,通常以12个十六进制数字表示,分为6组,例如:
00:1A:2B:3C:4D:5E
。MAC地址的前24位(前3字节)通常是由IEEE分配给设备制造商的标识符,后24位由制造商用于唯一标识每台设备。
在Linux中,通过ifconfig指令可以查看当前主机的mac地址
MAC地址 vs IP地址
1、功能不同
-
MAC地址用于在同一个局域网(或子网)内唯一标识和定位设备,是数据链路层(倒数第二层)的概念。它帮助设备在物理链路上进行直接通信。
-
IP地址用于在整个网络中唯一标识和定位主机,是网络层(倒数第三层)的概念。它允许设备通过路由器跨越不同的子网进行通信。
2、分配方式不同
-
MAC地址由设备的制造商在生产时硬编码到网络适配器中,确保全球范围内的唯一性。这意味着每个网络设备在生产时就有一个唯一的MAC地址。
-
IP地址由网络管理员或者DHCP服务器根据网络配置动态分配或者静态分配给设备。这允许灵活的地址管理和资源利用。
3、主要不同
-
MAC地址是设备的物理地址,固定在设备的网络适配器硬件上,不受网络配置变化的影响。即使设备移动到不同的网络或者子网,其MAC地址也不会改变。
-
IP地址是逻辑地址,允许网络中的设备根据网络配置和需要进行动态分配或更改。它允许设备在不同的网络环境中自由移动和连接。
-
在NAT技术中,IP地址是会变化的!而MAC地址一般是长时间保持不变的!
MAC地址的替换
当经过了一次路由,一个数据包已经送到了目的MAC地址以后,需要把目的MAC地址变成下一次转发的源MAC地址。把目的MAC地址变成下一次路由的目标主机MAC地址
举个例子:
MAC地址就相当于是一个车站的站点,当你坐车来到一个新的站点以后,你所处的站点(源MAC)肯定会发生变化。而你的下一个站点(目的MAC)也会发生变化
以太网通信过程
假设主机A、主机B、主机C、主机D、主机E都连接了同一个以太网,它们都有自己的MAC地址
如上图,假设mac地址为A的主机发送了一个数据报文,这个报文的目标主机是mac地址为E的主机
-
这个数据报文的源mac地址为macA,目标mac地址为macE
-
当主机A的数据报文到达以太网以后,其他主机(B、C、D、E)都能看到这个数据
-
以太网中的所有主机(除发送方外)都会对这个数据报文进行解包,并对比报文中的目标mac和自己的mac是否相同
-
若相同,则进行向上交付,若不同,则把数据重新发送到以太网中
-
所以主机E能收到这个数据报文
数据碰撞:当有多台主机同时向以太网中发送数据时,会造成数据碰撞问题。实际上可以把局域网想象成一个共享资源。
避免碰撞:不同类型的局域网(以太网/令牌环网...)的区别主要是发生数据碰撞时的处理方法不同,对于以太网来说发生碰撞时是直接发了再说,若发生数据碰撞原来的碰撞的数据直接丢弃,碰撞双方的某个主机会停下来等一会,等了一会以后再重新发送数据
当一个局域网有了避免碰撞算法以后,就从共享资源变为了一个临界资源
注意:正因为局域网要进行避免碰撞,所以一个局域网之间主机数量其实越少越好
以太网协议
以太网协议指的是工作在数据链路层的所有协议。以太网协议中包含了MAC协议,ARP协议,RARP协议
以太网帧格式
-
目的地址:本质是发送方的mac地址
-
源地址:是接收方的mac地址
-
类型:它表示该数据帧应该交付给上层所使用的哪个协议。若该值为0800则表示该帧需要交付给IP协议。若该值为0806表示该帧需要交付给ARP协议。若该值为8035表示该帧需要交付给RARP协议
-
数据:即有效载荷的长度,规定数据长度不能小于46字节,不能大于1500字节
-
CRC:在数据部分之后,用于验证帧在传输过程中是否发生了损坏。
MAC帧如何把有效载荷(数据)交付给上层