1~3.1小节的回顾视频:
点击查看【bilibili】
3.2小结的回顾视频
点击查看【bilibili】
1 基本概念
1.1 数据链路层的数据发送模型
- 主机H1想要给主机H2拷数据的过程如下:
(此为应用层与应用层之间的通讯)
–>在传输层分段
–>在网络层分地址
–>在链路层加MAC地址封装成帧
–>然后转化为比特流
–>传送到路由器需要解信息
–>继续发送时选择好一个路口再封装信息成比特流发送出去
(此章只关心如何封装,不考虑物理层的复用方式和传输的介质)
1.2 数据链路层的信道类型
数据链路层使用的信道主要有两种类型:
- 点对点信道:这种新到使用一对一的点对点通信方式;
广播信道:这种信道使用一对多的广播通信方式,必须使用专用的共享信道协议来协调这些主机的数据发送。
1.3 链路与数据链路
链路(link):是一条点到点的物理线路段,中间没有任何其他的交换节点。
- 一条链路只是一条通路的一个组成部分。
- 数据链路(data link):除了物理线路外,还必须有通信协议来控制这些数据的传输。若把实现这些协议的硬件和软件加到链路上,就构成了数据链路。
- 最常用的方法是使用适配器(网卡)来实现这些协议的硬件和软件。
- 一般的适配器都包括了数据链路层和物理层这两层的功能。
1.4 帧
数据链路层传送的是帧
在网络层,给数据包增加了接收端和发送端的IP地址。在数据链路层里,增加了帧头、帧尾,MAC地址和校验值。

- 数据报装入的时候会增加一个帧头帧尾(帧的开始,帧的结束)
- 物理层会将帧变成比特流
- 传送结束后掐头去尾上传得到数据
2 数据链路层的三个基本问题
- 封装成帧
- 透明传输
- 差错控制
2.1 封装成帧
封装成帧(framing):就是在一段数据的前后分别添加手首部和尾部后然后构成了一个帧。确定帧的界限。
- 首部和尾部的一个重要作用就是进行帧定界

最大传送单元MTU(maximum transfer unit):数据部分长度上限
为什么要加上一个“首部、尾部”?
- 因为加上首部、尾部后,接收方才能够辨认出 这是一段完整的数据,如果缺少首部 或者 尾部,接收方就会将该段数据扔掉,不接收。
当数据是由可打印的ASCII码组成文本文件时,帧丁姐可以使用特殊 帧定界符。
如下图:
2.2 透明传输
由于帧的开始、结束 的标记使用专门的控制字符。所以,所传输的数据中的 任何8比特的组合 一定不允许和用作帧定界的控制字符的比特编码一样,否则就会出现帧定界的错误。
当传送的帧是用文本文件组成的帧时(文本文件中的字符都是从键盘上输入的),其数据部分显然不会出现像SOH或EOT这样的帧定界控制字符。可见不管从键盘上输入什么字符都可以放在这样的帧中传输过去,因此这样的传输就是透明传输。
“透明”是一个很重要的术语。它表示:某一个实际存在的事物看起来却好像不存在一样(例如,你看不见在你前面有块100%透 明的玻璃的存在)。
“在数据链路层透明传送数据”表示无论什么样的比特组合的数据,都能够按照原样没有差错地通过这个数据链路层。因此,对所传送的数据来说,这些数据就“看不见”数据链路层有什么妨碍数据传输的东西。或者说,数据链路层对这些数据来说是透明的。
问题:
但当数据部分是非ASCII码的文本文件时(如二进制代码的计算机程序或图像等),情况就不同了。如果数据中的某个字节的二进制代码恰好和SOH或EOT这种控制字符一样(如下图), 数据链路层就会错误地“找到帧的边界”,把部分帧收下(误认为是个完整的帧),而把剩下的那部分数据丢弃(这部分找不到帧定界控制字符SOH)。

