数据链路层,以太网

本文详细介绍了数据链路层与以太网的关系,强调了它们在通信中的作用。以太网作为最常见的局域网技术,包括网线和无线通信协议。数据链路层的帧格式包括MAC地址、类型、数据和CRC校验。文中还深入探讨了以太网帧的数据部分长度限制(MTU)对UDP和TCP协议的影响。此外,文章解释了ARP协议如何通过IP地址查找MAC地址,以及域名系统(DNS)的工作原理,最后提到了ICMP协议在网络诊断中的作用和NAT技术解决IP地址不足的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、数据链路层

(1)数据链路层和网络层的不同:网络层侧重于整体一个点到另一个点之间的一条路径,数据是如何到达的。而数据链路层则侧重于其中的每一个小区间上的传递。用于两个设备(同一种数据链路节点)之间进行传递。

(2)“同一种数据链路”:手机通过路由器上外网,手机与路由器之间通过无线网WiFi的方式进行传输的,这是一种数据链路;数据通过以太网线和运营商路由器相连,这也是一个数据链路;运营商路由器通过光纤和其他的路由器相连,这也是一种数据链路。

(3)常见的数据链路:

A、以太网线(插网线的);

B、WiFi(无线路由器);

C、蓝牙(也是一种无线通信协议,带宽小,能耗小);

注:我们平时用的数据3G/4G,并不是一种数据链路层协议,而是和TCP/IP协议栈并列一整套协议栈标准。

二、以太网:

以太网是一种协议,一种标准,不仅涵盖了数据链路层,也包含了一些物理层的内容。 例如: 规定了网络拓扑结构, 访问控制方式, 传输速率等;

平时用的网线就叫做以太网线,以太网中的网线必须使用双绞线; 传输速率有10M, 100M, 1000M等;

以太网是当前应用最为广泛的局域网技术; 和以太网并列的还有令牌环网, 无线LAN等;

1、以太网的帧格式

 

 

 

 

A、目的地址,源地址:MAC地址。(IP地址和MAC地址都是用来唯一的标识一台主机的,他们的功能有一定的重复性,又有各自的侧重:IP地址是描述整体发送过程中发送的起点和目标的终点;MAC地址需要顾及到传输过程中的每个相邻的数据链路上所对应的一个节点。)【IP协议和以太网帧协议是相互各自独立的,设计IP地址的时候不知道以太网帧的存在,设计以太网帧的不知道IP地址的存在双方都想尝试去表示唯一的一个IP】源地址和目的地址都为6个字节(IP地址的源端口号和目的端口号都为4个字节,MAC地址的源端口号和目的端口号比IP地址的源端口号和目的端口号多(2^48-2^32)=65535倍。MAC地址很多,不需要考虑重复的情况,基本上是够用的,所有设备,都有一个唯一的MAC地址。MAC地址在设备网卡设备一生产好,就设置好了。)【一般MAC地址是唯一的,但是也可以通过虚拟机虚拟出一个MAC地址】

B、类型:表示以太网帧是个什么样的帧,是用来做什么的帧【类型取值0800,后续的数据就是一个IP数据报;类型为0806,后续的不是一个IP数据报,而是一个ARP请求。】

C、数据

D、CRC:校验和

对于以太网帧数据部分最长为1500个字节(数据段的最大长度MTU),最短为46个字节。【 分包:ip数据报超过15

### 以太网帧在数据链路层的头部结构及字段详解 以太网帧是数据链路层中用于封装传输数据的主要单元。其头部结构包含了多个重要字段,这些字段定义了数据的目的地址、源地址以及所携带的数据类型等信息[^1]。 #### 头部结构 以太网帧的标准头部通常由以下几个部分组成: 1. **前导码 (Preamble)** 这是一个7字节的固定序列(`101010...`),主要用于同步接收方设备的时钟频率,以便能够正确解析后续接收到的数据流[^4]。 2. **起始标志符 (Start Frame Delimiter, SFD)** 起始标志符占1字节,值为`10101011`,表示实际帧数据即将开始。它标志着前导码结束并进入正式的帧内容阶段。 3. **目标MAC地址 (Destination MAC Address)** 占6字节,用来指定该帧的目标硬件地址。如果这是一个广播或多播消息,则此字段会设置成特定的广播或多播地址模式。 4. **源MAC地址 (Source MAC Address)** 同样占用6字节空间,记录的是发送端设备的物理地址,即源主机或路由器接口的MAC地址。 5. **类型/长度字段 (Type / Length Field)** 此字段可以有两种解释方式:如果是早期版本IEEE802.3标准下的局域网环境,则代表帧载荷的最大允许尺寸;而在现代实现里更常被理解为指示高层协议类型的“EtherType”。当数值大于等于1536(十进制),则视为 EtherType 编号,比如 IPv4 对应于 `0x0800`, ARP 请求对应于 `0x0806` 等。 6. **数据与填充 (Data and Padding)** 数据区域存储着来自更高层次的信息片段,最小有效负载大小需达到46字节才能满足最低限度的要求。对于像ARP请求这样较短的消息体来说,不足的部分要用零比特填补至符合规定的总长范围之内(最大不超过1500字节)。 7. **帧校验序列 (Frame Check Sequence, FCS)** 最后的四个字节构成了循环冗余检验(CRC)计算结果,用作错误检测机制的一部分。通过对比原始FCS同重新生成出来的CRC值得一致性来判断是否存在传输过程中的误码情况发生。 ```python # Python 示例展示如何创建一个简单的以太网帧对象模型 class EthernetFrame: def __init__(self, dst_mac, src_mac, ethertype, payload): self.dst_mac = dst_mac # 目标MAC地址 self.src_mac = src_mac # 源MAC地址 self.ethertype = ethertype # 类型字段 self.payload = payload # 数据负载 @property def fcs(self): # 计算FCS(简化版) import binascii data = ''.join([self.dst_mac, self.src_mac, hex(self.ethertype)[2:], str(self.payload)]) crc_value = binascii.crc32(data.encode()) return format(crc_value & 0xFFFFFFFF, '08X') example_frame = EthernetFrame('FF:FF:FF:FF:FF:FF', 'AA:BB:CC:DD:EE:FF', 0x0806, # 表示这是ARP报文 b'\x00\x01\x08\x00\x06' ) print(f"FCS Value: {example_frame.fcs}") ``` 上述代码展示了如何构建一个基本的以太网帧类,并演示了一个假设性的实例化操作,其中涉及到了ARP请求的相关参数设定及其对应的伪随机数列形式化的简单FCS算法应用案例说明。 --- ####
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xuruhua

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值