数据链路层基础知识

一.数据链路层基础

首先,大家需要知道,数据链路层属于计算机网络的底层。数据链路层使用信道主要有两种类型:
(1).点对点信道:这种信道使用一对一的点对点通信方式。
(2).广播信道:这种信道使用一对多(可以看作是全部) 的广播通信方式。广播信道上连接的主机很多,因此必须使用专用的共享协议来协调这些主机的数据发送。
本章最重要的的内容是:
(1). 数据链路层的点对点信道和广播信道的特点,以及这两种信道所使用的协议(PPP协议以及CSMA/CD协议)的特点。
(2). 数据链路层的三个基本问题:封装成帧、透明传输和差错检测。
(3).以太网MAC层的硬件地址。
(4). 适配器、转发器、集线器、网桥、以太网交换机的作用以及使用场合。

1.数据链路层的简单模型
在这里插入图片描述
我们来理解一下这幅图:
主机H1要向主机H2发送数据是如何转发的?
(1). 数据会从应用进程的程序中,将要发送的数据封装,并且是把数据由上至下把数据逐一封装(封装就是在每一层中,把这一层功能的头部加上去),到了物理层及以下,把数据封装成比特流,在向下把数据转换成一种能在传输介质上传输的一种信号,并把信号发送出去。
(2). 当R1(路由器)接收到数据后,会将数据存储并转发。当数据进入路由器后,路由器会将数据的内容向上读取,并判断这个路由器需要向哪个接口转发该数据,最后将数据交付到另外一个路由器。
(3). 当然,R2向R3转发也是一样的过程,到了R3的时候,R3知道H2是与它直连的,最后,R3会将数据重新封装,发数据直接交付给H2PC机。
注意:因为路由器上不是只有两个接口,它上面会有很多接口,所以这一步我们先不探讨,路由器是如何判断路由器的下一个路由器的方向的,我们这里只需要知道路由器工作在网络层,只有把数据解封在网络层上,路由器才知道如何判断去往下一路由器。

2.数据链路
(1).链路 (link) :是一条无源的点到点的物理线路段,中间没有任何其他的交换结点。
一条链路只是一条通路的一个组成部分。(通路是由无数个链路与结点构成的)
(2).数据链路 (data link):除了物理线路外,还必须有通信协议来控制这些数据的传输。若把实现这些协议的硬件和软件加到链路上,就构成了数据链路。

3.封装成帧
我们从物理层了解到,物理层发送的数据,叫做比特流,是连续的,但我们换个角度想想用户不可能靠着一堆比特流,就像010101010101连续不断的来看我们的数据吧,所以就像我们说话,要把话讲清楚,就得把话分开,所以我们这里要把数据变成一段一段的,这样我们才知道我们说的话,什么时候是开始,什么时候是停下来的,这就叫封装成帧
所以,数据链路层发送的数据有一个简单易懂的名字–
在这里插入图片描述
这就带来了一个很好玩的问题,我们如何在一堆连续且无规律的比特流中,把数据变成一个一个像单位一样的帧?
解决方法:我们给这些比特流加一些特征,这样计算机在识别比特流的时候,就能对数据进行封装成帧了。我们首先将一段数据的前后分别添加首部和尾部,然后就构成了一个帧。确定帧的界限。

用控制字符进行帧定界的方法举例
(1).当数据是由可打印的 ASCII 码组成的文本文件时,帧定界可以使用特殊的帧定界符。
(2).控制字符 SOH (Start Of Header) 放在一帧的最前面,表示帧的首部开始。另一个控制字符 EOT (End Of Transmission) 表示帧的结束。
(3).既然我们知道了有帧的首部和帧的尾部且帧是像一个单位长度一样的,那么他就有帧的长度。如图:
在这里插入图片描述
中间就是我们所要分装的数据部分,也可以叫做IP数据报,它是由网络层向下封装的,而这个数据包也是有长度限制的,我们把所发送的数据的最长长度叫做–最大接收单元(MTU),默认最大长度大小–1500字节

4.透明传输
为什么需要透明传输?
如果数据中的某个字节的二进制代码恰好和 SOH 或 EOT 一样,数据链路层就会错误地“找到帧的边界”。
解决方法:
字节填充 (byte stuffing) 或字符填充 (character stuffing)。
(1).发送端的数据链路层在数据中出现控制字符“SOH”或“EOT”的前面插入一个转义字符“ESC” (其十六进制编码是 1B)。
(2).接收端的数据链路层在将数据送往网络层之前删除插入的转义字符。
(3).如果转义字符也出现在数据当中,那么应在转义字符前面插入一个转义字符 ESC。当接收端收到连续的两个转义字符时,就删除其中前面的一个。
在这里插入图片描述