上图中,数据段出现的“EOT”并不是真正的 结束控制符,它仅仅只是二进制数据00000100
解决:
为了解决透明传输问题,就必须设法使数据中可能出现的控制字符“SOH”和“EOT”在接收端不被解释为控制字符。
具体的方法是:
- 在发送端的数据链路层在数据中出现控制字符“SOH”或“EOT”的前面插入一个转义字符“ESC” (其十六进制编码是1B,二进制是00011011)。
- 而在接收端的数据链路层在把数据送往网络层之前删除这个插入的转义字符。
这种方法称为字节填充(byte sfing)或字符填充(character sufing)。
如果转义字符也出现在数据当中,那么解决方法仍然是在转义字符的前面插入一一个转义字符。因此,当接收端收到连续的两个转义字符时,就删除其中前面的一个。
例如下图所示:
2.3 差错控制(差错检测)
传输过程中可能会产生bit差错:1可能会变成0,而0也可能变成1。
在一段时间内,传输错误的比特率占所传输比特总数的比率称为误码率BER(bit error rate)。
- 误码率和信噪比的关系很大。
为了保证数据传输的可靠性,在计算机网络传输数据时,必须采用各种差错检验措施。
2.3.1 解决方法
解决方法之一:循环冗余检验CRC
下面我们通过一个简单的例子来说明循环冗余检验的原理。
发送端:
在发送端,先把数据划分为组,假定每组k个比特。现假定待传送的数据M = 101001(k=6)。CRC运算就是在数据M的后面添加供差错检测用的n位冗余码,然后构成一个帧发送出去,一共发送(k + n)位。在所要发送的数据后面增加n位的冗余码。
虽然增大了数据传输的开销,但却可以进行差错检测。当传输可能出现差错时,付出这种代价往往是很值得的。
- 如何获得冗余码:
- 这n位冗余码可用以下方法得出。用二进制的模2运算 进行2n乘M的运算,这相当于在M后面添加n个0。得到的(k+n)位的数除以收发双方事先商定的长度为(n+1)位的除数P,得出商是Q,而余数是R(n位,比P少一位)。
- 关于除数P下面还要介绍。在图3-8所示的例子中,M= 101001 (即k=6)。假定除数P= 1101 (即n=3)。经模2除法运算后的结果是:商Q= 110101 (这个商并没有什么用处),而余数R = 001。这个余数R就作为冗余码拼接在数据M的后面发送出去。这种为了进行检错而添加的冗余码常称为帧检验序列FCS (Frame Check Sequence)。因此加上FCS后发送的帧是101001001 (即2”M + FCS),共有(k + n)位。
- 这n位冗余码可用以下方法得出。用二进制的模2运算 进行2n乘M的运算,这相当于在M后面添加n个0。得到的(k+n)位的数除以收发双方事先商定的长度为(n+1)位的除数P,得出商是Q,而余数是R(n位,比P少一位)。
- 顺便说一下,循环冗余检验CRC和帧检验序列FCS并不是同一个概念。CRC是一种检错方法,而FCS是添加在数据后面的冗余码,在检错方法上可以选用CRC,但也可不选用CRC。
总之:
- 除数P 比余数R 位数多1位,且除数可以是任意的(n+1)位二进制数;
- 余数R 是 冗余码,即 FCS;
- 计算完成后,将 数据M+冗余码(余数R)一起发送出去。
小结

注意:
- 链路层只负责,丢弃有差错的帧(此时接受方就会出现丢包),但是它不会主动重传;
- 接收方 发现如果有丢包,则会主动要求 发送方 重传丢失的包。
3 两种情况下的数据链路层
3.1 点对点协议(PPP协议)
互联网用户通常都需要连接到某个ISP才能接入到互联网。PPP(Point-To-Point Protocaol)协议就是用户计算机和ISP进行通信时所使用的的数据链路层协议。
PPP协议是现在全世界使用的最多的数据链路层协议。
- 用户使用拨号电话线接入因特网时,一般都是使用PPP协议。
3.1.1 PPP协议应该满足的要求
简单:是首要要求
封装成帧
透明性
多种网络协议:PPP协议必须能够在在同一条物理链路上,同时支持多种网络层协议(如IP和IPX等)的运行。当点对点链路所连接的是局域网或路由器时,PPP协议必须同时支持在链路所连接的局域网或路由器上运行的各种网络层协议。
多种类型链路:PPP协议可以在多种传输介质(媒体)上使用。如:光纤、铜线、集线器、。。。等等。
差错检测
检测连接状态:能够及时(不超过几分钟)自动检测出链路是否处于正常工作状态。
最大传输单元:对每一种类型的点对点链路设置 最大传送单元MTU的标准默认值。(这个MTU是数据部分的最大长度,而不是 帧 的总长度)。【MTU一般为 1500byte】
网络层地址协商:PPP协议提供一种机制 使通信的两个网络层(例如,两个IP层)的实体能够通过协商知道或能够匹配批次的网络层地址。
数据压缩协商:PPP协议提供一种方法来协商使用数据压缩算法。
3.1.2 PPP协议的组成
1992年制定了PPP协议。经过1993、1994年的修订,PPP协议已经成为因特网的正式标准[RFC 1661]。
PPP协议由三部分组成:
- 数据链路层协议可以用于异步串行或同步串行介质;
- 使用LCP(链路控制协议)建立并维护数据链路连接,可以实现身份验证和欠费管理;
- 网络控制协议(NCP)允许在点到点连接上使用多种网络层协议;
如下图所示:
3.1.3 PPP协议的帧

