第四章 数据链路层
数据链路层的相关概念,提供的主要服务、传输方式、需要解决的基本问题等。
来自4.1节“数据链路层概述”。
相关概念:
结点(node):可能是计算机或网络设备(如路由器、交换机或集线器等)。
帧(frame):数据链路层的协议数据单元(PDU),用于封装网络层数据报,包括帧首部、数据(网络层的PDU)和帧尾。
最大传输单元(MTU):Maximum Transmission Unit,结点可以接受报文的最大尺寸。
发送方如果要发送一个超过MTU的报文,分片;接收方收到一个超过MTU的报文,丢弃。
同一链路上两个方向的MTU未必相同。
PMTU,路径最大数据单元(Path MTU),通信的结点间需要跨越网络时,PMTU是两个结点路径上的最小MTU。
链路(Link):连接两个相邻结点的物理信道,如双绞线、光纤等。
数据链路(data link) :两个结点间的逻辑通道,把实现控制数据传输协议的硬件和软件加到链路上即构成数据链路。
数据链路层的范围:只与本地结点之间的数据交付(local delivery of frames)有关。即在数据链路层,帧的传输不会超出本地网络。
为网络层提供的主要服务:
无确认的无连接服务
在发送数据帧之前源结点与目标结点无须建立连接,事后也无须释放连接。源结点只负责发送数据帧,其余一概不关心。目标结点只接收数据帧,并不进行确认。接收的数据若有错则丢弃,不通知源结点。传输可靠性由高层完成。
一般用于有较可靠的网络中。是以太网的主要方式。
有确认的无连接服务
源结点按照顺序对每个数据帧进行编号再发送。目的结点收到数据帧向源结点发出确认帧。如果在规定的时间内源结点未收到相应数据帧的确认帧,则认为已经丢失,重新发送数据帧。
主要用于不可靠信道,如无线通信系统。
有确认的面向连接服务
源结点和目标结点在传输数据之前必须先建立一个连接,只有连接建立后才能传输数据帧,且传输完成后要释放连接。源结点对每一个数据帧均进行编号,并按照编号顺序发送。若在规定时间内未收到确认帧,则重新发送。每收到一个数据帧,目标结点会向源结点发确认帧。有明显的:数据链路建立、数据传输、数据链路释放等三个阶段。
通常用于广域网的通信子网。
两种传输方式:
点对点信道数据传输
在一个数据链路上有且仅有两个结点。两个结点间以双工的方式进行传输数据,即双向都可以发送/接收数据。
主要用于通信子网的结点(路由器)间数据传输。
广播信道数据传输
多个结点共享一个信道,每个结点都可以通过这个信道向其他结点发送数据,每个结点只接收发送给自己的数据.
主要用于资源子网的同一局域网结点间数据传输。
需要解决的基本问题:
封装成帧
发送结点的数据链路层将网络层的数据报文添加首部和尾部后封装成帧。
透明传输
数据报文中的任意数据都可以得到传输,高层应用无需担心特殊字符的传输问题。
差错控制
接收方只接收无差错的数据帧。
对差错控制方式认识,以及海明码、海明距离和循环冗余码的计算和验证。
来自4.2节“差错控制”。
计算机网络通信中,差错控制主要针对冲击噪声。
常用的差错控制编码有两类:检错码(能够发现差错,但无法自动纠正差错,通过发送方重传来获得正确的数据)、纠错码(不但能过发现差错,而且能够知道哪里出错,从而自动纠正差错)
相关概念:
码字
由
信息位
、校验位
组成码字长度 n n n: n = m + r n = m + r n=m+r,其中信息位 m m m位,校验位 r r r位
两个码字的距离
两个码字的不同位数。如
10001001
和10110001
的距离为3海明距离
给定某种编码算法,就能够造出包含全部合法码字的码字表(编码系统)。该码字表中必存在着两个码字之间的距离最小,这个最小距离称为该码字表(编码系统)的海明距离。
海明距离决定了编码系统的检错和纠错能力。
编码效率 R = m n = m m + r R=\frac{m}{n}=\frac{m}{m+r} R=nm=m+rm
若检测d位出错,则海明距离至少为d+1
若纠正d位出错,则海明距离至少为2d+1
海明码(纠错码)
海明码是一种纠错码,检测2位错误并纠正1位错误,有 m m m位信息位和 r r r位校验位构成。
要求满足: 2 r ≥ m + r + 1 2^r \geq m+r+1 2r≥m+r+1
习惯上,这些校验位通常被安排在2的整数次幂的位置上。如4位信息位,则校验位至少是3位。因此在第1、2和4位上,剩余位置按照顺序插入信息位。
信息位: a 1 a 2 a 3 a 4 a_1a_2a_3a_4 a1a2a3a4,校验位: p 1 p 2 p 3 p_1p_2p_3 p1p2p3
则组合构成的结构为: p 1 p 2 a 1 p 3 a 2 a 3 a 4 p_1p_2a_1p_3a_2a_3a_4 p1p2a1p3a2a3a4
各位位置的二进制表示:
001 010 011 100 101 110 111
位置索引 001
010
011
100
101
110
111
码位 p 1 p_1 p1 p 2 p_2 p2 a 1 a_1 a1 p 3 p_3 p3 a 2 a_2 a2 a 3 a_3 a3 a 4 a_4 a4
校验位的取值
每一位校验位均对若干位信息位进行检验,默认偶校验。
p 1 p_1 p1即对位置索引为
**1
的码位进行异或p 2 p_2 p2即对位置索引为
*1*
的码位进行异或p 3 p_3 p3即对位置索引为
1**
的码位进行异或{ p 1 = a 1 ⊕ a 2 ⊕ a 4 p 2 = a 1 ⊕ a 3 ⊕ a 4 p 3 = a 2 ⊕ a 3 ⊕ a 4 \begin{cases} p_1 = a_1 \oplus a_2 \oplus a_4 \\ p_2 = a_1 \oplus a_3 \oplus a_4 \\ p_3 = a_2 \oplus a_3 \oplus a_4 \end{cases} ⎩ ⎨ ⎧p1=a1⊕a2⊕a4p2=a1⊕a3⊕a4p3=a2⊕a3⊕a4
校验及纠错
{ e 1 = p 1 ⊕ a 1 ⊕ a 2 ⊕ a 4 e 2 = p 2 ⊕ a 1 ⊕ a 3 ⊕ a 4 e 3 = p 3 ⊕ a 2 ⊕ a 3 ⊕ a 4 \begin{cases} e_1 = p_1 \oplus a_1 \oplus a_2 \oplus a_4 \\ e_2 = p_2 \oplus a_1 \oplus a_3 \oplus a_4 \\ e_3 = p_3 \oplus a_2 \oplus a_3 \oplus a_4 \end{cases} ⎩ ⎨ ⎧e1=p1⊕a1⊕a2⊕a4e2=p2⊕a1⊕a3⊕a4e3=p3⊕a2⊕a3⊕a4
若 e 1 e 2 e 3 e_1e_2e_3 e1e2e3为
000
,表明传输没有出错。否则,即表示在由 e 1 e 2 e 3 e_1e_2e_3 e1e2e3对应的十进制数位置出错,并将其取反即可纠正。如: e 1 e 2 e 3 e_1e_2e_3 e1e2e3=101
,即表示在第五位出错,取反即可。循环冗余码(检错码)
循环冗余码简称为
CRC码
(Cyclic Redunancy Code) 是目前计算机网络中使用最广泛的一种检错码。CRC码又称多项式码,每个码字对应于一个多项式。
编码原理
生成多项式 G ( x ) G(x) G(x),为给定的
信息编码多项式 M ( x ) M(x) M(x)
设信息位串为 a 1 a 2 a 3 . . . a m a_1a_2a_3...a_m a1a2a3...am,则有
M ( x ) = a 1 x m − 1 + a 2 x m − 2 + a 3 x m − 3 + . . . + a m x 0 M(x) = a_1x^{m-1} + a_2x^{m-2} + a_3x^{m-3} + ... +a_mx^0 M(x)=a1xm−1+a2xm−2+a3xm−3+...+amx0
码字多项式 T ( x ) T(x) T(x),为要发送的
用模2除运算,计算余数 R ( x ) R(x) R(x)
R ( x ) = M O D ( x r M ( x ) G ( x ) ) R(x)= MOD(\frac{x^rM(x)}{G(x)}) R(x)=MOD(G(x)xrM(x))
T ( x ) = x r M ( x ) + R ( x ) T(x) = x^rM(x) + R(x) T(x)=xrM(x)+R(x)
x r M ( x ) x^rM(x) xrM(x)的含义:在信息位串后补r个0对应的信息编码多项式
译码原理
接收端收到码字 T ′ ( x ) T'(x) T′(x)后,用同一生成多项式 G ( x ) G(x) G(x)对 T ′ ( x ) T'(x) T′(x)也进行模2除运算:
若 M O D ( T ′ ( x ) / G ( X ) ) = 0 MOD(T'(x)/G(X))=0 MOD(T′(x)/G(X))=0,则表示传输过程中没有出错
若 M O D ( T ′ ( x ) / G ( X ) ) ≠ 0 MOD(T'(x)/G(X))≠0 MOD(T′(x)/G(X))=0,则表示传输过程中有出错
CRC码不能100%地发现错误,当余数为“0”时可能发生错误。
CRC检错率取决于生成多项式G(x)
从协议配置、透明方式和工作原理等方面理解HDLC协议。
来自4.4.1节“HDLC协议”。
HDLC(High-Level Data Link Control)协议
是一种面向比特的链路层协议。
配置
三种类型站:
主站
负责对数据链路实行全面的管理,包括发起传输、组织数据流、差错控制与恢复等。发出的帧称为命令(Command)。
次站
受控于主站,只能按照主站的命令进行相应操作,发出的帧称为响应(Response)。
复合站
具有主站和次站双重功能的站。两个复合站之间可以完全对等地进行通信,即:复合站具有平衡的链路控制能力。
两种链路结构:
非平衡配置
点 - 点或点- 多点线路,支持全双工和半双工
平衡配置
仅点 - 点线路,支持全双工和半双工
三种数据传送操作方式:
正常响应方式NRM
非平衡配置,数据传输由主站发起,从站只能响应主站的轮询
异步响应方式ARM
非平衡配置,从站可以主动发送响应帧,主站负责线路管理
异步平衡方式ABM
平衡配置,任一复合站都可以发起数据传输(每个复合站都可以平等地发起数据传输,而不需要得到对方复合站的许可)
透明方式
为了避免其它字段中出现“01111110”,产生误解,HDLC采用插“0”技术。
发送方:除标志位外,连续发现5个“1”后自动插“0”。
接收方:连续发现5个“1”后
其后为“0”,则自动去掉该“0”。
其后为“1”,则检查下一位
为“0”则为标志位
为“1”则出错
工作原理
建立数据链路连接
传输数据帧
拆除链路连线
从应用场景、协议组成、帧格式、运行过程等方面对PPP协议的理解。
来自4.4.2节“PPP协议”。
随着通信线路通信质量的提升,特别是光纤媒介的大规模普及的前提下,数据链路层协议取消了可靠传输服务,使数据链路层协议变得更加简单。可靠传输和流量控制等任务均交予上层协议(如运输层TCP协议)完成。
点对点PPP(Point to Point Protoco)协议
就是一个比HDLC协议简单的数据链路层协议。面向字符、全双工、按照顺序传递数据包的协议。
应用场景
拨号方式
专线方式
协议组成
一个将IP数据报封装到串行链路的方法。
一个用来建立、配置和测试数据链路连接的链路控制协议 ( Link Control Protocol,LCP)。
一套网络控制协议 ( Network Control protocol ,NCP)。
PPP协体系结构分为LCP和NCP子层,LCP主要作用于数据链路层中,NCP介于网络层和数据链路层之间起作用。
LCP子层:主要负责数据链路的建立、配置和测试
NCP子层:根据网络层的不同协议互相交换特定的控制报文 、配置不同上层协议
帧格式
运行过程
链路不可用阶段:初始阶段。
链路建立阶段: LCP协商,包括协商认证方式等。
验证阶段(可选):PAP/CHAP验证
网络层协议阶段:NCP协商
维持阶段:维持PPP会话,传输数据、定时测试链路。
网络终止阶段:终止PPP会话,回到链路不可用阶段。
ALOHA、时隙ALOHA、CSMA、CSMA/CD、CSMA/CA的基本原理、方法、特点、适用场合。
来自4.5.2节“动态接入分配协议”。
按照信道访问权限的控制方式,媒介访问控制MAC(Medium Access Control)协议通常分为以下几类:
ALOHA
纯ALOHA(不监听信道,想发就发,随机重发。)
详见PPT100页
发送端发起传输请求后可立即发送数据,无需等待授权,也不需要检测信道否空闲。
接收端在成功接收数据后返回一个ACK帧,通知发送端传输成功。
接收端收到的数据校验有错,则不发ACK帧。
发送端在预定的时间内未收到ACK帧,则认为发生碰撞,并在一个随机时间后重发。若重发再次碰撞,则再等待一个时间后重发,直到接收到ACK帧。
时隙ALOHA(不监听信道,规定发送时间。)
时隙ALOHA协议是针对纯ALOHA协议中大量存在的碰撞而提出的一种改进型ALOHA协议。
将时间划分为等长的
时隙(slot,也称时槽)
,每个时隙可以传输1个帧。结点间严格时钟同步,且只能在时隙开始时发送帧
如果2个及以上结点在同一时隙发送帧,结点即检测到冲突
当某个结点发送一个帧后:
无碰撞:可以在下一个时隙继续发送新的帧
有碰撞:在下一个时隙以概率p重传该帧,直至成功
信道利用率:时隙ALOHA的信道利用率的理论值比纯ALOHA高出一倍有余,约为37%
CSMA(先听后说)
提出了“载波侦听”的基本思想:发送数据前先检测信道。信道空闲,立即发送数据;若信道忙,则等待并继续检测信道。
根据检测到信道忙后所采取的策略,CSMA被分为:
类型 信道空闲 信道忙 1-Persistent CSMA(1-坚持CSMA) 立即发送数据 持续检测,发现空闲立即发送 Non-persistent CSMA(非坚持CSMA) 立即发送数据 等待随机时间后再检测 p-persistent CSMA(p-坚持CSMA)(适用于分槽的信道) 按p概率发送数据,或按(1-p)概率等到下个时间槽再试 等待下一个时间槽再试 CSMA/CD(先听后说,边听边说,发生碰撞,随机避退)
CSMA/CD(Carrier Sense Multiple Access with Collision Detection)是一种具有碰撞检测能力的广播信道多点接入技术,称为“载波侦听多址接入/碰撞检测”。
“碰撞检测”:结点边发送数据边检测信道上的信号电压大小。(“碰撞检测”也称“冲突检测”)若多个结点同时发送数据,由于各结点信号电压的叠加,信道上的信号电压会发生较大变化。当结点检测到信号电压变化值超过了阈值时,就认为至少有两个结点同时在发送数据,即发生了碰撞。
每个正在发送数据的结点,一旦发现碰撞,会立即停止发送,免得继续浪费网络资源,并在等待一段随机时间后再次发送
随机等待时间的确定采用二进制指数退避算法(详见PPT112页)
CSMA/CD是以太网的基础。其主要贡献是解决了多个结点同时传输,由于距离等原因,无法立刻检测到冲突的问题。
特点:
只支持半双工
发送数据帧后最多经过 2 t 2t 2t的时间( t t t为端到端传输时延),发送端就可知道是否遭受了碰撞。这个时间称为争用期或碰撞窗口。只要超过这个时间就不会发生碰撞。
为了确保发送端能够在发送完成前检测到碰撞,采用CSMA/CD的网络必须确定最小帧长度。凡是收到长度小于最小帧长度的帧都是无效帧。
检测到碰撞后,发送端立即停止发送数据,并发送若干比特干扰信号(jamming signal)通知其他结点。
由于存在发送成功与否的不确定性,因此采用CSMA/CD协议的网络的平均通信量远低于其最高数据速率。
CSMA/CA
CSMA/CA(Carrier Sense Multiple Access with Collision Avoidance),载波侦听多路访问/碰撞避免机制,一般工作在无线网中。
why?
无线网与有线网有很大区别:
发生碰撞的信号能量通常较小,很难被检测出来
隐蔽结点问题:发送结点无法检测到隐蔽结点,从而存在冲突的可能性
暴露结点问题:发送结点检测到有冲突的结点其实并不影响其发送数据
原理:
发送数据前,监听信道,若有冲突,则进行二进制指数避退。若信道空闲,则在维持一段时间后,再等待一段随机的时间后依然没有别的结点使用,即发送数据。由于每个结点采用的随机时间不同,这样可以减少冲突的机会。
先发送一段很小的请求传送报文RTS(Request to Send)给目标结点,并等待目标端回应报文CTS(Clear to Send)后,才开始传送数据。在RTS、CTS和后面发送的数据帧中都有一个称为网络分配向量的数据结构,指明本次发送数据所需要的时间,凡是能收到报文的其他结点将不会在这段时间里发送数据,确保接下来传送资料时,不会被碰撞。
局域网和以太网,如:概念、特点、结构。
来自4.5.3节“局域网”。
局域网LAN(Local Area Network)
一般认为,局域网是在一个局部的地理范围内(如一个学校、工厂和机关内),一般是方圆几千米以内,将各种计算机,外部设备和数据库等互相联接起来组成的计算机通信网。
特点:
具有广播功能,从一个站点可很方便地访问全网。局域网上的主机可共享连接在局域网上的各种硬件和软件资源。
便于系统的扩展和逐渐地演变,各设备的位置可灵活调整和改变。
提高了系统的可靠性、可用性和残存性。
对应OSI参考模型的数据链路层与物理层
以太网
两个以太网标准:一个是DIX Ethernet V2 ,世界上第一个局域网产品(以太网)的标准。另一个是IEEE 的 802.3 标准。DIX Ethernet V2 与 IEEE 的 802.3 只有很小的差别,因此也可以将 802.3局域网称为“以太网”。严格说来,“以太网”应当是指符合 DIX Ethernet V2 标准的局域网。
最初以太网的连接方式:将许多计算机都连接到一根总线上。
采用CSMA/CD协议作为基本工作机制
以粗电缆为传输媒介,单段传输距离可达500m,最多可连接4台中继器,最长可达2500m。
无连接的工作方式
采用曼彻斯特编码
不对发送的数据帧编号,也不要求对方发回确认
争用期为2倍的端到端往返时延,并被规定为51.2us
争用期内可发送512bit,即64Byte。如发送了64Byte均未遇到碰撞即不会再遇到碰撞。
最短有效帧长为64 字节,小于64字节的帧都是无效帧
帧结构:
目的/源地址:48bit,MAC地址,也称为物理地址、硬件地址等。由IEEE管理和颁发,其中前24位由IEEE确定,后24位由硬件厂商确定。在以太网中,每个适配器只接受与自身MAC相匹配的数据帧:广播帧、多播帧和发给自己的单播帧
类型:指承载的上层协议,即在数据字段里封装着什么样的上层协议报文。
数据:至少46字节,不足则填充补足
CRC:采用CRC-32的生成多项式
10BASE-T以太网:以双绞线为物理传输介质的以太网,其物理拓扑结构为星形,中心结点为一种有很高可靠性的设备–集线器(Hub)
由Hub构成的星形网络在逻辑上依然是总线结构
依然使用 CSMA/CD 协议,并共享逻辑上的总线。 半双工方式传输数据。10BASE-T 的通信距离稍短,每个站到集线器的距离不超过 100 m。
局域网的扩展,碰撞域、广播域、网桥、广播风暴和生成树等概念、工作过程以及相关算法。
来自4.5.4节“局域网扩展”。
局域网的扩展
从物理层扩展
利用光纤作为传输媒介
利用集线器的级联
优点
使原来属于不同
碰撞域
的局域网上的计算机能够进行跨碰撞域的通信
碰撞域(Collision Domain)
:在以太网中,如果某个一个CSMA/CD网络上的两台计算机在同时通信时会发生冲突,那么这个CSMA/CD网络就是一个碰撞域/冲突域。扩大了局域网覆盖的地理范围
缺点
碰撞域增大了,但总的吞吐量并未提高
只能级联相同速率的集线器
从数据链路层扩展
利用
网桥
将两个不同的局域网互连
网桥
工作在数据链路层,根据 MAC 帧的目的地址对收到的帧进行转发。网桥具有过滤帧的功能。当网桥收到一个帧时,并不是向所有的接口转发此帧,而是先检查此帧的目的 MAC 地址,然后再确定将该帧转发到哪一个接口。
优点
过滤通信量,隔离冲突域
扩大了物理覆盖范围
提高了可靠性
可互连不同物理层、不同 MAC 子层和不同速率(如10 Mb/s 和 100 Mb/s 以太网)的局域网
缺点
存储转发增加了时延
在MAC 子层并没有流量控制功能
不同 MAC 子层的网段桥接在一起时时延更大
扩大了
广播域
,当结点数量较多时容易形成广播风暴
,导致网络拥塞而不可用
广播域(Broadcast Domain)
:广播域是指在一个网络中,广播数据包可以传播到的范围。
广播风暴
:由于网络中存在大量的广播帧,导致网络性能严重下降的现象。
生成树协议STP(Spanning Tree Protocol)
:是一种工作在数据链路层的通信协议,基本功能是防止由于冗余链路产生的环,确保网络中无环路的逻辑拓扑结构,从而避免广播风暴,大量占用网络资源。STP算法:
选举根网桥:以网桥优先级(bridge priority)和MAC地址组合生成的桥ID,ID最小者为根
遍历各结点到根网桥的所有路径,并计算每个路径的代价
在每个结点的所有到根网桥的路径中选择代价最小的路径为通信路径,其余路径作为备份路径并阻塞
为使适应网络拓扑变化,需定时重新计算生成树
虚拟局域网,包括相关的概念、格式和原理等。
来自4.5.4节“虚拟局域网”。
概念
虚拟局域网VLAN(Virtual Local Area Network)
是由局域网中不同网段上的结点所构成的逻辑网段,这些结点与其真实的物理位置和真实网段无关。通常,这些结点具有某些共同的需求。每个 VLAN 的帧中都会插入一个明确的标识符,指明发送这个帧的结点所属 VLAN。VLAN只是一种服务,而不是一种新型局域网。 和真实局域网一样,VLAN也能隔离广播风暴和冲突。
帧格式
VLAN协议允许在以太网的帧格式中插入一个 4 字节的标识符,称为
VLAN 标记(tag)
,用来指明发送该帧的结点属于哪一个VLAN。