5.差错检测
为什么需要差错检测?
(1).在传输过程中可能会产生比特差错:1 可能会变成 0 而 0 也可能变成 1。
(2).在一段时间内,传输错误的比特占所传输比特总数的比率称为误码率 BER (Bit Error Rate)。
(3).误码率与信噪比有很大的关系。
(4).为了保证数据传输的可靠性,在计算机网络传输数据时,必须采用各种差错检测措施。

解决方法:
CRC循环冗余检验;
(1).在数据链路层传送的帧中,广泛使用了循环冗余检验 CRC 的检错技术。
(2).在发送端,先把数据划分为组。假定每组 k 个比特。
(3).假设待传送的一组数据 M = 101001(现在 k = 6)。我们在 M 的后面再添加供差错检测用的 n 位冗余码一起发送。
(4).用二进制的模 2 运算进行 2n 乘 M 的运算,这相当于在 M 后面添加 n 个 0。
(5).得到的 (k + n) 位的数除以事先选定好的长度为 (n + 1) 位的除数 P,得出商是 Q 而余数是 R,余数 R 比除数 P 少 1 位,即 R 是 n 位。
(6).将余数 R 作为冗余码拼接在数据 M 后面发送出去。

帧检验序列 FCS
在数据后面添加上的冗余码称为帧检验序列 FCS (Frame Check Sequence)。
循环冗余检验 CRC 和帧检验序列 FCS 并不等同。
1.CRC 是一种常用的检错方法,而 FCS 是添加在数据后面的冗余码。
2.FCS 可以用 CRC 这种方法得出,但 CRC 并非用来获得 FCS 的唯一方法。

接收端对收到的每一帧进行 CRC 检验
(1) 若得出的余数 R = 0,则判定这个帧没有差错,就接受 (accept)。
(2) 若余数 R!= 0,则判定这个帧有差错,就丢弃。
但这种检测方法并不能确定究竟是哪一个或哪几个比特出现了差错。
只要经过严格的挑选,并使用位数足够多的除数 P,那么出现检测不到的差错的概率就很小很小。

应当注意:
(1).仅用循环冗余检验 CRC 差错检测技术只能做到无差错接受 (accept)。(“无差错接受”是指:“凡是接受的帧(即不包括丢弃的帧),我们都能以非常接近于 1 的概率认为这些帧在传输过程中没有产生差错”。)
(2).要做到“可靠传输”(即发送什么就收到什么)就必须再加上确认和重传机制。
(3).在数据链路层使用 CRC 检验,能够实现无比特差错的传输,但这还不是可靠传输。
(4).可靠传输的重要三点:不重复,不丢失,不失序。(所以CRC循环冗余检验根本不能保障可靠传输的原因就在这里,CRC冗余检验只能检验帧内部有没有出错,不能检验帧与帧之间有没有出错)

二.点对点PPP协议

1.PPP协议需要满足的要求:
(1).简单 —— 这是首要的要求。
(2).封装成帧 —— 必须规定特殊的字符作为帧定界符。
(3).透明性 —— 必须保证数据传输的透明性。
(4).多种网络层协议 —— 能够在同一条物理链路上同时支持多种网络层协议。
(5).多种类型链路 —— 能够在多种类型的链路上运行。
(6).差错检测 —— 能够对接收端收到的帧进行检测,并立即丢弃有差错的帧。
(7).检测连接状态 —— 能够及时自动检测出链路是否处于正常工作状态。
(8).最大传送单元 —— 必须对每一种类型的点对点链路设置最大传送单元 MTU 的标准默认值,促进各种实现之间的互操作性。
(9).网络层地址协商 —— 必须提供一种机制使通信的两个网络层实体能够通过协商知道或能够配置彼此的网络层地址。
(10).数据压缩协商 —— 必须提供一种方法来协商使用数据压缩算法。

2. PPP 协议不需要的功能
(1).纠错
(2).流量控制
(3).序号
(4).多点线路
(5).半双工或单工链路

3. PPP 协议的组成
(1) . 一个将 IP 数据报封装到串行链路的方法。
(2) . 链路控制协议 LCP (Link Control Protocol)。
(3) .网络控制协议 NCP (Network Control Protocol)。

4.PPP 协议的帧格式
(1).PPP 帧的首部和尾部分别为 4 个字段和 2 个字段。
(2).标志字段 F = 0x7E (符号“0x”表示后面的字符是用十六进制表示。十六进制的 7E 的二进制表示是 01111110)。
(3).地址字段 A 只置为 0xFF。地址字段实际上并不起作用。
(4).控制字段 C 通常置为 0x03。
(5).PPP 是面向字节的,所有的 PPP 帧的长度都是整数字节。