1、个字段的含义
PPP帧的首部、尾部分别为:4个字段、两个字段。
首部:
- 第一个字段“F”:标志字段F(Flag),规定为十六进制0x7E(0111 1110)。【1个字节】
- 第二个字段“A”:目标地址字段。规定为0xFF(1111 1111);【1个字节】
- 第三个字段“C”:控制字段。规定为0x03(0000 0011);【1个字节】
- 第四个字段“协议”:协议字段。【2个字节】
尾部:
第一个字段“FCS”:使用CRC的帧检测序列FCS。【2个字节】
第二个字段“F”:标志字段F(Flag),规定为十六进制0x7E(0111 1110)。【1个字节】
2、字节填充(类似 透明传输 的处理)
当信息字段(数据部分)中出现了标志字段的值,可能会被误认为是“标志字段”,应如何解决?
答:(当PPP使用异步传输时,它把转义符定义为 0x7D(0111 1101),并使用字节填充)具体如下:
- 把信息字段中出现的每-个0x7E字节转变成为2字节序列(0x7D, 0x5E);
- 若信息字段中出现一个0x7D的字节(即出现了和转义字符-样的比特组合),则把0x7D转变成为2字节序列(0x7D, 0x5D);
- 若信息字段中出现ASCII码的控制字符(即数值小于0x20的字符),则在该字符前面要加入一个0x7D字节,同时将该字符的编码加以改变。例如,出现0x03 ( 在控制字符中是“传输结束”ETX)就要把它转变为2字节序列(0x7D, 0x23)。
3、零比特填充方法
PPP协议用在SONET/SDH链路时,使用同步传输(一连串的比特连续传送)而不是异步传输(逐个字符地传送)。在这种情况下,PPP 协议采用零比特填充方法来实现透明传输。
零比特填充的具体做法是:
- 在发送端,先扫描整个信息字段(通常用硬件实现,但也可用软件实现,只是会慢些)。只要发现有5个连续1,则立即填入一个0。因此经过这种零比特填充后的数据,就可以保证在信息字段中不会出现6个连续1。
- 接收端在收到一个帧时,先找到标志字段F以确定一个帧的边界,接着再用硬件对其中的比特流进行扫描。每当发现5个连续1时,就把这5个连续1后的一个0删除,以还原成原来的信息比特流(图3-11)。这样就保证了透明传输:在所传送的数据比特流中可以传送任意组合的比特流,而不会引起对帧边界的错误判断。
3.1.4 PPP协议不适用序号和确认机制
是因为出于以下的考虑:
- 在数据链路层出现错误的概率不大时,使用较简单的PPP协议较为合理;
- 在Internet环境下,PPP的信息字段放入的数据是IP数据报。数据链路层的可靠传输并不能保证网络层的传输也是可靠的;
- 帧检验序列FCS字段可以保证无差错接受。
3.1.5 PPP协议的工作状态
上一节我们通过PPP帧的格式讨论了PPP帧是怎样组成的。但PPP链路一开始是怎样被初始化的?
答:
当用户拨号接入ISP后,就建立了一条从用户个人电脑到ISP的物理连接。这时,用户个人电脑向ISP发送一系列的链路控制协议LCP分组(封装成多个PPP帧),以便建立LCP连接。这些分组及其响应选择了将要使用的一些PPP参数。接着还要进行网络层配置,网络控制协议NCP给新接入的用户个人电脑分配一个临时的IP地址。这样,用户个人电脑就成为互联网上的一个有IP地址的主机了。
当用户通信完毕时,NCP释放网络层连接,收回原来分配出去的IP地址。接着,LCP释放数据链路层连接。最后释放的是物理层的连接。
如下图所示:

3.2 使用广播信道的数据链路层
广播信道 可以进行 一对多 的通信。下面介绍的局域网就是使用的 广播信道。
3.2.1 局域网的数据链路层
局域网最主要的特点是:网络为一个单位所拥有,且地理范围和站点数据均有限。
局域网具有如下一些主要优点:
- 具有广播功能,从一个站点可很方便地访问全网。局域网上的主机可共享连接在局域网上的各种硬件和软件资源。
- 便于系统的扩展和逐渐演变,各设备的位置可灵活调整和改变。
- 提高了系统的可靠性(reliability)、可用性(availability)和生存性(survivability)。
局域网按照网络拓扑进行分类(网络拓扑:即物理上的连接)
目前主要使用“星形网”
需要注意:
局域网工作的层次跨越了数据链路层 和 物理层。由于局域网技术有关链路层的内容较丰富,所以这里将局域网的内容放在数据链路层这一章中讨论,但这并不意味着局域网仅仅和数据链路层有关。
3.2.1.1 共享通信媒体
共享信道 要着重考虑一个问题:如何使众多用户能够合理而方便地共享通新媒体资源。 在技术上有两种方法:
- 静态划分信道

