数据链路层之以太网协议

article/2025/11/1 12:46:38

在 IP 数据包交付的过程中,在数据链路层会对数据包进行添加报头信息。以太网协议就是数据链路层的一个重要协议。这样说其实不太准确,因为以太网协议是一个规定数据链路层及物理层的协议,不能说它是数据链路层的一个协议。

以太网帧

以太网帧就是将网络层交付的数据添加报头信息后,此时的数据以帧的形式传递。以太网帧的格式如下:

这里写图片描述

在这里,目的地址与源地址这里都指的是 MAC 地址。每一个主机对应唯一的一个 MAC 地址,是由网卡决定的,长度是 48 位,所以这里的目的地址与源地址都是 6 个字节,也就是 48 个比特位。

在以太网帧的最后,还有一个 CRC 校验码,来校验数据是否异常。

在中间,有一个两个字节的类型标识。这个类型字段有三种值,分别是 : IP、ARP、RARP。

IP

这里写图片描述

如果类型码为 0800 那么在数据链路层解包完毕后,将该数据交付给网络层的 IP 协议来处理该报文。

ARP

这里写图片描述

如果类型码是 0806 , 那么在向上层交付的时候就交付给 ARP 协议,这里要说的是 ARP 协议是处于数据链路层与网络层之间的一种协议,也叫作地址解析协议。它将 IP 地址转换为 MAC 地址。

RARP

这里写图片描述

RARP 协议,就是 Reverse ARP,与 ARP 协议相同,是将 MAC 地址转换为 IP 地址的协议。


一般来说,数据第一次发送给目的主机时,在这之前应该发送 ARP 协议,根据目的主机的 IP 地址来确定目的主机的 MAC 地址,从而为后面的数据发送与接收提供便利。

MAC地址与IP地址

在数据发送传输的过程中,目的 IP 地址与源 IP 地址是永远不会变的,这是这个数据的起始与终点,而 MAC 地址是一直在变化的,由于数据在传输的过程中会经历很多的主机等,所以在这个过程中 MAC 地址一直在变。类似于我们坐车,要坐车从 A 出发,目的地是 D。这个过程中我们会经过 B C,在到达 B 的时候,此时的 MAC 地址相当于我们上一站是 A , 下一站是 C。而目的 IP 地址与 源 IP 地址 分别是 D 与 A,这样说的话就很好理解了。

MAC 地址与 IP 地址,一个代表的目的与终点,一个代表着途中的经过。所以在到达目的局域网后,数据包并不知道要传输给哪台主机,因为 MAC 地址的变化,但是目的 IP 地址一直没有变化,所以此时就需要 ARP 协议来确定目的主机的 MAC 地址。

MTU

在谈 IP 协议的时候说到, IP数据报的长度受数据链路层的 MTU 影响。数据链路层要求在网络层传输过来的数据包必须在 MTU 范围内,以太网帧中的数据长度必须在 46字节到1500字节当中去。也就是说在 IP 层在添加报头信息之前,要判断此时由传输层传输过来的数据段是否超过了 1480 个字节(以太网帧中的数据包括 IP 协议的报头信息,IP 协议的报头信息为 20 字节),如果超过了,那么则对该数据段进行分片,所有被分片的数据的 IP 报头信息当中,它们的 16 位标识都是相同的,并且报头信息中的标志字段中第二位为 0 ,第三位如果为 1 ,代表着报文的结束。

接收端在接收到这里分片数据后,根据 IP 报头信息的 16 为标识信息、三位标志位、13位偏移量信息进行组装。

如果分片后的数据在接收端丢失某一片,那么就组装失败。即使组装失败, IP 层也不负责重新传输的功能。这是传输层所该做的事情。

我们发现 ARP 协议与 RARP 协议它们的实际数据只有 28 个字节,于是在它的报文后进行补位,其中 PAD 就是用来填充的,使 ARP / RARP 协议的长度达到 MTU 的最小字节数。

对于 UDP 传输的影响