在这里插入图片描述
5.透明传输问题
(1).当 PPP 用在同步传输链路时,协议规定采用硬件来完成比特填充(和 HDLC 的做法一样)。
(2).当 PPP 用在异步传输时,就使用一种特殊的字符填充法

比特填充
这里的比特填充,也叫做零比特填充。
(1).PPP 协议用在 SONET/SDH 链路时,使用同步传输(一连串的比特连续传送)。这时 PPP 协议采用零比特填充方法来实现透明传输。
(2).在发送端,只要发现有 5 个连续 1,则立即填入一个 0。
(3).接收端对帧中的比特流进行扫描。每当发现 5 个连续1时,就把这 5 个连续 1 后的一个 0 删除。

字符填充法
(1).将信息字段中出现的每一个 0x7E 字节转变成为 2 字节序列 (0x7D, 0x5E)。
(2).若信息字段中出现一个 0x7D 的字节, 则将其转变成为 2 字节序列 (0x7D, 0x5D)。
(3).若信息字段中出现 ASCII 码的控制字符(即数值小于 0x20 的字符),则在该字符前面要加入一个 0x7D 字节,同时将该字符的编码加以改变。

5.PPP不提供使用序号和确认的可靠传输
PPP 协议之所以不使用序号和确认机制是出于以下的考虑:
(1).在数据链路层出现差错的概率不大时,使用比较简单的 PPP 协议较为合理。
(2).在因特网环境下,PPP 的信息字段放入的数据是 IP 数据报。数据链路层的可靠传输并不能够保证网络层的传输也是可靠的。
(3).帧检验序列 FCS 字段可保证无差错接受。

6.PPP 协议的工作状态
(1).当用户拨号接入 ISP 时,路由器的调制解调器对拨号做出确认,并建立一条物理连接。
(2).PC 机向路由器发送一系列的 LCP 分组(封装成多个 PPP 帧)。
(3).这些分组及其响应选择一些 PPP 参数,并进行网络层配置,NCP 给新接入的 PC 机分配一个临时的 IP 地址,使 PC 机成为因特网上的一个主机。
(4).通信完毕时,NCP 释放网络层连接,收回原来分配出去的 IP 地址。接着,LCP 释放数据链路层连接。最后释放的是物理层的连接。
(5).可见,PPP 协议已不是纯粹的数据链路层的协议,它还包含了物理层和网络层的内容。
在这里插入图片描述

三.广播信道的数据链路层(重点)

1.局域网的数据链路层
(1).局域网最主要的特点是:
a.网络为一个单位所拥有;
b.地理范围和站点数目均有限。
(2).局域网具有如下主要优点:
a.具有广播功能,从一个站点可很方便地访问全网(整个局域网)。局域网上的主机可共享连接在局域网上的各种硬件和软件资源。
b.便于系统的扩展和逐渐地演变,各设备的位置可灵活调整和改变。
c.提高了系统的可靠性、可用性和残存性。

媒体共享技术(这个有在物理层讲解)
静态划分信道:
a.频分复用
b.时分复用
c.波分复用
d.码分复用

动态媒体接入控制(多点接入)
a.随机接入
b.受控接入 ,如多点线路探询 (polling),或轮询。

2.以太网的两个标准
(1).DIX Ethernet V2 是世界上第一个局域网产品(以太网)的规约。
(2).IEEE 802.3 是第一个 IEEE 的以太网标准。
注意:这里需要知道,DIX Ethernet V2 标准与 IEEE 的 802.3 标准只有很小的差别,因此可以将 802.3 局域网简称为“以太网”。严格说来,“以太网”应当是指符合 DIX Ethernet V2 标准的局域网 。

3.数据链路层的两个子层
为了使数据链路层能更好地适应多种局域网标准,IEEE 802 委员会就将局域网的数据链路层拆成两个子层:
(1).逻辑链路控制 LLC (Logical Link Control)子层;
(2).媒体接入控制 MAC (Medium Access Control)子层。
与接入到传输媒体有关的内容都放在 MAC子层,而 LLC 子层则与传输媒体无关。
不管采用何种协议的局域网,对 LLC 子层来说都是透明的。

4.适配器的使用
网络接口板又称为通信适配器 (adapter) 或网络接口卡 NIC (Network Interface Card),或“网卡”。
适配器的重要功能:
(1).进行串行/并行转换。
(2).对数据进行缓存。
(3).在计算机的操作系统安装设备驱动程序。
(4).实现以太网协议。
在这里插入图片描述