用户只要分配了信道就不会和其他用户发送冲突。但这种划分信道的方法代缴较高,不适合于局域网使用。
- 动态媒体接入控制(多点接入)
3.2.1.2 以太网
- 以太网是全球使用最广泛的局域网技术;
- 以太网是一种广播类型的网络;
- 以太网是基于数据包交换的;
最初的以太网是将许多计算机都连接到一根总线上。当初认为这样的连接方法既简单又可靠,因为总线上没有 有源器件。
总线上每一个主机都能检测到B发送的数据。但是只有D的地址和数据帧首部写入的地址一致,所以只有D接收。其余计算机都能检测到这不是发送给他们的数据帧,所以就丢弃这个数据帧。
这是一种具有广播特性的总线上实现了一对一通信。这种方式不安全。
优点:不用 划分信道;
缺点:①所有的主机都能收到数据(比如:B给D发送信息,但是A、C、E也可以收到(知识它们知道不是发给它们的,就丢弃了));②在这一个链路上,只能同时一个发、另一个收。
3.2.1.3 以太网的通信的协议CSMA/CD协议
上述的以太网的缺点②所述:总线上只要有一台计算机在发送数据,总线的传输资源就被占用,因此在同一时间只允许一台计算机发送数据,否则计算机之间就会互相干扰,使得发送的数据被破坏。
那如何协调总线上个计算机的工作就是以太网要解决的问题。如何解决?
答:
以太网采用最简单的随机接入。
| 随机接入: 就好像有很多人在开会,但是没有会议主持人来控制发言,每个人都可以随时发言。但是需要有一个协议来协调大家的发言。 > 就比如说:如果你听见其他人在发言,此时你就不能在发言。但有时碰巧两个或更多人同时发言了,那么 > 一旦发现冲突,大家都立即停止发言,等到没有人发言了,你在发言。 以太网采用的协调方法和上面的方法相似,使用的协议是CSMA/DC,即 载波监听多点接入/碰撞检测(Carrier Sense Multiple Access with Collision Detection) |
|---|
- “多点接入”:表示许多计算机以多点接入的方式连接在一根总线上;
“载波监听”:指每一个站在发送数据之前,先要检测一下总线上是否有其他计算机在发送数据。如果有,则暂时不要发送数据,以免发生碰撞。
- “载波监听”就是利用电子技术检测总线上有没有其他计算机发送的数据信号。
“碰撞检测”:计算机边发送数据边监测信道上的信号电压大小。
- 当几个站同时在总线上发送数据时,总线上的信号电压摆动值将会增大(互相叠加);
- 当一个站检测到的信号电压摆动值超过一定的门限值时,就认为总线上至少有两个站同时在发送数据,表明产生了碰撞。
所谓,“碰撞”就是发生类冲突,因此,“碰撞检测”也称为“冲突检测”
检测到碰撞后
- 在发生碰撞时,总线上传输的信号产生类严重的失真,无法从中恢复出有用的信息来;
- 每一个正在发送数据的站,一旦发现总线上出现了碰撞,就要立即停止发送,免得继续浪费网络资源,然后等待一段随机时间后再次发送。
下面视频演示“碰撞检测”
CSMA/DC协议的特点
- 一个站不可能同时进行发送和接收(但必须边发送边监听信道)。因此,使用CSMA/CD协议的以太网不可能进行全双工通信,只能进行 双向交替通信(半双工通信)。
- 每个站在发送数据之后的一小段时间内,存在着遭遇碰撞的可能性。这种 发送的不确定性 使得整个以太网的平均通信量远小于以太网的最高数据率。
以太网的争用期
- 最先发送数据帧的站,在发送数据帧后至多经过时间2τ(两倍的 端到端往返时延)就可以知道是否发生碰撞。
- 经过争用期这段时间还没有检测到碰撞,才能肯定这次发送不会发生碰撞。
以太网的争用期:以太网的端到端往返时延2τ 称为 争用期(也叫:碰撞窗口)。通常,取51.2微秒为争用期的长度。
- 对于10Mb/s的以太网,在争用期可以发送512bit,也就是64 byte;
- 以太网在发送数据的时候,若前64字节没有冲突,后续也不会发生冲突;
最短有效帧长:以太网的帧 最短为64字节。
- 如果发送冲突,就一定是在发送的前64字节之内;
- 由于一检测到冲突就立即终止发送,这时已经发送出去的数据一定小于64字节。
- 以太网规定了最短有效帧长为64字节,凡长度小于64字节的帧 都是由于冲突而异常终止的无效帧。
发生“碰撞(冲突)”的解决办法:二进制指数类型退避算法【是CSMA/DC协议来实现的】
发生碰撞的站在停止发送数据后,要推迟(退避)一个随机时间后,才能再次发送数据。
- 确定基本退避时间,一般是取为 争用期2τ;
- 定义参数k:

