【Linux网络编程】数据链路层--以太网协议

目录

链路层

以太网通信原理

以太网协议

以太网帧格式

MTU(最大传输单元)

MTU对UDP协议的影响

MTU对TCP协议的影响

 交换机 

数据转发全过程与ARP的引入

ARP协议

ARP协议的基本介绍 

 ARP协议格式

ARP原理

ARP欺骗原理 


链路层

在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帧如何把有效载荷(数据)交付给上层 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值