5.介绍CSMA/CD 协议
最初的以太网是将许多计算机都连接到一根总线上。当初认为这样的连接方法既简单又可靠,因为总线上没有有源器件。
早期以太网广播的工作方式:
如图:
在这里插入图片描述

(1).总线上的每一个工作的计算机都能检测到 B 发送的数据信号。
(2).由于只有计算机 D 的地址与数据帧首部写入的地址一致,因此只有 D 才接收这个数据帧。
(3).其他所有的计算机(A, C 和 E)都检测到不是发送给它们的数据帧,因此就丢弃这个数据帧而不能够收下来。
(4).在具有广播特性的总线上实现了一对一的通信。
(5).总线的特点:当一台计算机发送数据的时候,总线上的所有计算机都能检测到这个数据。这就是广播通信方式。当我们需要在总线上进行一对一通信的时候,就需要使每一台计算机的网卡拥有一个与其他网卡都不同的地址。这个时候,我们在发送数据帧时,就需要表明数据帧接收站的地址。只有网卡地址与其相同时,才接受数据帧,否则丢弃帧。

当时,人们为了交流更加方便,设计了以太网采取了两种重要的措施
(1) 采用较为灵活的无连接的工作方式:
a.不必先建立连接就可以直接发送数据。
b.对发送的数据帧不进行编号,也不要求对方发回确认。
c.这样做的理由是局域网信道的质量很好,因信道质量产生差错的概率是很小的。

(2) 以太网发送的数据都使用曼彻斯特
曼彻斯特编码:位周期中心的向上跳变代表0,位周期中心的向下跳变代表1(也可以反过来定义)。
使用曼彻斯特编码的优点是可以很方便的解决接收端接收连续的0或者1时无法提取同步信号的问题;缺点就是因为曼彻斯特编码的规则导致每秒需要传输的码元数量增加了一倍,所以它占的频带宽度也比原始的基带信号增加了一倍。(但是想得到,总要付出点什么嘛)
在这里插入图片描述
CSMA/CD(多点接入载波监听/冲突检测)协议要点:
(1).**多点接入:表示许多计算机以多点接入的方式连接在一根总线上。
(2).载波监听:载波监听就是利用电子技术检测总线上有没有其他计算机也在发送。载波监听实际上就是检测信道。在发送前,每个站不停地检测信道,是为了获得发送权;在发送中检测信道,是为了及时发现有没有其他站的发送和本站发送的碰撞,这就是碰撞检测。总之,载波监听是全程都在进行的。
(3).碰撞检测:边发送边监听。就是网卡边发送数据边检测信道上的信号电压的变化情况,以便判断自己在发送数据的时候其他站是否也在发送数据。当几个站同时在总线上发送数据时,总线上的
信号电压变化幅度将会增大(互相叠加)
,当网卡检测到的信号电压超过一定的
门限值(也叫阈值)**时,说明总线上至少有两个站同时在发送数据,表明产生了碰撞(冲突),所以也称为冲突检测。这时,由于接收的信号已经识别不出来,所以任何一个正在发送的站就会立即停止发送数据,然后等待一段随机事件以后再次发送。

检测到碰撞后:
(1).在发生碰撞时,总线上传输的信号产生了严重的失真,无法从中恢复出有用的信息来。
(2).每一个正在发送数据的站,一旦发现总线上出现了碰撞,就要立即停止发送,免得继续浪费网络资源,然后等待一段随机时间后再次发送。

为什么要进行碰撞检测?
这是一个简单的例子:
(1).由于电磁波在总线上的传播速率是有限的,当某个站监听到总线是空闲时,也可能总线并非真正是空闲的。(非真正空闲的时候,可能会形成一种误导)
(2).A 向 B 发出的信息,要经过一定的时间后才能传送到 B。
(3).B 若在 A 发送的信息到达 B 之前发送自己的帧 (因为这时 B 的载波监听检测不到 A 所发送的信息),则必然要在某个时间和 A 发送的帧发生碰撞。
(4).碰撞的结果是两个帧都变得无用。(因为两个帧在碰撞的时候,可能会产生信号的电压叠加,使发送的数据错乱等等因素,所以,一般碰撞后得到的帧,是直接丢弃的)
(5).所以需要在发送期间进行碰撞检测,以检测冲突。

信号传播时延对载波监听的影响分析:
在这里插入图片描述