- 从整数集合
中,随机取出一个数,记为r;重传所需的时延就是 r倍的基本退避时间;
- 当重传达16次仍不能成功时则丢弃该帧,并向高层报告。
3.3 以太局域网(以太网)
现在具体讲解以太网。
3.2.0 以太网发送的数据使用“曼彻斯特(Manchester)编码”
以太网发送的数据都是使用曼彻斯特(Manchester)编码的信号。
| 问题:
二进制基带数字信号通常是 高、低电压交替出现的信号。使用这种信号的最大问题就是当出现一长串的连1或0时,接收端就无法从收到的比特流中提取位同步(即比特同步)信号。
如下图所示,曼彻斯特编码的编码方法:就是把每一个马原再分成两个相等的间隔。
- 码元1:是前一个间隔为低电压而后一个间隔为高电压;
- 码元0:与之相反,即从高电压变为低电压(也可以采用相反的约定);
这样就保证了在每一个码元的正中间出现一次电压的转换,而接收端就利用这种电压的转换很方便的把为同步信号提取出来。
缺点:
他所占的频带宽度比原始的基带信号增加了一杯(因为每秒钟传送的码元数加倍了) |
| —- |
3.2.1 以太网的两个标准
- DIX Ethernet V2:是世界上第一个局域网产品(以太网)的规约;
- IEEE的802.3标准:
- 这两个标准的差别很小,所以,可以将802.3局域网 简称“以太网”。
- 严格来说,“以太网”应当是指符合DIX Ethernet V2标准 的局域网。
3.2.2 以太网与数据链路层的两个子层
为了使数据链路层能更好地适应多种局域网标准,802委员会就将 局域网的数据链路层拆成两个子层:
- 逻辑链路控制 LLC(logical link control)子层;
- 媒体接入控制 MAC(medium access control)子层;
与接入到传输媒体有关的内容都放在MAC子层上,而LLC子层与传输媒体无关,不管什么协议的局域网对LLC子层都是透明的;
由于TCP/IP体系经常使用的局域网 DIX Ethernet V2 而不是 802.3标准中的几种局域网,因此现在802委员会制定的逻辑链路控制子层LLC(即 802.2标准)的作用已经不大了。
很多厂商生产的适配器上仅有MAC协议,而没有LLC协议。
3.2.3 以太网提供的服务
以太网提供服务是不可靠的交付,即最大努力的交付;
- 当接收站收到的有差错的数据帧时就丢弃此帧,其它什么也不做,差错的纠正由高层来处理;
- 如果高层发现丢失了一些数据而进行重传,但以太网并不知道这是一个重传的帧,而是当作一个新帧发送。
(差错校验由两端的计算机决定的,中间的设备不管,只会把数据丢弃。)
3.2.4 以太网的星型拓扑结构
物理上是星型,逻辑上是总线型。
- 传统的以太网最初是使用 粗同轴电缆,
- 后来演进到使用比较便宜的 细同轴电缆,
- 最后发展为使用更便宜的双绞线。不用电缆而是用无屏蔽双绞线。每个站需要用两对双绞线,分别用于 接受、发送。
这种以太网采用星型拓扑,在星型的中心则增加了一种可靠性非常高的设备,叫做 集线器(hub)。
现在“集线器”已经很少见了;基本都是用“交换机”
RJ-45插头:网线的两端的插头就是;
3.2.4.1 集线器的构造
集线器是使用电子器件来模拟实际电缆线的工作,因此整个系统仍然像一个传统的以太网那样运行。现在的集线器使用了大规模的集成电路芯片,因此这样的硬件设备的可靠性已经大大提高。
集线器的特点
使用集线器的以太网在逻辑上仍是一个**总线网,各工作站使用的还是**CSMA/CD协议,并共享逻辑上的总线。
集线器很像一个多接口的转发器,工作在物理层。
因为集线器和 网线 一样没有任何智商。集线器看不懂里面传送的是什么。集线器就只管传送信号,至于信号的具体内容他不用管。
3.2.5 以太网的信道利用率
以太网的信道被占用的情况:
争用期长度为2τ;帧长为L bit,数据发送率为C b/s,帧的发送时间为L/C = T0 秒。
以太网的信道利用率
一个帧从开始发送,经可能发生的碰撞后,将再次重传多次,直到发送成功且信道转为空闲(即再经过t使得信道上没有信号在传播)时为止,是发送一帧所需的平均时间。
定义参数a:
【以太网单程端到端时延τ 与 帧的发送时间T0之比】
- 要提高以太网的信道利用率,就必须减小τ与T0之比。
- a→0表示一发生碰撞就立即可以检测出来,并立即停止发送,因而信道利用率很高。
- a越大,表明争用期所占的比例增大,每发生一次碰撞就浪费许多信道资源,使得信道利用率明显降低。
以太网的信道利用率的最大值
对以太网参数的要求
- 当数据率一定时,以太网的连线的长度受到限制,否则τ的数值会太大
- 以太网的帧长不能太短,否则T0 的值会太小,使a值太大。
信道利用率的最大值
- 在理想化的情况下,以太网上的各站发送数据都不会产生碰撞 (这显然已经不是CSMA/CD, 而是需要使用一种特殊的调度方法),即总线一旦空闲就有某一个站立即发送数据。
- 发送一帧占用线路的时间是To + t,而帧本身的发送时间是T0。
于是我们可计算出理想情况下的极限信道利用率:

