数据链路层概念
数据链路层的简单模型:
主机H1向H2发送数据
H1到H2所经过的网络可以是多种的
仅从数据链路层观察帧的流动
不同的链路层可能采用不同的数据链路层协议
只考虑数据在数据链路层的流动
数据链路和帧:
链路是一条无缘的点到点的物理线路段,中间没有任何其他的交换结点
一条链路只是一条通路的一个组成部分
数据链路除了物理线路外,还必须有通信协议来控制这些数据的传输。若把视线这些协议的硬件和软件加到链路上,就构成了数据链路
现在最常用的方法是使用适配器(即网卡)来实现这些协议的硬件和软件
一般的适配器都包括了数据链路层和物理层这两层的功能
链路分为:物理链路和逻辑链路
物理链路是上面所说的链路
逻辑链路就是上面的数据链路,是物理链路加上必要的通信2协议
早期的数据通信协议曾叫做通信规程。因此在数据链路层,规程和协议是同义语。
数据链路层传送的是帧
(数据链路层里会把帧头帧尾去掉取出数据)
数据链路层像个数据管道:
数据链路层不必考虑物理如何实现比特传输的细节。甚至可以更简单地设想好像是沿着两个数据链路层之间的水平方向把帧直接发送到对方。
三个基本问题:
封装成帧
封装成帧:就是一段数据在前后分别添加首部和尾部,然后就构成了一个帧。确定帧的界限。
首部和尾部的一个重要作用就是进行帧定界
用控制字符进行帧定界的方法举例:
当数据是由可打印的ASCII码组成的文本文件时,帧定界可以使用特殊的帧定界符。
控制字符SOH放在一帧的最前面,表示帧的首部开始。另一个控制字符EOT表示帧的结束。
解决透明传输问题:
如果数据中的某个字节的二进制代码恰好和SOH或EOT一样,数据链路层就会错误的”找到帧的边界“
解决办法:
字节填充或字符填充
发送端的数据链路层在数据中出现控制字符”SOH“或”EOT“的前面插入一个转义字符”ESC“(其十六进制编码是1B)
接受端的数据链路层在将数据送我网络层之前删除插入的转义字符
如果转义字符也出现在数据当中,那么应在转义字符ESC。当接收端收到连续的两个转义字符时,就删除其中前面的一个。
差错检测
在传输过程中可能会产生比特差错:1可能会变成0而0也可能变成1
在一段时间内,传输错误的比特占所传输比特总数的比率称为误码率BER
误码率与信噪比有很大关系
为了保证数据传输的可靠性,在计算机网络传输数据时,必须采用各种差错检测的措施
循环冗余检验的原理
冗余码的计算:
冗余码计算方法:当二进制的模2运算进行2^n乘M的运算,这相当于在M后面添加n个0,得到(k+n)位的数除以选定好的除数p,得出商Q,余数R,余数R比除数P少1位,即R是n位。将余数R作为冗余码,添加到M后
发送数据是:2^nM+R
点对点协议
对于点对点的链路,目前使用最广泛的是PPP协议
用户使用拨号电话线接入互联网时,用户计算机和ISP进行通信时所使用的数据链路层协议就是PPP协议
用户到ISP的链路使用PPP协议
PPP协议应满足的要求
PPP协议不需要的功能:纠错、流量控制、序号、多点线路、半双工或单工链路(只工作在点对点链路)
PPP协议的组成
(1)当协议字段为0x0021时,PPP帧的信息字段就是IP数据报。
(2)当协议字段为0xC021时,PPP帧的信息字段就是PPP链路控制协议LCP的数据。
(3)当协议字段为0x8021时,PPP帧的信息字段就是网络层的控制数据。
(4)当协议字段为0xC023时,PPP帧的信息字段就是鉴别数据。
零比特填充
不提供使用序号和确认的可靠传输
PPP协议之所以不使用序号和确认机制是出于以下的考虑“
在数据链路层出现差错的概率不大时,使用比较简单PPP协议较为合理
在因特网环境下,PPP的信息字段放入的数据是IP数据报。数据链路层的可靠传输并不能够保证网络层的传输也是可靠的
帧检验序列FCS字段可保证无差错接受
PPP协议的工作状态
当用户拨号接入ISP时,路由器的调制解调器对拨号做出确认,并建立一条物理连接
PC机向路由器发送一系列的LCP分组(封装成多个PPP帧)
这些分组及其响应选择一些PPP参数,并进行网络层配置,NCP给新接入的PC机分配一个临时的IP地址,使PC机成为因特网上的一个主机
通信完毕时,NCP释放网络层连接,收回原来分配出去的IP地址。接着,LCP释放数据链路层连接。最后释放的是物理层的连接
可见,PPP协议已不是纯粹的数据链路层的协议,它还包含了物理层和网络层的内容
适配器的作用
网络接口板又称为通信适配器或网络接口卡NIC或网卡
计算机通过适配器和局域网进行通信
CSMA/CD
MA:"多点接入"表示许多计算机以多点接入的方式连接在一根总线上
CS:“载波监听”是指每一个站在发送数据之前先要检测一下总线上是否有其他计算机在发送数据,如果有,则暂时不要发送数据,以免发生碰撞
CD:“碰撞检测”就是计算机边发送数据边检测信道上的信号电压大小
当几个站同时在总线上发送数据时,总线上的信号电压摆动值将会增大(互相叠加)
当一个站检测到的信号电压摆动值超过一定的门限值时,就认为总线上至少有两个站同时在发送数据,表明产生了碰撞
所谓“碰撞”就是发送了冲突。因此“碰撞检测”也称为“冲突检测”
检测到碰撞后:
在发送碰撞时,总线上传输的信号产生了严重的失真,无法从中恢复出有用的信息来
每一个正在发生数据的站,一旦发现总线上出现了碰撞,就要立即停止发送,免得继续浪费网络资源,然后等待一段随机时间后再次发送
电磁波在总线上总是以有限的速率传播
当某个站监听到总线是空闲时,也可能总线并非真正是空闲的
A向B发出信息,要经过一定的时间后才能传送到B
B若在A发送信息到达B之前发送自己的帧(因为这时B的载波监听检测不到A所发送的信息),则必然要在某个时间和A发送的帧发送碰撞
CSMA/CD重要特性
使用CSMA/CD协议的以太网不能进行全双工通信而只能进行双向交替通信(半双工通信)
每个站在发送数据之后的一小段时间内,存在着遭遇碰撞的可能性
这种发送的不确定性使整个以太网的平均通信远小于以太网的最高数据率
问题
问题1:
每一站在发送数据之前已经监听到信道为“空闲”,为什么还会出现碰撞?
问题2
某站点最多经过多长时间能够检测到冲突(碰撞)?
问题3
为什么争用期是2τ而不是τ?
每个站点作为执行CSMA/CD协议的主体,需要自己主观上得到这个信息
问题4
产生碰撞之后如何进行避让
检测到碰撞——数据失真——停发
退避一段时间——重传
退避时间(何时启动重传)如何确定?
两个量化参数
争用期:
10 Mbit/s以太网(传统以太网)取51.2 us为争用期的长度
最短有效帧长:
对于10 Mbit/s以太网(传统以太网),在争用期内可发送512 bit,即64字节
课后思考
CSMA/CD到底完成哪一层任务?
以太网的MAC层
MAC层的硬件地址:
在局域网中,硬件地址又称为物理地址,或MAC地址
802标准所说的“地址”严格地来讲应当是每个站的“名字”或标识符
但鉴于大家都早已习惯了将这种48为的“名字”称为“地址”,所以本书也采用这种习惯用法,尽管这种说法并不太严格
(请注意,如果连接在局域网上的主机或路由器安装有多个适配器,那么这样的主机或路由器就有多个“地址”。更准确写些说,这种48为“地址”应当是某个接口的标识符)
48位的MAC地址:
IEEE 802标准规定MAC地址字段可采用6字节(48位)或2字节(16位)这两种中的一种
IEEE的注册管理机构RA负责向厂家分配地址字段6个字节的前三个字节(即高位位,称为组织唯一标识符)
地址字段6个字节中的后三个字节(即低位24位)由厂家自行指派,称为扩展唯一标识符,必须保证生产出的适配器没有重复地址。
一个地址快可以生成2^24个不同的地址。这种48位地址称为MAC-48,它的通用名称是EUI-48
生产适配器时,6字节的MAC地址已被固化在适配器的ROM,因此,MAC地址也叫做硬件地址
“MAC”地址实际上就是适配器地址或适配器标识符EUI-48
单站地址、组地址、广播地址:
当I/G位分别为0和1时,一个地址块可分别生成223个单个站地址和223个组地址
当所有48位都为1时,为广播地址。只能作为目的地址使用
全球管理与本地管理
IEEE把地址字段第一字节的最低第2位规定为G/L位,表示Global/Logal
当G/L位=0时,是全球管理(保证在全球没有相同的地址),厂商向IEEE购买的OUI都属于全球管理
当G/L位=1时,是本地管理,这时用户可任意分配网络上的地址
适配器检查MAC地址
适配器从网络上每收到一个MAC帧就首先用硬件检查MAC帧中的MAC地址。
如果是发往本站的帧则收下,然后再进行其他的处理
否则就将此帧丢弃,不再进行其他的处理
发送本站的帧,包括:…
适配器检查MAC地址
所有的适配器都至少能够识别前两种帧,即能够识别单播地址和广播地址
有的适配器可用编程方法识别多播地址
只有目的地址才能使用广播地址和多播地址
以混杂方式工作的以太网适配器只要“听到”有帧在以太网上传输就都接受下来
无效的MAC帧
数据字段的长度与长度字段的值不一致
帧的长度不是整数个字节
用收到的帧检验序列FCS查出有差错
数据字段的长度不在46~1500字节之间
有效的MAC帧长度为64~1518字节之间
对于检查出的无效MAC帧就简单地丢弃。以太网不负责重传丢弃的帧
以太网V2 MAC帧格式相似,区别在于:
(1)IEEE 802.3规定的MAC帧的第三个字段是“长度类型"
当这个字段值大于0x0600时(相当于十进制的1536)就表示类型。这样的帧和以太网V2 MAC帧一样
(2)当“长度/类型”字段值小于0x0600时,数据字段必须装入上面的逻辑链路控制LLC子层的LLC帧
无限局域网WLAN
分两大类:
有固定基础设施的WLAN
无固定基础设施的WLAN
IEEE 802.11
IEEE 802.11是一个有固定基础设施的WLAN的国际标准
IEEE 802.11就是无线以太网的标准:
它使用星形拓扑,其中心叫做接入点AP
在MAC层使用CSMA/CA协议
凡使用802.11系列协议的局域网又称为Wi-Fi
ESS还可以通过叫做用户为无线用户提供到非802.11无线局域网(例如,到有线连接的互联网)的接入。门户的作用就相当于一个网桥。
移动站A从某一个基本服务集漫游到另一个基本服务集(到A‘的位置),仍可保持与另一个移动站B进行通信
建立关联:
一个移动站若要加入到一个基本服务集BSS,就必须先选择一个接入点AP,并与此接入点建立关联
建立关联就表示这个移动站加入选定的AP所属的子网,并和这个AP之间创建了一个虚拟线路
只有关联的AP才向这个移动站发送数据,而这个移动站也只有通过关联的AP才向其他站点发送数据帧
移动站与AP建立关联的方法:
被动扫描:
移动站等待接入站周期性发出的信标帧
信标帧中包含有若干系统参数(如服务集标识符SSID以及支持的速率等)
主动扫描:
移动站主动发出探测请求帧,然后等待从AP发回的探测响应帧
移动自组网络:
移动自组网络又称为自组网络。自组网络是没有固定基础设施(即没有AP)的无线局域网
这种网络是由一些处于平等状态的移动站之间相互通信组成的临时网络
自组网络的服务范围通常是受限的,而且一般也不和外界的其他网络相连接
无线传感器网络 WSN:
无线传感器网络WSN是由大量传感器结点通过无线通信技术构成的自组网络
无线传感器网络的应用是进行各种数据的采集、处理和传输,一般并不需要很高的带宽,但是在大部分时间必须保持低功耗,以节省电池的消耗
由于无线传感结点的存储容量受限,因此对协议栈的大小有严格的限制
无线传感器网络 WSN:
无线传感器网络主要的应用领域就是组成各种的物联网IoT,例如:
环境监测与保护(如洪水预报、动物栖息的监控);
战争中对敌情的监测和对兵力、装备、物资等的监控;
医疗中对病房的监测和对患者的护理;
在危险的工业环境(如矿井、核电站等)中的安全监测;
城市交通管理、建筑内的温度/照明/安全控制等;
IEEE 802.11
802.11的物理层和MAC层:
802.11局域网的物理层
802.11标准中物理层相当复杂。根据物理层的不同(如工作频段、数据率、调制方法等),对应的标准也不同
最早流行的无线局域网是802.11b,802.11a和802.11g.2009年颁布了标准802.11n
802.11的物理层有以下几种实现方法:
直接序列扩频DSSS
正交频分复用OFDM
调频扩频FHSS(已很少用)
红外线IR(已很少用)
802.11局域网的MAC层:
MAC层通过协调功能来确定在基本服务集BSS中的移动站在什么时间能发送数据或接受数据
PCF子层使用集中控制的接入算法把发送数据权轮流交给各个站从而避免了碰撞的产生。自组网络就没有PCF子层
帧间间隔 1FS
所有的站在完成发送后,必须再等待一段很短的时间(继续监听)才能发送下一帧。这段时间的通称是帧间间隔
帧间间隔 1FS:
所有的站在完成发送后,必须再等待一段很短的时间(继续监听)才能发送下一帧。这段时间的通称是帧间间隔IFS
帧间间隔长度取决于该站欲发送的帧的类型。高优先级帧需要等待的时间较短,因此可优先获得发送权
若低优先级帧还没来得及发送而其他站的高优先级帧已发送到媒体,则媒体变为忙态,因此低优先级帧就只能再推迟发送了。这样就减少了发生碰撞的机会
SIFS,即短帧间间隔,长度为28US,是最短的帧间间隔,用来分隔开属于一次对话的各帧。一个站应当能够在这段时间内从发送方式切换到接收方式
使用SIFS的帧类型有:ACK帧、CTS帧、由过长的MAC帧分片后的数据帧,以及所有回答AP探询的帧和在PCF方式中接入点AP发送出的任何帧
DIFS,即分布协调功能帧间间隔,它比SIFS的帧间间隔要长的多,长度为128us。在DCF方式中,DIFS用来发送数据帧和管理帧
CSMA/CA协议
不能简单搬用CSMA/CD协议
无线局域网不能简单地搬用CSMA/CD协议。这里主要有两个原因:
“碰撞检测”要求一个站点在发送本站数据的同时,还必须不间断地检测信道,但接收到的信号强度往往会远远小于发送信号的强度,在无线局域网的设备中要实现这种功能就花费过大
即使能够实现碰撞检测的功能,并请求在发送数据时检测到信道是空闲的时候,在接收端仍有可能发送碰撞的
无线局域网的特殊问题:
未能检测出媒体上已存在的信号的问题叫做隐蔽站问题
B向A发送数据并不影响C向D发送数据,这就是暴露站问题
不能简单搬用CSMA/CA协议:
无线局域网不能使用CSMA/CD,而只能使用改进的CSMA协议
改进的办法是把CSMA增加一个碰撞避免CA功能
802.11就使用CSMA/CA协议。而在使用CSMA/CA的同时,还增加使用停止等待协议
CSMA/CA原理:
欲发送数据的站先检测信道
通过收到的相对信号强度是否超过一定的门限数值就可判定是否有其他的移动站在信道上发送数据
当源站发送它的第一个MAC帧时,若检测到信道空闲,则在等待一段时间DIFS后就可发送
为什么信道空闲还要等待:
这是考虑到可能有其他的站有高优先级的帧要发送。
如有,就要让高优先级帧先发送
如果没有高优先级的帧发送,则
源站发送了自己的数据帧。
目的站若正确收到此帧,则经过时间间隔SIFS后向源站发送确认帧ACK
若源站在规定时间内没有收到确认帧ACK,就必须重传此帧,直到收到确认为止,或者经过若干次的重传失败后放弃发送
虚拟载波监听
虚拟载波监听的机制是让源站将它要占用信道的时间(包括目的站发回确认帧所需的时间)通知给所有其他站,以便使其他所有站在这一段时间都停止发送数据
这样大大减少了碰撞的机会
“虚拟载波监听”是表示其他站并没有监听信道,而死由于其他站收到了“源站的通知”才不发送数据
虚拟载波监听这种效果好像是其他站都监听了信道
所谓“源站的通知”就是源站在其MAC帧首部中的第二个字段“持续时间”中填入了在本帧结束后还要占用信道多少时间(以微妙为单位),包括目的站发送确认帧所需的时间
网络分配向量
当一个站检测到正在信道中传送的MAC帧首部的“持续时间”字段时,就调整自己的网络分配向量NAV
NAV指出了必须经过多少时间才能完成数据帧的这次传输,才能使信道转入到空闲状态
信道预约
为了能更好地解决隐蔽站带来的碰撞问题。802.11允许要发送数据的站对信道进行预约
使用RTS帧和CTS帧会使整个网络的通信效率有所下降。但与数据帧相比,开销不算大
相反,若不使用这种控制帧,则一旦发生碰撞而导致数据帧重发,浪费的时间更多
虽然如此,协议还是设有三种情况供用户选择:
使用RTS帧和CTS帧
只有当数据帧的长度超过某一数值时才使用RTS帧和CTS帧(显然,当数据帧本身就很短时,再用RTS帧和CTS帧只能增加开销)
不使用RTS帧和CTS帧
虽然协议经过精心设计,但碰撞仍然会发生
CSMA/CA协议
争用窗口
信道从忙态变为空闲时,任何一个站要发送数据帧时,不仅都必须等待一个DIFS的间隔,而且还要进入争用窗口,并计算随机退避时间以便再次重新试图接入到信道
在信道从忙态转为空闲时,为了避免几个站同时发送信息,各站就要执行退避算法。这样做就减少了发生碰撞的概率
802.11使用二进制指数退避算法
二进制指数退避算法
退避计时器
冻结退避计时器剩余时间的做法是为了使协议所有站点更加公平