(1).如图为两台计算机A、B,假设二者之间距离为一公里**(前提是计算机在信道的传输速率是相等的,且到达另一台计算机的时间假设是t=a)**
(2).如果A先发数据,但是,快到B的时候,B检测到自己的信道是空闲的,然后向A也发送数据(这个时候,假设A数据到B还需要 b 的时间 ),所以现在A在(t=a-b)的位置上A在经过(t=a-b/2)的位置时,必然会发生碰撞。
(3).发生碰撞后,两种发送的信号还是不会停止的,但是两种信号的电压阈值会发生相互叠加,之后往自己的目的地址发送。
(4).当计算机B(先接收到A信号),会立即停止发送;当计算机A(后接收到B的信号),也会立即停止发送信号。
(5).注意:在使用CSMA/CD协议时,一个站不可能同时进行发送和接收,进行的是半双工通信。
从图中可以看出,每个站在自己发送数据之后的一小段时间内,存在着遭遇碰撞的可能性。(这个时间是2t,t由两站之间的距离决定)这是以太网发送的不确定性。正是这种不确定性使得以太网的平均通信量远小于以太网的最高数据率。
(6).以太网端到端的往返时间2t称为争用期(碰撞窗口):也就是说,这个时间争用期是两台计算机交互之间,确认发送没有发生碰撞的最短时间,一旦小于这个时间,计算机必然认为发生了碰撞,并将这个帧的数据扔掉。

解决方法:
截断二进制指数退避算法:
以太网使用截断二进制指数退避算法来确定碰撞后重传的时机。这种算法让发生碰撞的站在停止发送数据后,不是等待信道变为空闲后立即再发送数据,而是退避一个随机的时间。一以减小再次发生碰撞的概率。具体算法如下:
a.协议规定了基本退避时间为2t,具体的争用期时间通常取51.2us,对于10Mb/s的以太网,在争用期内可发送512bit,即64字节。
b.从离散的整数集合【0,1,……(2^k-1)】中随机取一个数,记为r,重传应推后的时间就是r倍的争用期。
c.当重传次数不超过10时,参数k等于重传次数;当重传次数超过10时,k就不再增大一直等于10。 k = Min[重传次数, 10]
d.当重传16次仍然不能成功时(这表明同时打算发送数据的站太多,以致连续发生冲突),则丢弃该帧,并向高层报告。
注意:这个时间是拿重传的次数,带入(2k-1)得到【0,1,……(2k-1)】,随机选一个数得到r,之后在把这个时间 r*2t(最短的基本退避时间)。

例如:
a .在第一次重传时,k=1,随机数从{0,1}中选一个数。所以重传的推迟时间可以是0或者2t,随机选择。
b .第二次发生碰撞,k=2,随机数从{0,1,2,3}中选一个,所以重传的推迟时间可以是0,2t,4t,6t随机选择一个。
以此类推。。。

可能会出现这样一种情况就是:
某个站发送了一个很短的帧,但发生了碰撞,但发生了碰撞,不过在这个帧发送完毕后才检测到发生了碰撞。已经没有办法中止帧的发送,因为已经发送完了。这个时候即使发生了碰撞,那么刚才的帧也无法进行重传,就会产生错误。
注:数据帧能够重传的一个条件:以太网要实现重传,必须保证这个站在收到冲突信号的时候这个帧没有传完。
所以基于这种情况,以太网规定了一个最短帧的长度为64个字节,即512bit。因为64字节正好是争用期长度,如果在争用期内没有发生碰撞,那么就不会发生碰撞了。因此,凡长度小于64字节的帧都是由于冲突而异常停止的无效帧。接收端收到这种帧会直接丢弃。(对于10Mb/s传统以太网而言!)
我们知道信号在以太网上传播1km需要5us,以太网上最大的端到端的时延必须小于争用期的一半(25.6us),相当于以太网的最大端到端长度约为5km。实际上的以太网覆盖范围远没有这么大。因此实际的以太网都能在争用期51.2us内检测到可能发生的碰撞。以太网确定以51.2us作为争用期,不仅考虑了端到端时延,而且还考虑了好多其他因素。

强化碰撞
a.当发送数据的站一旦发现发生了碰撞时,除了立即停止发送数据外,还要再继续发送32比特或48比特的人为干扰信号,以便让所有用户都知道发生了碰撞。
b.以太网还规定了帧间最小间隔为9.6us,相当于96比特时间,这样做是为了使刚刚收到数据帧的站的接收缓存来得及清理,做好接收下一帧的准备。

以太网建立重传机制的原因:
以太网不想采用连接机制,因为会降低效率,但他又想有一定的重传机制,因为以太网的重传是微秒级,而传输层的重传,如TCP的重传达到毫秒级,应用层的重传更达到秒级,我们可以看到越底层的重传,速度越快,所以对于以太网错误,以太网必须有重传机制。

四.以太网的 MAC 层