注意,这是理想状态下的,信道利用率的最大值
3.2.6 以太网的MAC层
硬件地址 = 物理地址 = MAC地址
计算机的网卡在出厂时,就已经在其芯片上刻印了这个MAC地址。
网卡的MAC地址:一共由48位二进制位组成。
- MAC地址前3个字节(24位)是厂家分配的地址字段,代表厂家;
- 后3个字节(24位)是厂家自定义,称为扩展标识符;
一个地址块可以产生2^24个地址,这种48位地址称为MAC-48,通用名为EUI-48,这就是MAC地址;
MAC地址实际上是每一个站的名字或标识符。
查看MAC地址 命令ipconfig /all
| 如何修改MAC地址
注意:并不是真正的修改MAC地址,而是相当于告诉计算机不再使用网卡的MAC地址,而是使用人工修改后的MAC地址。
1. win10为例
- 打开网络适配器

- 先点属性再点配置

- 填好MAC地址值就可以了,记得将-去掉

(如果MAC地址冲突是无法正常上网的。特殊情况下可以借用别人的MAC地址来达到上网的目的) |
| —- |
3.2.6.1 适配器检查MAC地址
- 适配器从网络上每收到一个MAC帧就要用硬件检查MAC帧中的MAC地址:
->如果是发往本站的帧就收下,然后进行其它处理;
->否则丢弃。 - 发往本站的帧包括:
->单播帧(unicast)(一对一)
->广播帧(broadcast)(一对全体)(全1,收到了FFFFFF就是表示给自己的)
->多播帧(multicast)(一对多)
3.2.6.2 MAC地址帧的格式
常用的以太网MAC帧 格式有两种标准:
- DIX Ethernet V2
- IEEE的802.3标准
最常用的MAC帧 是 以太网V2的格式。
假定下图的网络层使用的是IP协议。
“类型”:指明“数据”中的内容是什么、是什么协议;
“数据”:数据部分最少为46个字节(因为之前提到以太网的帧至少为64字节,而上面的已经占用[6+6+2+4=18],所以,64-18=46);最大为1500字节
在帧开头部分有一个 8字节 的插入:它是由硬件生成的。
- 第一个字段占7字节的 前同步码:1和0交替码,其作用是 使接收端的适配器在接收MAC帧时能够迅速调整其时钟频率,使它和发送端的时钟同步。即“实现位同步”
- 第二个字段占1字节的 帧开始定界符:定义为1010 1011。它前六位作用和前同步码一样,后两个连续的1 告诉 接收端适配器MAC帧的信息要来了,注意接收。
无效的MAC帧:
- 帧的长度不是整数个字节;
- 用收到的帧检验序列FCS查出有错误;
- 数据字段的长度不在46-1518字节内;【有效的MAC帧 长度在 64~1518字节之间】
对检查出的小小MAC帧就简单地丢弃。以太网 不负责重传丢弃的帧。
- 帧之间最小间隔:帧之间最小间隔为9.6微秒,相当于96bit的发送时间。
- 一个站在检测到总线空闲时,还需要等待9.6微秒后才能再次发送数据,这样做是为了使刚刚收到的数据帧的站接收缓存来得及清理,做好接收下一帧的准备。(也就是缓存处理做准备)
3.2.6.3 数据帧的抓包示例
视频:https://www.bilibili.com/video/BV17p411f7ZZ?p=43
3.4 扩展的以太网
在许多情况下,我们希望对以太网的覆盖范围进行扩展。本节先讨论在物理层对以太网扩展,然后讨论在数据链路层对以太网扩展。这种扩展的以太网在网络层看来仍然是一个网络。
3.4.1 在物理层扩展以太网
以太网上的主机之间的距离不能太远,否则主机发送的信号经过铜线的传输就会衰减到使CSMA/CD协议无法正常工作。
现在扩展主机和集线器之间的距离的一种简单方法就是使用光纤(通常是一对管线)和一对光纤调制解调器。如下图:
光纤调制解调器的作用就是进行电信号和光信号的转换。由于光纤带来的时延很小,并且带宽很宽,因此使用这种方法可以很容易地使主机和几公里以外的集线器相连接。
如果使用多个集线器,就可以连接成覆盖更大范围的多级星型结构的以太网。
如:一个学院的三个系各有一个以太网,可通过一个主干集线器将各系的以太网连接,成为一个恒大的以太网。

