第五章 数据链路层
学习目的
-
目的1:理解链路层服务的主要功能
-
差错检查、纠错
-
共享广播信道:多点接入问题(multiple access)
-
链路层寻址(link layer addressing)
-
局域网技术:Ethernet, VLANs
-
-
目的2:链路层技术的实现
点到点的线路一般用于广域网【IP】
点可以是主机节点可以是路由节点
多点连接的链路容易发生碰撞【局域网,功能更复杂】
需要协调共享型介质MAC:Media Access Controll
需要寻址
wan全称Wide Area Network,是广域网的意思;lan全称Local Area Network,是局域网的意思
5.1 链路层概述
链路层的术语
-
主机和路由器: 节点(nodes)
-
沿着通信路径连接相邻节点的通信信道:链路(links)
-
有线链路(wired links)
-
无线链路(wireless links)
-
-
第二层的分组: 数据帧(frame), 它是封装了的数据报
数据链路层的职责是将数据报从一个节点传送到与该节点直接有物理链路相连的另一个节点。
帧:链路层的PDU【协议数据单元】
链路层解决点到点的数据传输
网络层解决端到端的数据传输
传输层解决进程到进程的区分,加强网络层的服务
应用层解决交换报文,实现网络应用
链路层的类比
-
数据报可以在不同的链路上,通过不同的链路层协议发送: e.g., Ethernet on first link, frame relay on intermediate links, 802.11 on last link
-
每个链路层协议提供不同的服务: e.g., 可以提供/也可以不提供可靠数据传输服务
-
运输的类比:
-
从学校到洛桑的旅程
-
小汽车: 电子科大——双流机场
-
飞机: 双流机场——日内瓦
-
火车: 日内瓦——洛桑
-
-
游客 = datagram
-
分段旅程 = communication link
-
运输模式 = link layer protocol
-
旅行社代理 = routing algorithm
-
每一段的帧的协议都不同,有以太网、帧中继等
5.1.1 链路层提供的服务
不同的链路层协议,提供的只是服务的子集
-
封装成帧,链路接入(framing, link access):
-
封装数据报为数据帧,增加头部,尾部信息
-
如果是共享链路,接入链路
-
在数据帧头部中,用MAC地址来标识源目的MAC地址【物理地址】
-
不同于IP地址
-
-
-
在相邻节点之间可靠传输数据帧
-
我们在第3章已经学习了如何在运输层实现数据的可靠传输
-
在比特错误率很低的链路(光纤、双绞线)很少使用
-
无线链路:高比特错误率
-
对于出错率高的链路层:需要实现可靠传输,防止到了源端再重发带来的恢复时间长、协议栈代价变高的问题。
-
问题:为什么要在链路层和端到端都实现可靠传输?
-
分层架构,并不知道下层或上层是否可靠,每层只实现自己的功能
-
为什么网络层不实现可靠服务?
-
网络层设计之初提供best effort 服务,没有实现可靠,可靠会增大传输成本
-
-
-
流量控制(flow control):
-
用于控制发送节点向直接相连的接收节点发送数据帧的频率
-
-
差错检查(error detection):【还剩下的服务】
-
差错可能由信号衰减、噪声引入、
-
接收方检测是否出现错误:
-
通知发送方重传或丢弃数据帧
-
-
-
错误纠正(error correction):【还剩下的服务】
-
接收方标识和纠正比特错误,而不需要请求重传
-
-
半双工和全双工(half-duplex and full-duplex):
-
在半双工模式,链路的两个节点都可以发送数据,但是不能同时发送
-
5.1.2 链路层实现的位置
网卡:Adapter 网络适配器,实现了链路层和响应的物理层的功能
-
在主机和网络设备(路由器)上实现
-
在主机上,链路层的主体部分是在网络适配器上实现的(称为网卡)
-
以太网卡,802.11卡;以太网芯片组
-
实现链路层和物理层的功能
-
-
硬件、软件、固件的组合
网络适配器
-
发送方:
-
封装数据报为数据帧
-
增加差错检测比特,可靠数据传输,流量控制等机制。
-
-
接收方
-
执行检查错误、可靠数据传输、流量控制等机制
-
抽取数据报,将其递交给上层
-
5.2 差错检测和纠错
差错检测和纠错技术
-
比特级差错检测和纠错
-
对一个节点发送到一个相邻节点的帧,检测是否出现比特错,并纠正。
-
相关技术很多。
-
差错检测和纠错的过程
-
-
差错检测并非100%可靠
-
协议可能丢失一些错误
-
差错校验位越多,检测和纠正功能越好
-
发送节点
-
将数据D附加若干差错检测和纠错位EDC,一起发送到链路。
-
数据D包括网络层传来的数据报,以及链路级寻址信息、序列号和其他字段。
-
保护范围包括数据D的所有字段。
接收节点
-
接收比特序列D'和EDC'。
-
如果发生传输比特错误(0->1,1->0),D'和EDC'可能与发送D和EDC不同
-
接收方根据D'和EDC',判断D'是否和初始的D相同(D的传输是否正确)。
-
-
正确:解封取出数据报,交给网络层;
-
出错:差错处理。
说明
-
差错检测和纠正技术不能保证接收方检测到所有的比特差错,即可能出现未检测到的比特差错,而接收方并未发现。
-
选择一个合适的差错检测方案使未检测到的情况发生的概率很小即可。
-
差错检测和纠错技术越好,越复杂,开销更大。
三种主要差错检测技术
-
奇偶校验:最基本的方法。
-
Internet校验和:常用于运输层。
-
循环冗余检测:常用于链路层。
一维比特奇偶校验
-
发送方:
-
在要发送的信息D(d位)后面附加一个奇偶校验位
-
使“1”的个数是奇数(奇校验)或偶数(偶校验)
-
一起传输发送(d+1位)。
-
-
接收方:
-
检测收到的信息(d+1位)中“1”的个数。
-
偶校验:发现奇数个“1”,至少有一个比特发生差错(奇数个特差错)。
-
奇校验:发现偶数个“1”,至少有一个比特发生差错。
-
-
可以查出任意奇数个错误,但不能发现偶数个错误。
-
若比特差错概率很小,差错独立发生,一比特奇偶校验可满足要求。
-
若差错集中一起“突发”(突发差错),一帧中未检测到的差错的概率达到50%。
二维奇偶校验
-
基本思想:
-
将要传信息D(d比特)划分为i行j 列(i 个组,每组j位);
-
对每行和每列分别计算奇偶值;
-
结果的i+j+1个奇偶比特构成了帧的差错检测比特。
-
二维奇偶校验的例子
-
要发送的数据比特10101 11110 01110, 划分3组,每组5个比特。进行行、列偶校验
-
特点:
-
可以检测并纠正单个比特差错(数据或校验位中)。
-
能够检测(但不能纠正)分组中任意两个比特的差错。
-
Internet校验和方法(复习)
Internet校验和的特点
-
分组开销小:检查和位数比较少;
-
差错检测能力弱:
-
适用于运输层(差错检测用软件实现,检查和方法简单、快速)。
-
链路层的差错检测由适配器中专用的硬件实现,采用更强的CRC方法。
循环冗余检测
-
计算机网络中广泛采用
-
循环冗余检测CRC (cyclic redundancy check)编码:
-
即多项式编码,把要发送的比特串看作为系数是0或1的一个多项式,对比特串的操作看作为多项式运算。
-
-
基本思想:
-
设发送节点要把数据D(d 比特)发送给接收节点。
-
发送方和接收方先共同选定一个生成多项式 G(r+1比特),最高有效位 (最左边)是1。
-
-
10111 -> x4+x2+x+1 位串的表示方式
循环冗余检测的基本思想
-
发送方:
-
计算出一个r位附加比特R,添加到D的后面产生DR(d+r 比特)
-
DR能被生成多项式G模2运算整除,一起发送。
-
-
接收方:
-
用生成多项式G去除接收到的DR(d+r比特)
-
余数非0:传输发生差错;
-
余数为0:传输正确,去掉尾部r位,得所需数据D。
-
-
什么是模2运算
-
加法不进位,减法不借位,即操作数按位异或 (XOR) 例 1011 XOR 0101=1110 ; 1011-0101=1110 1001 XOR 1101=0100 ; 1001-1101=0100
-
乘法和除法与二进制运算类似,其中加法或减法没有进位或借位。
-
乘以2r,即比特模式左移r 个位置。 D×2r XOR R = D 00…00 XOR R = DR (d+r 比特)
计算R(CRC比特)
CRC练习
最多检验多项式长度,超过了不保证检测得到
奇数位错误也可也被检测到
循环冗余码CRC的特点
-
生成多项式G的选择:常见的有8、12、16和32 比特生成多项式G。
-
国际标准已经定义了8-、16-、32-位生成多项式G;8-位CRC用于ATM信元首部的保护;32-CRC用于大量链路层IEEE协议。其他检错方法不常用,故不作专门介绍
-
CRC8生成多项式为G(x)=x8+x5+x4+1
-
CRC16生成多项式为G(x)=x16+x12+x5+1
-
CRC-32生成多项式为G(x)=x32+x26+x23+x22+x16+x11+x10+x16+x8+x7+x5+x4+x2+x+1
-
-
CRC特点: 能检测小于 r+1 位的突发差错、任何奇数个差错。
差错检测方法比较
-
奇偶校验能力最弱,CRC校验能力最强。
-
奇偶校验通常用于简单的串口通信【一个比特一个比特传输】
-
Internet校验和通常用于网络层及其之上的层次,要求简单快速的软件实现方式
-
CRC通常应用于链路层,一般由适配器硬件实现
检错纠错的基本原理*
海明编码*
5.3 多路访问链路和协议
多路访问链路和协议
-
两种网络链路:
-
点对点链路:链路两端各一个节点。一个发送和一个接收。如点对点协议PPP。
-
广播链路: 多个节点连接到一个共享的广播信道。 广播:任何一个节点传输一帧时,信号在信道上广播,其他节点都可以收到一个拷贝。常用于局域网LAN中,如早期的以太网和无线局域网。
-
-
本节主要学习广播链路的信道共享技术。
两个节点同时发送会造成冲突
MAC介质访问控制协议:协调介质的共享使用
多个站点一个信道,可发控制信息和数据信息
广播信道要解决问题
-
传统的广播电视:是单向的广播,一个固定的节点向许多接收节点发送。
-
计算机网络:广播信道上的节点都能够发送和接收。 好比许多人聚集在一起交谈(空气是广播媒体)。 解决“谁在什么时候获得说话权力”(向信道发送)。
-
多路访问问题:如何协调多个发送和接收节点对共享广播信道的访问。相关技术即是多路访问协议(也称多址访问协议)。
多路访问协议
-
目的:协调多个节点在共享广播信道上的传输。 避免多个节点同时使用信道,发生冲突(碰撞),产生互相干扰。
-
冲突(collide):两个以上的节点同时传输帧,使接收方收不到正确的帧(所有冲突的帧都受损丢失)。
-
造成广播信道时间的浪费。
-
多路访问协议可用于许多不同的网络环境,如有线和无线局域网、卫星网等。
-
-
理想的多址访问协议 速率为R bps的广播信道
-
当一个节点有数据发送时,它能以R bps的速率发送.
-
当有M个节点要发送数据,每个节点的平均发送速率为 R/M
-
完全分散: 不需要主节点协调传输 不需要时钟、时隙同步
-
简单
-
多路访问协议类型(三类)
-
信道划分协议
-
把信道划分为小“片” (时隙)
-
给节点分配专用的小“片”
-
-
随机访问协议
-
不划分信道,允许冲突
-
能从冲突中“恢复”
-
-
轮流协议
-
通过轮流访问信道避免冲突,要发送的节点越多轮流时间越长
-
5.3.1 信道划分协议
主要有TDMA、FDMA、CDMA三种。 设信道支持 N 个节点,传输速率是 R b/s。
-
时分多路访问TDMA (time division multiple access): 将时间划分为时间帧,每个时间帧再划分为N个时隙【slot】(长度保证发送一个分组),分别分配给N个节点。每 个节点只在固定分配的时隙中传输。 例:6个站点的LAN, 时隙1、3、4 有分组, 时隙2、5、6 空闲
-
TDMA的特点
-
避免冲突、公平:每个节点专用速率R/N b/s。
-
节点速率有限:R/N b/s;
-
效率不高:节点必须等待它的传输时隙。
-
-
频分多路访问FDMA (frequency division multiple access):
-
将总信道带宽 R b/s划分为 N 个较小信道(频段,带宽为R/N),分别分配给 N 个节点。例: 6个站点的LAN, 频带1、3、4 有分组, 频带2、5、6 空闲
-
特点: 避免冲突、公平:N个节点公平划分带宽; 节点带宽有限、效率不高:节点带宽为R/N。
-
-
码分多路访问CDMA (frequency division multiple access):
-
每个节点分配一个唯一的编码
-
每个节点用它唯一的编码来对它发送的数据进行编码
-
允许多个节点“共存” ,信号可叠加,即可以同时传输数据而无冲突 (如果编码 是“正交化”的)
-
5.3.2 随机访问协议
随机访问协议规定:
如何检测冲突
如何从冲突中恢复
ALOHA
纯 ALOHA
纯Aloha效率
纯Aloha的效率:1/2e
时隙ALOHA
冲突之后,以p的概率重传帧,时间越长成功概率越大。
###
载波侦听多路访问CSMA
传输前先侦听信道
由于电磁波传递的速度,局部的判知无法判断全局的使用情况。
端到端越长,传播延迟越大,冲突概率越大
CSMA可以进一步减少冲突可能性,但无法避免冲突
CSMA/CD(冲突检测)
CSMA:说之前听
CSMA/CD:边说边听
冲突发生时停止传输,提升信道利用率
以太网采用CSMA/CD
发送方检测到了冲突,发送Jam信号让所有站点都知道冲突
窗口越大碰撞几率下降,但平均等待时间增大了
直到m=10,取值为{0-1023},双方选择一个值,等待i*512位时
对载荷自适应
载荷越大,碰撞几率越大,窗口扩大
自适应算法:【二进制指数退避算法】
在等待时间和碰撞几率中取得较好的均衡
效率比ALOHA更好
CSMA/CA(冲突避免)
WLAN有两种模式:
有基础设施模式
自主帧模式
AP接入点【Access Point】
无线介质特点:电磁波衰减,开放空间传电磁波干扰严重。
发之前监听,发过程中不作冲突检测
无线网络中冲突检测不可行:
自身的电磁波信号强于其他节点传播的电磁波信号
不冲突不意味着成功
有限网络中:不发生冲突=成功
条件:帧>=2t(t=最远两个站点的传播延迟)
图中A、C为隐藏站点,B作为中继节点
A、C同时向B发送,对于A、C没有冲突,但在B点冲突,不代表成功。
为什么不采用CD?
由无线局域网带来的隐藏终端和暴露终端的问题使得CD不好用
CA:事前避免冲突,信道忙,则随机选择一个值,信道空闲时每个周期-1,为0时获得信道访问权
SIFS < DIFS,确认帧的发送优先级更高
以太网没有确认帧
冲突预约
线缆接入网络
下行数据:
互联网通过CMTS向客户端发送的一些数据
不存在竞争
上行数据【互联网访问的数据】:存在介质访问控制的问题
竞争式的预约的时隙
终端设备通过竞争式的上行链路的信道去预约,CMTS通过下行信道通知所有节点,采用预约的结果使用响应的时隙进行上行传输
若预约信息冲突,终端用户可再次预约【采用二进制退避的方法】
轮流MAC协议
信道划分:
低负载的情况下:每个用户的带宽只有1/N,利用率低
高负载情况下利用率高
随机访问:
低负载情况下:效率几乎100%
高负载情况下:冲突开销大,效率极低
单点故障:不可靠
分布式的轮询
高低负载效率都高
高负载比不过信道划分
低负载比不过随机访问
MAC总结
5.4 交换局域网
局域网概述
-
局域网:Local Area Network ( LAN )
-
多址访问协议广泛应用于局域网
-
基于随机访问的CSMA/CD广泛应用于局域网
-
基于令牌传递技术的令牌环和FDDI在局域网技术中变得次要或被淘汰
-
链路层技术的发展,使得局域网、城域网、广域网的概念变得越来越模糊和不重要
-
主要特点:网络为一个组织所拥有,且地理范围和站点数目均有限
-
局域网按拓扑结构进行分类:星形网、环形网、总线网、树形网和网状网
常见的网络拓扑结构
-
星型结构
-
辐射状连接
-
中央结点集中式通信控制
-
优点:结构简单,访问协议简单,单个节点的故障不会影响到整个网络。
-
缺点:对中央结点的可靠性要求很高,一有故障,全网瘫痪。
-
总线结构
-
所有的站点都连接在同一根传输线,即“总线”上
-
优点:结构简单,易于扩充
-
缺点:故障检测比较困难
-
环型结构
-
站与站点之间首尾相接,形成一个环,数据只能沿单方向传输
-
优点:这种结构适合于光纤介质。实时性较强
-
缺点:如果处理不当,站点的故障会引起全网故障
-
树型结构
-
它是从星型拓扑演变而来的,形状像一棵倒挂的树
-
特点:与星型拓扑大致相似。它与星型结构相比降低了通信线路
本,增加了网络复杂性
-
网状结构
-
网状网络的每一个站点都与其它站点一一直接互连
-
优点:连接方法主要是利用冗余的连接,实现站与站之间的高速传输和高容错性能,以提高网络的速度和可靠性
-
缺点:关系复杂,建网难,维护难
计算机与局域网的连接
计算机与局域网通过网络接口板进行连接,网络接口板又称通信适配器(Adapter)或网络接口卡NIC(Network Interface Card),通常我们称为“网卡”。
局域网体系结构
-
美国电气与电子工程师协会IEEE 802委员会制定的IEEE 802局域网标准已经得到了国际标准化组织ISO的采纳,成为计算机局域网的事实标准
-
IEEE 802局域网参考模型是针对局域网的网络体系结构特点而制定的,它遵循ISO/OSI参考模型的原则,解决物理层和数据链路层的功能以及与网络层的接口服务、网际互连的高层功能
局域网体系结构
LANs
前n-1跳是ip地址的子网层起作用
LAN地址【48位】:区分一个网络的内部,节点节点之间的切分
MAC:在物理网络的内部标识每个节点,从而把分组分装为帧从一个节点发到另一个节点【唯一标识一块网卡】
IP地址是分层的,MAC地址的平面的
ARP:IP地址到MAC地址的转换
IP地址完成网络到网络的交付
MAC地址完成物理网络内部的节点到节点的数据交付
分离的好处
网卡变了IP地址可以不变
可以支持不同的网络层协议
!!!MAC地址完成的工作
前n-1跳:到下一跳的IP转换为MAC
最后一条将目标IP地址转换为MAC地址
将这些MAC地址交给网卡,封装成帧【都是一个网卡交给另一个网卡】
经过前面n-1跳,穿过若干子网,最后一跳到达目标主机
广播MAC地址:48位全1,整个局域网内的所有节点都能收到
MAC地址可以移动
IP地址不能随意移动,子网前缀不同
ARP协议
查询MAC地址
查询缓存表
没有
广播IP地址,等待接收ARP包的回复得到MAC地址
加入节点的IP-to-MAC地址映射关系表,20min信息超时
有
直接查询得到
理解过程:【假设有n跳(n>2)】
第一步:A节点查询默认网关的IP地址,广播ARP包,得到网关路由器的MAC地址
第二步:封装成帧,发向网关路由器
第三步:路由器解封装,得到目标IP地址,查询路由表,得到转发端口和下一跳IP地址
第四步:重复第一步,得到下一跳路由器的MAC地址,重复第二步
第五步:直到到达目标IP的网关路由器,同样得到MAC地址,进行封装发送。
穿过每一段的MAC形式都可能变,IP地址始终不变
以太网
每个节点使用CSMA/CD【冲突检测】的方式
线缆只要有一处破损,会导致总是冲突
hub集线器:一个端口收,所有端口发
集线器的连接设备,都处于一个碰撞域内,一次只能有一个设备发【逻辑上看总线型,物理看星形】
过多的节点连接会导致冲突增多,效率下降,需升级为Switch【交换机】
交换机:网络的发送和接收可以同时多个主机并行。
发送节点发送至交换机,交换机存储后只转发到对应的端口
CSMA/CD在高负载情况下冲突的弱点,由交换机解决
网卡混杂模式,接收所有目标MAC
type:标注上层需要交给的协议【IP、xx】
CRC:循环冗余校验
以太网:无连接、不可靠的服务
以太网使用CSMA/CD
T代表双绞线
所有集线器连接的节点处在同一个碰撞域中
Manchester编码
每个信号中间有向下的跳变代表1,有向上的跳变代表0
接收方可以区分时钟和数据
物理层内容
体积x2,10M的数据变为20M
慢车斯顿编码在每个比特都有时钟周期和传送的数据,导致带宽太宽。
4b5b,100M->125M,有限的若干比特至少有一个跳边
802.11WLAN
网络交换设备
Hub集线器
集线器Hub
物理上是星型设备,逻辑上是总线型,盒中总线
Hub可以接其他hub,所有设备都在一个碰撞域中,一次只有一个站点能发送
碰撞域即网段
交换机
交换机:帧的存储转发。每个端口是一个网段。多个主机可以并发发送。
透明
点到点:主机直接接到交换机
表项:(主机MAC,经过的接口,时戳)
当接收到帧的时候,交换机学习到发送站点的端口,记录时添加时戳,到时间删除
不知道帧的端口,进行泛洪【向所有端口转发】
出去的端口和进来的端口不同
转发
出去的端口和进来的端口相同
丢弃【过滤】
不知道捆绑的端口
泛洪
交换机VS路由器
VLANS
VLAN:一个物理LAN基础设施,虚拟成多个LANs
基于端口的VLAN:交换机端口成组(通过交换机管理软件),以至于单个的交换机可以分成若干虚拟LANs1
VLAN之间通过路由器进行转发
多个交换机共享VLAN,之间传输帧必须使用trunk port干线接口,携带VLAN ID【802.1Q】
链路虚拟化MPLS
按照标签进行转发
数据中心网络
高带宽、高可靠性、低延迟
页面请求流程
学生在校园启动一台笔记本电脑:请求和接受www.google.com