重点介绍:

  1. MAC 层的硬件地址
  2. MAC 帧的格式

1. MAC 层的硬件地址
(1).在局域网中,硬件地址又称为物理地址,或 MAC 地址。
(2).802 标准所说的“地址”严格地讲应当是每一个站的“名字”或标识符。
注意:如果连接在局域网上的主机或路由器安装有多个适配器,那么这样的主机或路由器就有多个“地址”。更准确些说,这种 48 位“地址”应当是某个接口的标识符。
我们在电脑终端输入(windows):

ipconfig -all

即可查询本机的物理地址;特别需要知道的是每台主机的物理地址(MAC地址),是全球唯一的;
在这里插入图片描述
48 位的 MAC 地址的简单介绍
(1).IEEE 802 标准规定 MAC 地址字段可采用 6 字节 ( 48位) 或 2 字节 ( 16 位) 这两种中的一种。
(2).IEEE 的注册管理机构 RA 负责向厂家分配地址字段 6 个字节中的前三个字节 (即高位 24 位),称为组织唯一标识符。
(3).地址字段 6 个字节中的后三个字节 (即低位 24 位) 由厂家自行指派,称为扩展唯一标识符,必须保证生产出的适配器没有重复地址。
(4).一个地址块可以生成 224 个不同的地址。这种 48 位地址称为 MAC-48,它的通用名称是 EUI-48。
(5).生产适配器时,6 字节的 MAC 地址已被固化在适配器的 ROM,因此,MAC 地址也叫做硬件地址 (hardware address)或物理地址。
(6).“MAC地址”实际上就是适配器地址或适配器(网卡)标识符 EUI-48。

单站地址,组地址,广播地址
(1).IEEE 规定地址字段的第一字节的最低位为 I/G 位。I/G 表示 Individual / Group。
(2).当 I/G位 = 0 时,地址字段表示一个单站地址。
(3).当 I/G位 = 1 时,表示组地址,用来进行多播(以前曾译为组播)。此时,IEEE 只分配地址字段前三个字节中的 23 位。
(4).当 I/G 位分别为 0 和 1 时,一个地址块可分别生成 223 个单个站地址和 223 个组地址。
(5).所有 48 位都为 1 时,为广播地址。只能作为目的地址使用。

全球管理与本地管理
(1).IEEE 把地址字段第一字节的最低第 2 位规定为 G/L 位,表示 Global / Local。
(2).当 G/L位 = 0 时,是全球管理(保证在全球没有相同的地址),厂商向IEEE购买的 OUI 都属于全球管理。
(3).当 G/L位 = 1 时, 是本地管理,这时用户可任意分配网络上的地址。

**适配器检查 MAC 地址 **
(1).适配器从网络上每收到一个 MAC 帧就首先用硬件检查 MAC 帧中的 MAC 地址。
a.如果是发往本站的帧则收下,然后再进行其他的处理。
b.否则就将此帧丢弃,不再进行其他的处理。
(2).“发往本站的帧”包括以下三种帧:
a.单播 (unicast) 帧(一对一)
b.广播 (broadcast) 帧(一对全体)
c.多播 (multicast) 帧(一对多)
(3).所有的适配器都至少能够识别前两种帧,即能够识别单播地址和广播地址。
(4).有的适配器可用编程方法识别多播地址。
(5).只有目的地址才能使用广播地址和多播地址
(6).以混杂方式 (promiscuous mode) 工作的以太网适配器只要“听到”有帧在以太网上传输就都接收下来。

**2.MAC 帧的格式 **
(1).常用的以太网 MAC 帧格式有两种标准 :
a.DIX Ethernet V2 标准
b.IEEE 的 802.3 标准
(2).最常用的 MAC 帧是以太网 V2 的格式。

MAC帧的格式图:
在这里插入图片描述
需要注意的是:MAC帧前的8个字节,叫帧前同步码;已经知道以太网使用的曼彻斯特编码,这里也叫做帧前同步码,曼彻斯特编码的目的是为了让双方主机知道,主机A需要向主机B发送帧了,让我们有一个共同的准备,当主机发送从10->11时,就开始发送MAC帧了;

这里我们详解一下MAC层的信息:
(1).目的地址:带6个字节,是接收方固定不变的的MAC地址;
(2).源地址 :带6个字节,是发送方固定不变的MAC地址;
(3).类型 :带2个字节,类型字段用来标志上一层使用的是什么协议,以便把收到的 MAC 帧的数据上交给上一层的这个协议。
(4).数据 :数据的范围(48-1500字节),数据字段的正式名称是 MAC 客户数据字段。
(5).FCS :Frame Check Sequence(帧校验序列)是一段4个字节的循环冗余校验码。源节点发送数据帧时,由帧的帧头和数据部分计算得出FCS,目的节点接收到后,用同样的方式再计算一遍FCS,如果与接收到的FCS不同,则认为帧在传输过程中发生了错误,从而选择丢弃这个帧。FCS提供了一种错误检测机制,用来验证帧在传输过程中的完整性。