- 好处:①学院中不同系的以太网上的计算机可以进行跨系的通信。②扩大了以太网覆盖的地理范围。
- 缺点:在三个系的以太网互连之前,每一个系都是一个独立的碰撞域(冲突域)。互连之后,变成了一个碰撞域,此时某个系的两个站在通信是所传送的数据会通过所有集线器进行转发,是的其他系的内部在这时都不能通信(一发送数据就会发生碰撞)。【所以,主机数量不应过多,一般不超过30】

3.4.2 在数据链路层扩展以太网
在物理层扩展以太网,会降低效率。所以想办法提高效率,于是就有了在数据链路层扩展以太网。
3.4.2.1 网桥
在数据链路层扩展局域网是使用网桥。
- 网桥工作在数据链路层,他根据MAC帧的目的地址对收到的帧进行转发。
- 网桥具有过滤帧的功能。当网桥收到一个帧时,并不是向所有的接口转发此帧,而是现检查此帧的目的MAC地址,然后再确定将该帧转发到对应的接口。
3.4.2.2 交换机
后来出现了“交换式集线器(switching hub)”,于是就很快的淘汰了网桥。交换式集线器 常称为 以太网交换机(switch) 或 第二层交换机(L2 switch),强调这种交换机工作在数据链路层。
交换机的特点:
以太网交换机 实质上就是一个 多接口的网桥。
通常有十几个或者更多的接口。和工作在物理层的转发器、集线器有很大的差别。
- 以太网交换机的每个接口都直接与:
- 一个单台的主机
- 或者 另一个以太网交换机
相连接。
以太网交换机具有并行性:
- 能同时连通多对接口,使多对主机能同时通信(而网桥只能一次分析、转发一个帧)。相互通信的主机都是独占传输媒体,无碰撞的传输数据。
以太网交换机的接口有 存储器:
- 能在输出端口繁忙时把到来的帧进行缓存。因此,如果连接在以太网交换机上的两台主机,同时向另一台主机发送帧,那么当这台主机的接口繁忙时,发送帧的这两台主机的接口会把收到的帧暂存一下,以后再发送出去。
以太网交换机是一种 即插即用的设备:
- 其内部的 “帧交换表”(也叫 地址表)是通过自学习算法自动逐渐建立起来的。
- 以太网是用来专用的 交换结构芯片,用硬件转发,起转发速率要比使用软件转发的网桥快很多。
以太网的自学习功能:
A先向B发送一帧:
- 从接口1进入到交换机。交换机收到帧后,先查找交换表,没有查到应从哪个接口转发这个帧(在MAC地址这一列中, 找不到目的地址为B的项目)。
- 接着,交换机把这个帧的源地址A和接口1写入交换表中,
- 并向除接口1以外的所有接口广播这个帧 (这个帧就是从接口1进来的,当然不应当把它再从接口1转发出去)。
- 然而,C和D将丢弃这个帧,因为目的地址不对。只B才收下这个目的地址正确的帧。这也称为过滤。
B再向A发送一帧:(假定接下来B通过接口3向A发送一帧)。
- 交换机查找交换表,发现交换表中的MAC 地址有A。表明要发送给A的帧(即目的地址为A的帧)应从接口1转发。于是就把这个帧传送到接口1转发给A。显然,现在已经没有必要再广播收到的帧。
- 交换表这时新增加的项目(B, 3),表明今后如有发送给B的帧,就应当从接口3转发出去。
经过一段时间后,只要主机C和D也向其他主机发送帧,以太网交换机中的交换表就会把转发到C或D应当经过的接口号(2或4) 写入到交换表中。
这样,交换表中的项目就齐全了。要转发给任何一台主机的帧,都能够很快地在交换表中找到相应的转发接口。
优点:
以太网交换机的 自学习方法使得以太网交换机能够 即插即用,不必人工进行配置。
交换机使用了生成树算法
但有时为了增加网络的可靠性,在使用以太网交换机组网时,往往会增加一些冗余的链路。
在这种情况下,自学习的过程就可能导致以太网帧在网络的某个环路中无限制地兜圈子。如下图:
在图3-26中,假定一开始:
- 主机A通过 接口交换机#1 向主机B发送一帧。
- 交换机#1收到这个帧后就向所有其他接口进行广播发送。
- 现观察其中一个帧的走向:离开 交换机#1的接口3→交换机#2的接口1→接口2→交换机#1的接口4→接口3→交换机#2的接口1这样就无限制地循环兜圈子下去,白白消耗了网络资源。
为了解决这种兜圈子问题,IEEE 的802.1D标准制定了一个生成树协议STP (SpanningTree Protocol)
- 其要点就是不改变网络的实际拓扑,但在逻辑上则切断某些链路,使得从一台主机到所有其他主机的路径是无环路的树状结构,从而消除了兜圈子现象。
生成树算法的具体内容:https://www.bilibili.com/video/BV17p411f7ZZ?p=47 更改交换机的 生成树的根 优先级:https://www.bilibili.com/video/BV17p411f7ZZ?p=48
3.4.3 虚拟局域网VLAN
局域网LAN
虚拟局域网VLAN
一个VLAN = 一个广播域 = 逻辑网段(子网)
虚拟局域网VLAN是由一些 局域网网段 构成的与 物理位置无关的逻辑组,而这些网段具有某些共同的需求。每一个VLAN的帧都有一个明确的标识符,指明发送这个帧的计算机属于哪一个VLAN。
虚拟局域网其实只是局域网给用户提供的一种服务, 而并不是新型局域网。
| 例如:
图3-27画的是使用了四个交换机的网络拓扑。设有10台计算机分配在三个楼层中,构成了三个局域网,即:
- LAN: (AI, A2, B1, C1),
- LAN2: (A3, B2, C2),
- LAN: (A4, B3, C3)
但这10个用户划分为三个工作组,也就是说划分为三个虚拟局域网VLAN。即:
- VLAN1: (AI, A2, A3, A4),
- VLAN2: (B1, B2, B3);
- VLAN3: (C, C2, C3)
|
| —- |
使用以太网交换机可以很方便的将这10台计算机划分为三个虚拟局域网。
在虚拟局域网中每一个站都可以收到同一个虚拟局域网上其他成员发出的广播。
相反,在同一个局域网中的其他成员反而不会受到发来的广播。
- 例如:当B1向工作组内的成员发送数据时,站B2,B3会收到广播的信息;【因为属于一个VLAN】
- 例如:当B1向工作组内的成员发送数据时,站AI, A2, C1不会收到广播的信息。【虽然它们连接在同一个以太网交换机中。】
从而,虚拟局域网就限制了接收广播信息的计算机数,使得网络不会因传播过多的信息(即“广播风暴”)而因其性能恶化。
3.4.3.1 创建和管理VLAN
对于不同的部分 分成不同的VLAN,但是接入同一个交换机。尽管如此,由于VLAN的作用,部门之间的不会造成干扰的,相当于两个交换机。部门与部门之间数据链路层就不通了。
一个交换机上创建两个VLAN:
3.4.3.2 跨交换机的VLAN
VLAN的数据帧:
主要就是 添加了 4字节的标识符,称为 VLAN标记。
交换机的端口有两种类型:
- 访问端口:
访问端口只能属于某一个VLAN,它只能承载某一个VLAN的流量,连接访问端口的链路称为访问链路。 - 中继端口:
中继端口能够同时承载多个VLAN的流量,连接中继端口的链路称为干道链路。数据帧进入干道链路时需要添加标记(VLAN ID),离开干道时去掉帧标记,这个过程对计算机来说是透明的。