一旦 UDP 携带的数据超过了 1472 (MTU - IP报头 - UDP报头 = 1500 - 20 - 8),那么在 IP 层就会对该数据分片,一旦分片就意味着增加了 UDP 传输丢包的可能性。 由于 UDP 协议传输本身就不负责可靠性,再加上分片,那么丢包的可能性就大大增加。

对 TCP 传输的影响

TCP 协议在传输时也收到 MTU 的影响。一个 TCP 数据报的最大长度为 MSS 。MSS 处于 TCP 报头信息选项中。在 TCP 进行链接的时候,双方在发送 SYN 与 SYN + ACK 时就会在选项内对 MSS 进行设置。在双方都得到对方的 MSS 时,选择较小的 MSS 的值作为最终的 MSS 。

再说明白点,MSS 的大小其实就是应用层给传输层的交付的数据的大小。不包括传输层的报头信息。所以在计算 MSS 的时候,用 MTU 减去网络层报头长度以及传输层报头长度即可。

这里写图片描述


欢迎大家共同讨论,如有错误及时联系作者指出,并改正。谢谢大家!


http://chatgpt.dhexx.cn/article/2urrl5RJ.shtml

相关文章

【计算机网络】数据链路层重点协议

目录 1. 认识以太网 1.1 以太网帧格式 2. 认识MTU 2.1 MTU对IP协议的影响 2.2 MTU对UDP协议的影响 2.3 MTU对TCP协议的影响 3. ARP协议 3.1 ARP协议的作用 3.2 ARP协议的工作流程 1. 认识以太网 以太网是一种局域网的技术规范,而不是一种具体的网络&am…

数据链路层协议(2)

目录 一.网络类型---根据数据链路层运行的协议进行划分 二.数据链路层运行的协议 1.HDLC---高级数据链路控制协议 2.PPP---点到点协议 (1)链路建立阶段---LCP(链路控制协议)建立 (2)认证阶段---PAP&…

数据链路层协议封装

常用的两种数据链路层帧: 以太网帧和PPP帧的区别: 最大的区别,以太网是一个广播链路,一个广播域可能有多个设备,所以以太网帧有MAC地址,为了在整个以太网中确定一个唯一确定到底哪个设备进行接收&#xff0…

网络层IP协议与数据链路层以太网协议

文章目录 一、IP协议IP地址地址管理路由选择DNS 二、以太网协议以太网帧MTU 一、IP协议 IP协议是我们网络层的代表协议,今天我们就来一起学习一下吧,我们这里介绍的主要是IPv4协议。 版本:指定IP协议的版本,版本的取值只有4&…

TCP/IP协议详解篇三(链路层)

文章目录 数据链路层(DataLinkLayer)点对点信道数据链路层通信时的主要步骤三个基本问题封装成帧透明传输差错检测 点对点PPP协议PPP协议满足的需求PPP协议的组成PPP协议的帧格式透明传输字符填充法零比特填充法 PPP协议的工作过程 局域网的数据链路层局域网的拓扑结构媒体共享…

数据链路层-------以太网协议

这里写目录标题 数据链路层点对点协议(PPP协议)以太网协议认识以太网以太网帧格式认识MAC地址对比理解MAC地址和IP地址认识MTUMTU对上层协议的影响查看硬件地址和MTU ARP协议(地址解析协议)ARP协议的作用ARP数据报格式ARP协议的工作原理 数据链路层 主要…

【网络协议详解】——数据链路层协议(学习笔记)

📖 前言:数据链路层是 OSI 模型中的第二层,位于物理层之上,是通信网络中的重要组成部分之一。数据链路层协议负责将网络层传输的数据分组封装成帧,传输到物理层,并通过物理介质进行传输。同时,数…

【网络原理】数据链路层 和 应用层 重点协议

✨个人主页:bit me👇 ✨当前专栏:Java EE初阶👇 目 录 🍀一. 以太网协议(数据链路层)🌻二. DNS (应用层)🌿三. 网络原理知识面试总结 &#x1f34…