3.无效的 MAC 帧
(1).数据字段的长度与长度字段的值不一致;
(2).帧的长度不是整数个字节;
(3).用收到的帧检验序列 FCS 查出有差错;
(4).数据字段的长度不在 46 ~ 1500 字节之间。

4.IEEE 802.3 MAC 帧格式
与以太网V2 MAC 帧格式相似,区别在于:
(1) IEEE 802.3 规定的 MAC 帧的第三个字段是“长度 / 类型”。
a.当这个字段值大于 0x0600 时(相当于十进制的 1536),就表示“类型”。这样的帧和以太网 V2 MAC 帧完全一样。
b.当这个字段值小于 0x0600 时才表示“长度”。
(2) 当“长度/类型”字段值小于 0x0600 时,数据字段必须装入上面的逻辑链路控制 LLC 子层的 LLC 帧。
注意:现在市场上流行的都是以太网V2 的 MAC 帧,但大家也常常把它称为 IEEE 802.3 标准的 MAC 帧。

**5.帧间最小间隔 **
(1).帧间最小间隔为 9.6 s,相当于 96 bit 的发送时间。
(2).一个站在检测到总线开始空闲后,还要等待 9.6 us 才能再次发送数据。
(3).这样做是为了使刚刚收到数据帧的站的接收缓存来得及清理,做好接收下一帧的准备。

五. 扩展的以太网

1.物理层扩展的以太网
(1).使用光纤扩展:
a.主机使用光纤(通常是一对光纤)和一对光纤调制解调器连接到集线器。
b.很容易使主机和几公里以外的集线器相连接。
(2).使用集线器扩展:
使用多个集线器可连成更大的、多级星形结构的以太网。
优点:
a.使原来属于不同碰撞域的以太网上的计算机能够进行跨碰撞域的通信。
b.扩大了以太网覆盖的地理范围。
缺点:
a.碰撞域增大了,但总的吞吐量并未提高。
b.如果不同的碰撞域使用不同的数据率,那么就不能用集线器将它们互连起来。

2.在数据链路层扩展以太网
扩展以太网更常用的方法是在数据链路层进行。
早期使用网桥,现在使用以太网交换机。

a.网桥工作在数据链路层。
b.它根据 MAC 帧的目的地址对收到的帧进行转发和过滤。
c.当网桥收到一个帧时,并不是向所有的接口转发此帧,而是先检查此帧的目的 MAC 地址,然后再确定将该帧转发到哪一个接口,或把它丢弃。

(1).以太网交换机的特点
a.以太网交换机实质上就是一个多接口的网桥。
b.通常都有十几个或更多的接口。
c.每个接口都直接与一个单台主机或另一个以太网交换机相连,并且一般都工作在全双工方式。
d.以太网交换机具有并行性。能同时连通多对接口,使多对主机能同时通信。
e.相互通信的主机都是独占传输媒体,无碰撞地传输数据。
f.以太网交换机的接口有存储器,能在输出端口繁忙时把到来的帧进行缓存。
g.以太网交换机是一种即插即用设备,其内部的帧交换表(又称为地址表)是通过自学习算法自动地逐渐建立起来的。
h.以太网交换机使用了专用的交换结构芯片,用硬件转发,其转发速率要比使用软件转发的网桥快很多。

(2).以太网交换机的优点
a.用户独享带宽,增加了总容量。
b.从共享总线以太网转到交换式以太网时,所有接入设备的软件和硬件、适配器等都不需要做任何改动。
c.以太网交换机一般都具有多种速率的接口,方便了各种不同情况的用户。

(3).以太网交换机的交换方式
a.存储转发方式:把整个数据帧先缓存后再进行处理。
b.直通 (cut-through) 方式:
优点:接收数据帧的同时就立即按数据帧的目的 MAC 地址决定该帧的转发接口,因而提高了帧的转发速度。
缺点:缺点是它不检查差错就直接将帧转发出去,因此有可能也将一些无效帧转发给其他的站。

(4).以太网交换机的自学习功能
以太网交换机运行自学习算法自动维护交换表。
开始时,以太网交换机里面的交换表是空的。

如图:
在这里插入图片描述
按照以下自学习算法处理收到的帧和建立交换表
a. A 先向 B 发送一帧,从接口 1 进入到交换机。
b. 交换机收到帧后,先查找交换表,没有查到应从哪个接口转发这个帧。
c. 交换机把这个帧的源地址 A 和接口 1 写入交换表中,并向除接口1以外的所有的接口广播这个帧。
d. C 和 D 将丢弃这个帧,因为目的地址不对。只 B 才收下这个目的地址正确的帧。这也称为过滤。
e. 从新写入交换表的项目 (A, 1) 可以看出,以后不管从哪一个接口收到帧,只要其目的地址是A,就应当把收到的帧从接口1转发出去。
f. B 通过接口 3 向 A 发送一帧。
g. 交换机查找交换表,发现交换表中的 MAC 地址有 A。表明要发送给A的帧(即目的地址为 A 的帧)应从接口1转发。于是就把这个帧传送到接口 1 转发给 A。显然,现在已经没有必要再广播收到的帧。
h. 交换表这时新增加的项目 (B, 3),表明今后如有发送给 B 的帧,就应当从接口 3 转发出去。
k. 经过一段时间后,只要主机 C 和 D 也向其他主机发送帧,以太网交换机中的交换表就会把转发到 C 或 D 应当经过的接口号(2 或 4)写入到交换表中。

在这里插入图片描述
(5).交换机自学习和转发帧的步骤归纳
a.交换机收到一帧后先进行自学习。查找交换表中与收到帧的源地址有无相匹配的项目。
如没有,就在交换表中增加一个项目(源地址、进入的接口和有效时间)。
如有,则把原有的项目进行更新(进入的接口或有效时间)。

b.转发帧。查找交换表中与收到帧的目的地址有无相匹配的项目。
如没有,则向所有其他接口(进入的接口除外)转发。
如有,则按交换表中给出的接口进行转发。
若交换表中给出的接口就是该帧进入交换机的接口,则应丢弃这个帧(因为这时不需要经过交换机进行转发)。

3.虚拟局域网
a.利用以太网交换机可以很方便地实现虚拟局域网 VLAN (Virtual LAN)。
b.虚拟局域网 VLAN 是由一些局域网网段构成的与物理位置无关的逻辑组,而这些网段具有某些共同的需求。每一个 VLAN 的帧都有一个明c.确的标识符,指明发送这个帧的计算机是属于哪一个 VLAN。
d.虚拟局域网其实只是局域网给用户提供的一种服务,而并不是一种新型局域网。
e.由于虚拟局域网是用户和网络资源的逻辑组合,因此可按照需要将有关设备和资源非常方便地重新组合,使用户从不同的服务器或数据库中存取所需的资源。
如图:
在这里插入图片描述
1.当 B1 向 VLAN2 工作组内成员发送数据时,工作站 B2 和 B3 将会收到广播的信息。
2.B1 发送数据时,工作站 A1,A2 和 C1都不会收到 B1 发出的广播信息。
3.虚拟局域网限制了接收广播信息的工作站数,使得网络不会因传播过多的广播信息(即“广播风暴”)而引起性能恶化。

(1).虚拟局域网使用的以太网帧格式
a .IEEE 批准了 802.3ac 标准,该标准定义了以太网的帧格式的扩展,以支持虚拟局域网。
b .虚拟局域网协议允许在以太网的帧格式中插入一个4字节的标识符,称为 VLAN 标记 (tag),用来指明发送该帧的计算机属于哪一个虚拟局域网。
c .插入 VLAN 标记得出的帧称为 802.1Q 帧 或 带标记的以太网帧。

在这里插入图片描述
VLAN标记字段的长度是四个字节,插入以太网MAC帧的源地址字段和类型字段之间。VLAN标记的前两个字节总是设置为0x8100(即二进制 10000001 00000000),称之为IEEE802.1Q标记类型。

当数据链路层检测到MAC帧的源地址字段后面的两个字节的值是0x8100时,就知道现在插入了4字节的VLAN标记。于是就接着检查后面的两个字节中,前3位是用户优先级字段,接着一位是规范格式指示符CFI,最后是12位的该虚拟局域网VLAN标识符VID(VLAN ID),它唯一的标志了这个以太网属于哪个VLAN。

注意:由于,用于VLAN的以太网的首部增加了4个字节。因此以太网的最大帧的长度从原来的1518字节,变为了1522字节。

(2).划分方法
a.根据端口划分;
b.根据MAC地址划分;
c.根据网络层划分;
d.根据ip组播划分;

----本文参考《计算机网络第七版》–谢希仁 编著

  • 12
    点赞
  • 81
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

The endeavor

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

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

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

打赏作者

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

抵扣说明:

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

余额充值