【计算机网络】数据链路层总结
数据链路层
目录
- 数据链路层概述
- 基本概念
- 数据链路层的三个基本问题
- 点对点信道的数据链路层
- 概述
- PPP协议的组成
- PPP帧的格式和要求
- PPP协议的工作状态
- 广播信道的数据链路层
- 局域网和以太网
- 广播信道数据链路层的任务
- 适配器
- CSMA/CD协议的要点
- 以太网应用CSMA/CD协议
- 信道利用率
- 以太网的MAC层
- 扩展以太网
- 高速以太网以及问题
1. 数据链路层概述
基本概念
数据链路层讨论的是如何把网络层的数据封装成帧,有效的进行通信传输。
链路是指:一个结点到另一个结点的具体的物理线路。
数据链路是指:在链路上加之实现通信协议的软件和硬件。
实现数据链路层的硬件和软件主要是网卡(但适配器工作在物理层和数据链路层)。
此层的协议数据单元PDU叫做帧。这是将数据报加之首部和尾部形成的。
数据链路层的三个基本问题
-
封装成帧
指将数据报加之首部和尾部形成帧。首部和尾部是必要的,主要作用是帧定界、添加控制信息,以及差错控制。
-
透明传输
如果是文本文件,可以用SOH/EOT充作帧开始、结束控制符,但数据中可能也出现SOH/EOT,这时需要加转义字符ESC,如ESC-SOH,ESC-EOT,ESC-ESC,以达到透明传输。
这里的透明指的是,数据链路层对传输的数据透明,传输的数据实际上感受不到数据链路层所做的操作。
-
差错检测
奇偶检测、循环冗余CRC等。
采用CRC,采用n+1位除数(由生成多项式得到),得到n位余数,称作帧检验序列FCS。
检测时,将传输得到的数据除以同一个除数,若余数0,则可以说无差错。
若有差错,直接丢弃,除此之外,不做任何操作。
故差错检测只是检测了bit错误,并不能解决帧失序、丢失、重复等问题。
也就是说,数据链路层实现的是尽最大努力的交付,即不可靠的传输。
2. 点对点信道的数据链路层
概述
点对点信道主要用于用户同ISP(验证身份)通信时。早期使用高级数据链路控制HDLC,已经淘汰,现在用的是PPP协议,即point-to-point protocol,点对点通信协议。
PPP协议的组成
由三个部分组成:
-
一个将数据报封装成帧的方法
-
一个用来建立、配置和测试数据链路连接的链路控制协议LCP。
通信双方用以协商。
-
一套网络控制协议。
每一个协议支持不同的网络层协议,也就是说PPP支持不同的网络层协议。
PPP协议帧的格式和要求
PPP帧的格式如下:
格式划分 | F | A | C | 网络层协议 | 数据报 | FCS | F |
---|---|---|---|---|---|---|---|
具体内容 | 7E | FF | 03 | 如C021(IP) | 数据部分 | - | 7E |
字节数 | 1 | 1 | 1 | 2 | <=1500 | 2 | 1 |
其中,F,A,C都是固定的,A是地址,C字段实际上无用。
实现透明传输:
PPP协议为实现透明传输,采用的策略是:
-
异步:字节填充(字符填充)。
在数据部分,(7E->7D,5E)、(7D->7D,5D)、(小于0x20的,前面添加7D)
-
同步:零比特填充
即每遇到5个1,添加一个0。
PPP协议工作状态
<课本P81>,重点。
3. 广播信道的数据链路层
局域网和以太网
局域网(LAN)指的是一个网络为一个单位所拥有,地理位置和站点数据有限,统称。局域网的工作跨越了物理层和数据链路层。
以太网是局域网的一种实现方式,但如今以太网占据了绝大多数市场,故某种意义上,以太网就是局域网。
以外网的标准有DIX Ethernet V2和IEEE 802.3。二者差别不大,现在广泛使用的是DIX Ethernet V2。
IEEE 802.3把以太网的数据链路层划分为:逻辑链路控制(LCP)和媒体接入控制(MAC),但LCP实际上并无用,现在只使用MAC层。
以外网的其他特点:
- 以太网采用的是尽最大努力的交付,不可靠的交付。
- 以太网采用使用CSMA/CD协议。
- 以太网采用的是曼彻斯特编码,基带信号传输。这种编码中间跃变,由高->低为1,反之为0。
广播信道数据链路层的任
广播信道主要由总线式网络,环形网,星形网等。
广播信道的数据链路层讨论的是如何在一个网络中实现一对一、一对多通信。这里要解决的问题是,总线网络上不能有两个站点同时发送数据,否则就称碰撞(冲突)。
必须有解决这个问题的协议,这就是CSMA/CD协议。
但首先应了解其他几个概念。
适配器
即网卡,实现了数据链路层协议,工作于物理层和数据链路层。
适配器的另一个作用是实现并行通信和串行通信的转换。外网--适配器为串行,而适配器--主机为并行。
适配器还配有ROM,实现缓存,这样可以实现不同速率的兼容。
另外,需要注意,适配器中的ROM中是硬件地址,即MAC地址,而在计算机的存储器中存有IP地址,即软件地址。
CSMA/CD协议的要点
CSMA/CD协议全称:载波多点监听/碰撞检测。他解决的问题是如何在总线局域网上进行“有效”通信。
CSMA/CD的要点如下:
-
多点接入
CSMA/CD协议适用于广播信道,允许总线上多个站点接入。协议的核心是载波监听和碰撞检测。
-
载波监听
由于总线型广播信道上同一时刻只允许一个站点发送数据,故站点需要时时检测信道上是否有其他站点发送数据,这就是载波监听。检测信道通过才能获得发送权。
载波监听发生在:一个站点发送数据之前,以及发送数据的过程中。一旦发现有其他站点发送数据,则立即停止发送。
顺便指出,信道上发送的是基带信号,并没有载波,“载波”一词为借用。
-
碰撞检测(冲突检测)
碰撞检测就是“边发送边监听”。适配器边发送数据边检测信道上信号变化情况,看是否发生了 碰撞。若有两个计算机同时发送数据,则信道上的信号电压变化幅度会超过一定的门限值,则计算机(适配器)能够发现这种变化,后续作出进一步响应。
Question:既然每个站点发送数据前,信道已经清空,为什么发送过程中还要碰撞检测(可能发生碰撞)?
Answer: 信号传播需要时间。1Km的电缆传播时延为5us,记单程端到端时延为\(t\),若A站点向B站点发送数据后,经过极短时间\(e\)(\(e\)小于\(t\) us),数据尚未到达B,\(e\)时刻B依然检测到信道为空,此时B也发送数据,那么在时间\(t-e/2\) 时刻,发生碰撞,则A端在\(2t-e\)时刻检测到碰撞发生。
另外,定义单程端到端时延的两倍为争用期,因为从上面分析可以看到,A最迟在\(2t\)时刻检测到碰撞发生(当\(e\)趋向于0),在A发送数据\(2t\)时间内若不发生碰撞,则之后不会发生碰撞。下面对以太网应用CSMA/CD协议的具体规定。
以太网应用CSMA/CD协议
以太网应用CSMA/CD协议,实现了半双工通信,其具体的规定和要点如下:
-
以太网发送数据采用曼彻斯特编码。
-
发送前(中)载波监听。
-
争用期2t定义为51.2us,对于10Mbit/s的以太网,可以算出争用期内发送了512bit数据,故也称作512比特时间。在这个时间内,传播的距离约为5km,但实际上达不到这么多。
由于争用期内必须发送完512bit才能检测是否发生了碰撞,故以太网规定最短帧长为512bit,即64字节,若数据不够,则需要填充。
-
若检测到发生碰撞,等到一段时间后再发送。具体的等待时间采用截断二进制指数退避算法,即:
在区间\([0,1,3,...(2^k-1)]\)内随机选出一个数\(r\),等待\(r×2t\)时间。即随机个争用期的时间。
具体\(k\)为:\(重传次数,k = Min(重传次数,10)\)。
另外,规定重传次数达到16次,则表示想发送数据的站点太多,丢弃该帧,向高层报告。
-
强化碰撞策略。一旦检测到发生碰撞,则立即发送32或48bit的人为干扰信号,让所有站点都知道发生了碰撞。
-
帧最小间隔为9.6us。因为以太网的帧并没有个帧结束定界,故最小间隔是应有的,这样也可以保证接收站点来得及缓存清理和处理。
-
时间计算。若发送时延为\(t0\),传播时延为\(t\),A发送完毕到检测到发生碰撞的时延为\(tB\),强化信号时延为\(tJ\),则因为碰撞浪费的时延为\(tB+tJ\),总线被占用的时延为\(tB+tJ+t\),因为最后1bit还要经过一个单程端到端时延。
信道利用率
说明以太网信道利用率。
发送一帧的时间是(若干个争用期时间\(2t\))+发送时延\(T_0\) + 单程端到端时延\(t\)。可见,提高信道利用率,就要减小\(t\)和\(T0\)之比。定义:$a = \frac {t} {T_0} \(,希望\)a$越小越好。
信道极限利用率为:假设发生碰撞,极限利用率为:
\(S_{max}=\frac{T_0}{T_0+t}=\frac{1}{1+a}\) ,可见,\(a\)越小越好。
以太网的MAC层
上面提到过,对于广播信道,802.3将数据链路层划分为LLC和MAC,但实际上LLC无用,只讨论MAC。MAC就是媒体接入控制的意思。因而,实际上广播信道的数据链路层就是指MAC层。
MAC地址
MAC地址是一个硬件地址,于网卡的ROM中。他是一个48bit即6个字节的序列,现在使用的是EUI-48。一个地址是一个站的名字或者标识符,它由注册管理机构RA同一颁发。前三个字节为公司标识符,即组织唯一标识符OUI,这是生产公司申请到的。后三个字节为扩展标识符,为公司自己制定。
IEEE规定,MAC地址的第一字节的最低位为I/G位,标志是I(individual)或者G(group),为I时为0,表示单个站地址,G时为1,表示组地址,用来多播。
MAC地址的第一字节的倒数第二位为G/L位,表示全球管理(0)/本地管理(1),若不申请全球OUI,也可以使用本地管理,即将G/L位置1。
这样,实际上全球MAC共有\(2^{44}\)个。
局域网内就根据MAC地址进行发送、接受数据,当某站点接收到帧,检查MAC目的地址是否与本机MAC相匹配,不匹配则不接受。
发送的帧包括:单播帧、广播帧(全1)和多播帧。
MAC帧格式
MAC帧(+最前面插入8字节)格式如下:
前同步码 | 帧开始定界符 | 目的地址 | 源地址 | 类型 | 数据 | FCS |
---|---|---|---|---|---|---|
1010..10 | 1010101011 | 目的MAC | 本站MAC | 网络层类型 | 数据报 | CRC检验 |
7字节 | 1字节 | 6字节 | 6字节 | 2字节 | 46-1500字节 | 4字节 |
- 上面的表格中,前8个字节不属于MAC帧内容,只是为了帧同步和开始定界,CRC也不检测前8字节是否出错。
- MAC帧的范围是64字节-1518字节,数据部分是46-1500字节。
扩展以太网
扩展以太网主要从下面两方面。
物理层上扩展以太网
工作在物理层的转发器、集线器,将多个局域网连接起来,扩大碰撞域,但并不增加吞吐量。
数据链路层扩展以太网
使用工作在数据链路层的以太网交换机,扩大以太网。交换机可以实现全双工,并行,存储数据帧缓存,以及自学习交换表(地址表)进行转发。这种方式增加了吞吐量。
应注意自学习交换表的方法,P100,另外,为了防止数据在物理环路上绕圈子,采用“生成树协议STP”,将某些链路在逻辑上切断,其过程类似于最小生成树。
虚拟局域网
不同局域网内的几个计算机可以虚拟的连接起来构成虚拟局域网VLAN,以实现某些特定目的。
VLAN就是由一些局域网网段构成的与物理位置无关的逻辑组。
VLAN的帧增加了4个字节的VLAN标识符,标记此站点属于哪个VLAN。
这样可以防止广播风暴。
器件
总结工作在物理层的:转发器、集线器hub。
工作于数据链路层:交换机。
工作于物理+数据链路层:适配器。
高速以太网以及问题
传统以太网指的是10BASE T,意义10:10Mbit/s,BASE:基带信号,T:双绞线。
之前还有:
10BASE 5:10:10Mbit/s,BASE:基带信号,5:500m粗缆。
10BASE 2:10:10Mbit/s,BASE:基带信号,2:200m细缆。
现在带宽逐渐提高,已经有:
100BASE T:100:100Mbit/s,BASE:基带信号,T:双绞线。
吉比特以太网、10吉比特以太网等。
100BASE T
将带宽提高10倍,帧格式不变。参数\(a=\frac{t}{T_0}\),\(T_0\)变为\(1/10\),则\(a\)增加10倍,信道利用率降低。100 BASE T采用的策略是保证最短帧长不变,争用期减少到\(1/10\),即争用期为5.12us,帧最小间隔是0.96us,(这其实是将物理线路最长长度减少到\(1/10\),实际中100BASE-TX是100m)
吉比特以太网
发送速率1G bit/s。帧格式不变,吉比特以太网可以工作在半双工和全双工下,保持\(a\)不变,采取:
-
半双工下
仍然保持物理线路最长为100m(与100BASE-T同),最短帧长依然为512bit(64字节),但争用期不再是512bit时间,而是512字节时间(扩大8倍),这样,发送不足512字节的帧,需要进行填充处理,使得达到512字节,这叫载波延伸。另外,还有分组突发功能,第一个短帧采用载波延伸,后面跟着的短帧则一个接一个发送,形成长度达到1500字节的数据。(这是为了保证不要每个短帧都填充,只要过了争用期就好了。)
-
全双工下
不需要载波延伸和分组突发,因为不会发生冲突。
10吉比特以太网(10GE)
帧格式不变,只工作于全双工,不使用CSMA/CD协议,没有争用期之说。
NOTE:半双工下采用CSMA/CD,全双工不用CSMA/CD。