数据链路层六大协议详解

数据链路层六大协议详解 一些假设1.无限制的单工协议(乌托邦协议)五点假设发送方接收方接受方 2.单工停-等协议3.有噪声信道的单工协议 本文图片截取自 学堂在线-华南理工大学的计算机网络课程 一些假设 物理层、数据链路层和网络层各自是独立的处理进程机器A希望向B发送的是…

数据链路层相关协议

网络类型 ---根据数据链路层协议进行划分 MA ---多点接入网络(BMA广播型,NBMA非广播型)P2P---点到点的网络 以太网协议---需要使用MAC地址对不同的主机设备进行区分和标识 ---主要因为利用以太网组件的二层网络可以包含(两个和两…

网络安全——数据链路层安全协议

作者简介:一名云计算网络运维人员、每天分享网络与运维的技术与干货。 座右铭:低头赶路,敬事如仪 个人主页:网络豆的主页​​​​​​ 目录 前言 一.数据链路层安全协议简介 1.数据链路安全性 二.局域网数据链路层协议 1…

数据链路层协议

一、数据链路层概述 1.数据链路层的功能: 1)链路管理:负责数据链路的建立、维持和释放,主要用于面向连接的服务; 2)帧同步:接收方确定收到的比特流中一帧的开始位置和结束位置; …

数据链路层主要协议

PPP:点对点的协议,华为路由器默认封装,是面向字符的控制协议。HDLC:高级数据链路控制协议,Cisco路由器默认的封装,是面向位的控制协议。fram-relay:表示帧中继交换网,它是x.25分组交…

【计算机网络】数据链路层-基本数据链路层协议

【计算机网络】数据链路层-基本数据链路层协议 协议1:一个乌托邦式的单工协议 单工协议即数据只能单向传输。这个协议假设信道永远不会丢失或损坏帧,接收方的处理能力足够快,缓冲区足够大。 发送程序无限循环,接受程序响应事件&am…

数据链路层协议(Ethernet、IEEE802.3、PPP、HDLC)

​​​​​数据链路层协议 首先Ethernet、IEEE802.3、PPP和HDLC都是数据链路层的协议,只不过后面三个不常用而已,数据链路层最常用的协议是Ethernet以太网协议。 Ethernet和IEEE802.3属于以太链路层协议 广域网中经常会使用串行链路来提供远距离的数据…

计算机网络之数据链路层协议总结

数据链路层 1.数据链路层介绍2.ARP协议2.1 ARP的工作流程2.2 ARP数据报格式 3.NAT技术3.1 NAT转换过程3.2 NAPT技术(动态NAT重载) 4.DNS技术4.1 域名层级关系4.2 域名解析流程 5. ICMP协议5.1 ICMP功能5.2 ICMP类型 1.数据链路层介绍 数据链路层主要负责…

(SQL)修改表结构[字段类型]、表字段长度,

①:更改字段类型长度 ALTER TABLE 表名 ALTER COLUMN 字段名 类型的长度–varchar(50) 例:把城市表的城市字段原来长度为20改为30 ALTER TABLE city ALTER COLUMN cname varchar(30) ALTER TABLE #temp ALTER COLUMN bmmc NVARCHAR(30)②&#xff1…

表字段长度的修改

设置后,即可完成sqlserver数据库表字段长度的修改 超时修改:

用命令语句修改mysql某字段长度

在MySQL中修改某个字段的长度,需要使用ALTER TABLE语句,具体操作如下: 假设要修改表A中的字段col1的长度为50。 ALTER TABLE A MODIFY col1 VARCHAR(50); 以上语句中,MODIFY关键字用于修改表结构,VARCHAR(50)用于指定…

开发人员各种鄙视链

最近几年经常在网络上看到各种程序员鄙视链,其实真实情况是我们都很忙,每天 Bug 都调不玩,哪里有空鄙视这,鄙视那。所以很多的的鄙视链大家自己看看,笑一笑就过了,不要太过认真。 1、穿衣服也是有讲究的 2、…