数据链路层
- 数据链路层使用的信道:
- 点对点信道:使用一对一的点对点通信方式
- 广播信道:使用一对多的广播通信方式,过程比较复杂,需要专用的协议来协调
- 点对点信道的数据链路
- 链路(物理链路):从一个结点到相邻结点的一段物理线路,中间没有任何其他的交换节点
- 在数据通信时,两台计算机间的通信路径往往要经过许多段这样的链路。可见链路只是一条路径的组成部分
- 数据链路(逻辑链路):将实现这些通信协议的硬件和软件加到链路上就构成了数据链路。现在常用网络适配器(如:网卡)来实现这些协议
- 网络适配器:既有硬件也包括软件,实现了通信协议,包括了数据链路层和物理层两层的功能
- 规程:数据链路中,规程等于协议
- 帧:点对点信道数据链路的单元-数据链路的单位
- 数据链路通信的主要步骤:
- 结点A的数据链路层把网络层交下来的IP数据报添加首部和尾部封装成帧
- 结点A把封装好的帧发送给结点B的数据链路层
- 若结点B的数据链路层收到的帧无差错,则从收到的帧中提取IP数据报上交给网络层;否则丢弃这个帧
- 特点:数据链路层无需考虑物理层如何实现,相当于对等层水平通信。只管能不能发送
- 三个基本问题
- 封装成帧
- 封装成帧:就是在一段数据前后分别添加首部和尾部,确定帧的界限,然后就构成了一个帧
- 添加首部和尾部的作用:进行帧定界(确定帧的界限);包含许多必要的控制信息
- 帧长:帧的数据部分加上帧首部和帧尾部的长度
- 最大传送单元MTU:链路层协议规定的所能传送的帧的数据部分长度上限
- 帧界定的方法:可用特殊的帧定界符,在ACSCII码中,用SOH表示帧的首部开始,EOT表示帧的结束
- 帧界定的作用:判断收到的帧是否完整,不完整则丢弃
- 透明传输
- 透明传输:不管什么数据,都能完整无差错的通过这个数据链路层,数据链路层对数据没有妨碍,数据链路层对数据时透明的
- 透明传输中的问题:若数据中的某个字节的二进制代码恰好组成了帧界定符,就会出现错误
- 解决办法:字节填充,在控制字符和特殊字符前面插入一个转义字符“ESC”,而真正的首部和尾部前不加,到了接收端检测到两个转义字符时就删除前面一个
- 差错检测
- 比特差错:在传输中可能会产生比特差错,1可能变0,0可能变1
- 误码率:在一段时间,传输错误的比特占所有传输比特总数的比率,与信噪比有关
- 常用的检测方法:CRC循环冗余检测
- 传输差错的分类:
- 比特差错:1变0,0变1
- 帧丢失:丢失某个帧
- 帧重复:某个帧收到多次
- 帧失序:后发送的帧反而先到达接收端
- CRC的缺点:只能实现无比特差错,不能实现无传输差错,只能判断收到的数据是否正确,其余的无法判断,并不是可靠传输
- 点对点协议PPP
目前点对点链路中使用最广泛的协议
- 特点
- 作用域 用于计算机和ISP进行通信时所使用的数据链路层协议
- PPP协议应满足的需求
- 简单:对数据链路层的帧,不需要纠错、序号、流量控制,简单作为首要要求;收到帧进行CRC检验,无差错则接收,反之丢弃
- 封装成帧:必须规定特殊的字符作为帧定界符,使接收端从收到的比特流中准确找出帧的开始和结束位置
- 透明性:必须保证数据传输的透明性,要能解决碰巧出现和帧定界符一样的比特组合的问题
- 多种网络层协议:必须能够在同一条物理链路上同时支持多种网络层协议的运行,如IP等;在局域网和路由器上同样如此
- 多种类型链路:必须能够在多种链路上运行
- 差错检测:必须能够对接收端收到的帧进行检测,并立即丢弃有差错的帧
- 检测连接状态:必须能够自动检测链路是否处于正常工作状态
- 最大传送单元:必须对每一种类型的点对点链路设置MTU的标准默认值;促进各种实现之间的互操作性,若高层协议发送的分组数据部分超过MTU值,则丢弃并返回差错
- 网络层地址协商:必须提供一种机制使通信的两个网络层的实体能够通过协商知道或能够配置彼此的网络层地址
- 数据压缩协商 :必须提供方法来协商使用数据压缩算法
- PPP的特点:不支持多点线路,只支持点对点的链路通信,只支持全双工链路
- PPP协议不需要的功能:纠错、流量控制、序号、多点线路、半双工或单工链路(只工作在点对点链路)
- PPP协议的组成
- 将IP数据报封装到串行链路的方法;PPP支持异步链路,也支持面向比特的同步链路;IP数据报就是PPP帧中的信息部分,这个长度受到最大传输单元MTU限制
- 一个用来建立、配置和测试链路连接的链路控制协议LCP
- 一套网络控制协议NCP,其中每个协议支持不同的网络层协议,如 IP,OSI网络层等等
- PPP协议的帧格式
- 首部和尾部分别为4个字段和2个字段
- 标志字段F:规定为0x7E,表示一个帧的开始或结束,就是帧的定界符
- 地址字段A:规定为0xFF
- 控制字段C:规定为0x03
- 协议字段:
(1)当协议字段为0x0021时,PPP帧的信息字段就是IP数据报。 (2)当协议字段为0xC021时,PPP帧的信息字段就是PPP链路控制协议LCP的数据。 (3)当协议字段为0x8021时,PPP帧的信息字段就是网络层的控制数据。 - 信息字段:长度可变,不超过1500字节
- 帧减压序列FCS:CRC中使用的冗余码
- 透明传输问题: 当信息字段中出现和标志字段一样的比特(0x7E)组合时,就必须采取一些措施使这种形式上和标志字段一言的比特组合不出现在信息字段中。
- PPP使用异步传输时 ,它把转移符定义为0x7D,并使用字节填充。
- 由于在发送端进行了字节填充,因此在链路上传送的信息字节数就超过了原来的信息字节数。但接收端在接收到数据后再进行与发送端字节填充相反的变换,就可以正确地恢复出原来的信息。
- 当PPP使用同步传输时,使用零比特填充。
- 操作方法:在发送端扫描整个信息字段,如果发现有连续的5个1,立即填入一个0,接收端接受一个帧时发现里面有5个连续的1时就将后面的一个0删除,还原成原来的信息比特流
- 因此通过这种零比特填充后的数据,就可以保证在信息字段中不会出现连续6个1。
- PPP协议的工作状态
- 使用广播信道的数据链路层
- 局域网的数据链路层
- CSMA/CD协议
- 总线的特点:当一台主机发送数据时,总线上所有主机都能检测到这个数据,就是广播通信方式
- 为了使通信简便采取的措施:
- 采用无连接工作方式,不必先建立连接就可以直接发送数据;适配器对数据帧不编号,不要求发回确认;因此,以太网提供尽最大努力交付,是不可靠交付;收到差错帧则丢弃,是否重传由高层决定,和以太网无关;同一时间只允许一台主机发送数据;使用CSMA/CD协议
- 发送的数据使用曼切斯特编码
- CSMA/CD协议的要点:
- 多点接入:说明是总线型网络
- 载波监听:检测总线上有没有其他计算机也在发送;每个主机必须不停的检测信道,发送前检测是为了获得发送权,发送中检测是为了及时发现碰撞
- 碰撞检测:边发送边监听,也叫冲突检测;发生碰撞就立即停止发生,等待一段随机时间后再次发送
- 碰撞的原因: 电磁波在1km电缆的传播时延为5μs,在这段时间其他主机发送数据无法检测到,就会导致之后某时刻发送冲突
- 适用环境:双向交替通信(半双工通信)
- 以太网的发送不确定性:每一个站在自己发送数据之后一段时间内,存在遭遇碰撞的可能,这段时间是不确定的,取决于离另一个发送站的距离,因此无法保证一定能把自己的数据帧成功发送出去
- 争用期(碰撞窗口):以太网端到端的往返时间2τ;经过争用期没检测到碰撞,才能肯定这次发送不会发送碰撞
- 截断二进制指数退避算法:用来确定碰撞后重传的时机,不是信道空闲就立即再次发送,而是推迟一个随机的时间
- 以太网规定了最短帧为64字节,假设A检测到网络是空闲的,开始发数据包,尽力传输,当数据包还没有到达B时,B也监测到网络是空闲的,开始发数据包,这时就会发生碰撞,B首先发现发生碰撞,开始发送碰撞信号,所谓碰撞信号,就是连续的01010101或者10101010,十六进制就是55或AA。这个碰撞信号会返回到A,如果碰撞信号到达A时,A还没有发完这个数据包,A就知道这个数据包发生了错误,就会重传这个数据包。但如果碰撞信号会返回到A时,数据包已经发完,则A不会重传这个数据包。
- 凡长度小于64字节的帧都是由于冲突而异常终止的无效帧
- 强化碰撞:当发现碰撞时,处理立即停止发送数据外,还要继续发送32bit或48bit的人为干扰信号,使所有用户都知道发生了碰撞
- 帧间最小间隔:9.6μs,即96比特时间,使刚收到数据帧的站的接受缓存来得及清理,做好接收下一帧的准备
- CSMA/CD协议要点:
- 准备发送
- 检测信道
- 在发送过程中仍不停检测信道,边发送边监听。这里有两种可能:
- 发送成功:什么都不做返回到1
- 发送失败:检测到碰撞,停止发送,按规定发送人为干扰信号强化碰撞,执行指数退避算法,等待时间后重新执行2,若重传16次仍不成功则,停止重传并向上报错
- 使用集线器的星形拓扑
- 集线器的特点:使用集线器的以太网在逻辑上仍是一个总线网,各站共享逻辑上的总线,还是使用CSMA/CD协议,在同一时刻只允许一个站发送数据
- 一个集线器有多个接口,因此一个集线器很像一个多接口转发器
- 集线器工作在物理层,仅简单的转发比特,不进行碰撞检测
- 有专用的芯片,能自适应串音回波抵消
- 每次只能发送一个信号,工作在物理层,只对比特进行转发不进行检测
- 集线器/中继器/转发器:放大,整形
- 以太网信道的利用率
- 以太网信道的利用率:由于会发生碰撞,实际利用率达不到100%
- 成功发送一个帧需要占用信道T 0 + τ那么长的时间,这是因为当发完最后一个比特的时候,这个比特还需要时间在以太网上传播。那么在最极端的情况下,所需时间就是τ。
- 要想提高以太网的信道利用率,就必须减少τ和T 0的比值,假设定义参数a表示以太网单程端端时延τ与帧发送时间T 0之比:a= τ/T 0
- 当a->0时就代表只要一发生碰撞,就立马被检测出来,并停止发送,反之则表示争议期占比很大,信道资源浪费很多,所以理想化的信道利用率为S max=T 0/T 0+τ=1/1+a,所以在参数a越小于1才能得到尽可能高的信道利用率
?
?
|