| 两个vlan相当于下图所示:

中继端口与访问端口示意图:(不同VLAN之间的计算机想要通信,必须通过路由器)
|
| —- |
总结:
- 交换机组建的网络,如果需要多个VLAN通过的链路就需要配置为干道链路。
- 如果链路上只需要单一VLAN的数据通过就可以配置为访问链路。
3.5 高速以太网
随着电子技术的发展,以太网的速率也不断提升。从传统的10 Mbit/s以太网一直发展到现在常用的速率为1 Gbit/s 的吉比特以太网,甚至更快的以太网。下面简单介绍几种高速以太网技术。
3.5.1 100BASE-T以太网
- 速率达到或超过100 Mb/s(100 Mbit/s)的以太网称为高速以太网。
- 在双绞线上传送100 Mb/s基带信号的星型拓扑以太网,仍使用IEEE 802. 3的CSMA/CD协议。100BASE T以太网又称为快速以太网(Fast Ethernet) 。
100Base-T以太网的物理层:
- 100BASE-TX:使用2对UTP 5类线或屏蔽双绞线STP。
- 100BASE-FX :使用2对光纤。
- 100BASE-T4:使用4对UTP3类线或5类线。

100Base-T以太网的特点:
- 可在全双工方式下工作而无冲突发生。因此,不使用 CSMA/CD协议。
- MAC帧格式仍然是802.3标准规定的。
- 保持最短帧长不变,但将一个网段的最大电缆长度减小到 100 m。
- 帧间时间间隔从原来的 9.6微秒 改为现在的 0.96微秒。
3.5.2 吉比特以太网
- 允许在 1 Gb/s 下全双工和半双工两种方式工作。
- 使用 802.3 协议规定的帧格式。
- 在半双工方式下使用 CSMA/CD协议(全双工方式不需要使用CSMA/CD协议)。
- 与 10BASE-T和100BASE-T技术向后兼容。
吉比特以太网 物理层标准:
端到端的以太网传输:
10吉比特以太网的出现,以太网的工作范围已经从局域网(校园网、企业网)扩大到城域网和广域网,从而实现了端到端的以太网传输。
3.6 组建局域网的三层模型
Cisco建网3层模型:









