数据链路层
1、数据链路层基本概念及基本问题
数据链路层使用的信道主要有一下两种类型:
- 点对点信道:一对一
- 广播信道:一对多(集线器),必须使用专用的共享信道协议来协调这些主机的数据发送
点对点信道的数据链路层
数据链路和帧
链路:一条点到点的物理线段,中间没有任何其他节点
一条链路只是一条通路的一个组成部分
数据链路:除了物理线路外,还必须有通信协议来控制这些数据的传输。若把实现这些协议的硬件和软件加到链路上,就构成了数据链路
现在最常用的方法是使用适配器(即网卡)来实现这些协议的硬件和软件
一般的适配器都包括了数据链路层和物理层这两层的功能
数据链路层传送的是帧:
帧由网络层的IP数据报加上帧头和帧尾构成
点对点信道的数据链路层进行通信的主要步骤
- 结点A 的数据链路层把网络层交下来的 IP 数据报添加首部和尾部封装成帧
- 结点 A 把封装好的帧发送给结点 B 的数据链路层
- 若结点B 的数据链路层收到的帧无差错,则从收到的帧中提取出IP数据报交给上面的网络层,否则丢弃这个帧
三个基本问题
1. 封装成帧
在一段数据(这个数据是从网络层下来的数据报)的前后分别添加首部和尾部,这样就构成了一个帧。
接收端在收到物理层上交的比特流后,就能根据首部和尾部的标记,从收到的比特流中识别帧的开始和结束。
帧的首部和尾部的一个重要的作用就是进行帧定界。
帧的首部和尾部还包含了许多必要的控制信息。
最大传送单元MTU:每一种链路层协议都规定了所能传送的帧的数据部分长度上限
当数据是由可打印的ASCII 码组成的文本文件时,帧定界可以使用特殊的帧定界符。 ASCII
码是7位编码,一共可组成128个不同的ASCII 码,其中可打印的有95个。 控制字符
SOH:放在一帧的最前面表示帧的首部开始,十六进制为01(00000001) EOT:表示帧的结束,十六进制为04(00000100)
SOH(EOT)并不是S、O、H(E、O、T)三个字符 发送方
假设发送端在发送一个帧时突然出了故障,中断了发送,但随后又恢复了正常,于是又重新从头开始发送刚才未发送完的帧。 接收方由于使用了帧界定符,接收端就知到前面收到的数据是个不完整的帧,必须丢弃,而后面收到的数据有明确的帧界定符,因此是一个完整的帧,应当收下。
2. 透明传输
指对于发送者和接收者来说,不知道中间曾经增加过转义字符
字节填充:帧首部(SOH)和帧尾部(EOT)一般为不可打印字符,数据内容一般为可打印字符,若数据内容中出现用于表示帧首部和帧尾部的字符,在SOH和EOT前面加上ESC的ACSII码(其十六进制为1B),若出现ESC,也在其前面增加ESC字符,当接收端的数据链路层向网络层传输数据时,则须删除转义字符(ESC),若出现连续两个转义字符,则删除前面一个。
3. 差错检测
传输过程中可能会产生比特差错:1变成0,0变成1
在一段时间内,传输错误的比特占所传输比特总数的比率为误码率BER(Bit Error Rate),设法提高信噪比,就可以使误码率减小。
误码率与信噪比有很大的关系。
为了保证数据传输的可靠性,在计算机网络传输数据时,必须采用各种差错检测措施
循环冗余检验(CRC)通俗讲解
数据链路层只负责没有差错的接收,若包传输错误,则丢掉,数据链路层不要求重传,程序层次(发送端和接收端的应用程序)要求重传
CRC只能做到无差错接受:即接受的都是对的,但是要做到“可靠传输”,还要加上确认和重传(考虑帧重复,帧丢失,帧乱序),CRC是无比特差错,而不是无传输差错的检测机制
OSI/RM模型认为:数据链路层要做到无传输差错,但这只是理想情况
2、点对点协议PPP
用户计算机和ISP进行通信时所使用的数据链路层协议
PPP协议分为三个部分:
- 一个将IP数据报封到串行链路的方法。PPP既支持异步链路(无奇偶校验的8比特数据),也支持面向比特的同步链路。
- 一个用来建立、配置和测试数据链路的链路控制协议LCP(Link Control Protocol)。通信的双方可协商一些选项。在[RFC 1661]中定义了11种类型的LCP分组。
- 一套网络控制协议NCP(Network Control Protocol),支持不同的网络层协议,如IP、OSI的网络层、DECnet、AppleTalk等。
PPP协议的帧格式
异步传字节
7E:(01111110)代表开始和结尾
FF:代表目标地址(由于是点对点,目标地址没有用,所以FF是固定的)
03:固定的
协议:2个字节,用来表示信息部分是哪种类型的数据
信息部分:透明传输若出现7E,则变成7D,5E ;若出现7D,则变成7D,5D;若出现ASCII中的控制字符(即数值小于0x20的字符),在前面增加7D用于转义
FCS:帧检验序列
同步比特流
PPP如果传比特流(不是8的倍数(1字节为8bit)),则用零比特填充方法实现透明传输:只要发现有5个连续的1,则填入一个0,这样就不会出现开始和结束标识符(7E(01111110))
PPP协议的工作状态
建立物理连接:用户拨号接入ISP,路由器的调制解调器对拨号做出确认
建立数据链路层连接:PC机想路由器发送一系列LCP分组(封装成多个PPP帧)
建立网络层配置:分组和响应来选择一些PPP参数,NCP给PC机房分配临时额IP地址,使PC机成为因特网的一个主机
通信完毕:
NCP释放网络层协议收回IP地址
LCP释放链路层连接
释放物理层连接
3、使用广播信道的数据链路层
局域网的数据链路层
局域网特点:网络为一个单位所有,且地理范围和站点数目均有限,具有广播功能
局域网的优点:
- 具有广播功能
- 便于系统的扩展和逐渐地演变
- 提高了系统的可靠性、可用性和生存性
共享通信媒体:链路为所有计算机所共享
静态划分信道:在任意两台计算机之间都要建立信道(不方便)频分复用 时分复用 波分复用 码分复用
动态媒体介入控制(多点接入)
- 随机接入(一接就通)(以太网采用)
- 受控接入,如多点线路探询,或轮询(现很少用)
CSMA/CD协议
这个解决许多计算机都连接在一根线上通信冲突的问题
载波监听:每一个站在发送数据之前先利用电子技术检测总线上是否有其他计算机发送的数据信号,如果有,则暂时不发送数据,一面发生碰撞
多点接入:许多计算机以多点接入的方式连接在一根总线上
碰撞检测:计算机边发送数据边检测信道上额信号电压大小
当几个站同时在总线上发送数据时,总线上的信号电压摆幅增大,从而可以检测到,发生碰撞时,总线上传输的信号严重失真且无法恢复,此时应停止发送避免浪费网路资源
使用CSMA/CD协议额以太网不能进行全双工通信只能进行半双工通信
每个站在发送数据之后额一小段时间内,存在着遭遇碰撞的可能信,这种发送的不确定性是的整个以太网的平均通信量远小于以太网的最高数据率
争用期:2τ = 51.2μs(两倍的端到端的往返时延)
经过争用期这段时间还没有检测到碰撞,可以保证这次发送不会发送碰撞
2τ:对于10Mb/s的以太网来说可以发送512bit,即64字节
最短有效帧长:64字节,以太网规定凡长度小于64字节的帧都是由于冲突而异常中止的无效帧
二进制指数类型退避算法(CSMA/CD协议实现的):
发生碰撞的站在停止发送数据后,要推迟一个数据时间才能再发送数据
(1)基本确定时间:一般取值争用期2τ
(2)定义参数k:k=Min[重传次数,10]
(3)从整数集合[0,1,2…(2k-1)]中随机地取出一个数,记为r,重传时延为r倍的基本退避时间
CSMA/CD协议的要点归纳如下:
(1)准备发送:适配器从网络层获得一个分组,加上以太网的首部和尾部(见本章的3.4.3节),组成以太网帧,放入适配器的缓存中。但在发送之前,必须先检测信道。
(2)检测信道:若检测到信道忙,则应不停地检测,一直等待信道转为空闲。若检测到信道空闲,并在96比特时间内信道保持空闲(保证了帧间最小间隔),就发送这个帧。
(3)在发送过程中仍不停地检测信道,即网络适配器要边发送边监听。这里只有两种可能性:
一是发送成功:在争用期内一直未检测到碰撞。这个帧肯定能够发送成功。发送完毕后,其他什么也不做。然后回到(1)。
二是发送失败:在争用期内检测到碰撞。这时立即停止发送数据,并按规定发送人为干扰信号。适配器接着就执行指数退避算法,等待,倍512比特时间后,返回到步骤(2),继续检测信道。但若重传达16次仍不能成功,则停止重传而向上报错。
以太网每发送完一帧,一定要把已发送的帧暂时保留一下。如果在争用期内检测出发生了碰撞,那么还要在推迟一段时间后再把这个暂时保留的帧重传一次。
集线器
集线器是使用电子器件来模拟实际电缆线的工作,因此整个系统仍然像一个传统的以太网那样运行。集线器使用了大规模集成电路芯片,因此这样的硬件设备的可靠性大大提高了。
使用集线器的以太网在逻辑上仍是一个总网线,各工作站使用的还是CSMA/CD协议,并共享逻辑上的总线。
集线器很像一个多接口的转发器,工作在物理层
集线器是工作在物理层的傻瓜设备,只负责转发数据,传递电信号
以太网的信道利用率
发送一帧的平均时间:一个帧从开始发送,经过可能发送的碰撞后,将再次重传数次,知道发送成功且信道转为空闲(即再经过τ时间是的信道上无信号)为止
参数a:a=τ/T0(想要a越小,以太网长度不能太长,帧长不能太短)
α→0,表示一发生碰撞就立即可以检测出来, 并立即停止发送,因而信道利用率很高。
α 越大,表明争用期所占的比例增大,每发生一次碰撞就浪费许多信道资源,使得信道利用率明显降低。
以太网的MAC层
每个网卡有一个唯一的MAC地址(48位二进制,前24位代表厂家,后24位厂家指定)
MAC地址硬件地址物理地址适配器地址适配器标识符EUI-48
可以人工指定一个MAC地址,即不使用网卡的MAC地址(MAC地址冲突不会报错,也不通)
适配器(网卡)从网络上每接收到一个MAC帧就首先用硬件检查MAC帧中的MAC地址,从而决定是否处理
发往本站的帧包含
- 单播帧:一对一
- 广播帧:一对全体(目标地址:全1(48位))
- 多播帧:一对多(目标地址由IP构造)
格式
无效的MAC帧:丢掉,以太网不负责重传,应用层负责重传丢弃的帧
(1)帧的长度不是整数字节
(2)FCS有差错
(3)数据(IP数据报)的长度不在46——1500字节之间
(4)有效的MAC帧长度不在64(6+6+2+46+4)——1518字节之间
帧间最小间隔为9.6μs,相当于96bit的发送时间,(一个站在检测到总线开始空闲后,还要等待9.6μs才能再次发送数据),这样做是为了站将刚刚接收到的数据处理掉,做好接收下一帧的准备
4、扩展以太网
这中扩展的以太在网络层看来仍然是一个网络
物理层
使用光纤扩展——主机使用光纤(通常是一对光纤)和一对光纤调制解调器连接到集线器。很容易使主机和几公里以外的集线器相连接。
使用集线器扩展——使用多个集线器可连成更大的、多级星形结构的以太网。
优点:
- 使原来属于不同碰撞域的以太网上的计算机能够进行跨碰撞域的通信。
- 扩大了以太网覆盖的地理范围。
缺点:
- 碰撞域增大了,但总的吞吐量并未提高。
- 如果不同的碰撞域使用不同的数据率,那么就不能用集线器将它们互连起来。
数据链路层
最初人们使用的是网桥。网桥对收到的帧根据MAC帧的目的地址进行转发和过滤。网桥有学习功能(现很少使用网桥,多使用交换机)
1990年开始使用交换式集线器,又被称为以太网交换机或第二层交换机。
以太网交换机的特点:
以太网交换机实质上是一个多接口的网桥。
每个接口都直接与一个单台主机或另一个以太网交换机相连,并且一般都工作在全双工方式。
以太网交换机具有并行性。
相互通信的主机都是独占传输媒体,无碰撞的传输数据。
以太网交换机的接口有存储器,能在输出端口繁忙时把到来的帧进行缓存。
以太网交换机是一种即插即用设备,其内部的帧交换表(又称为地址表)是通过自学习算法自动地逐渐建立起来的。
以太网交换机使用了专用的交换结构芯片,用硬件转发,其转发速率要比使用软件转发的网桥快很多。
虚拟局域网
一个交换机连上计算机称为一个网段,计算机可以查看一个网段上其他计算机的共享资源
局域网(LAN):一个网段称为一个局域网(因为要接在同一台计算机上,因此是以位置划分的)
虚拟局域网(VLAN):以逻辑划分的局域网(想怎么分怎么分)
VLAN的干道链路:可以跑多个VLAN的数据(统计时分复用(加标记))
一条线路如果要访问多个VLAN,要配置成干道链路
如果只访问一个VLAN,则配置成访问链路
5、高速以太网
100BASE-T
是在双绞线上传送100Mbit/s基带信道的星形拓扑以太网
CSMA/CD协议对全双工方式工作的快速以太网是不起作用的,但是在半双工工作时则一定要使用CSMA/CD协议。
吉比特以太网
特点:
- 允许在 1 Gbit/s 下以全双工和半双工两种方式工作。
- 使用 IEEE 802.3 协议规定的帧格式。使用 IEEE 802.3 协议规定的帧格式。
- 在半双工方式下使用 CSMA/CD 协议,全双工方式不使用 CSMA/CD 协议。在半双工方式下使用 CSMA/CD 协议,全双工方式不使用 CSMA/CD 协议。
- 与 10BASE-T 和 100BASE-T 技术向后兼容。 与 10BASE-T 和 100BASE-T 技术向后兼容。
10吉比特以太网
10GE 只工作在全双工方式,因此不存在争用问题 ,当然也不使用CSMA/CD协议。
以太网从 10 Mbit/s 到 100 Gbit/s 的演进证明了以太网是: