计算机网络-数据链路层
2021 年 01 月 04 日 204 4756 字 暂无评论

01.基本概念

  • 数据链路层在物理层提供服务的基础上向网络层提供服务,其最基本的服务是将源自网络层来的数据可靠地传输到相邻节点的目标机网络层。其主要作用是加强物理层传输原始比特流的功能,将物理层提供的可能出错的物理连接改造成为逻辑上无差错的数据链路,使之对网络层表现为一条无差错的链路。
  • 功能一:为网络层提供服务。无确认无连接服务,有确认无连接服务,有确认面向连接服务。有连接一定有确认。
  • 功能二:链路管理,即连接的建立、维持、释放(用于面向连接的服务)。
  • 功能三:组帧。
  • 功能四:流量控制。限制发送方。
  • 功能五:差错控制(帧错/位错)。

02.封装成帧与透明传输

  • 封装成帧:就是加将数据加头加尾,相当于将数据打包
  • 透明传输:就是为了防止特殊的数据无法正常传输的的情况的发生,比如说在封装成帧的过程中出现数据中的某些标记符与开始/结束标记符恰巧重复等等情况
  • 帧同步接收方应当从接收到的二进制比特流中区分出帧的起始和终止。
  • 组帧的四种方法

    • 字符计数法
    • 字符(节)填充法
    • 零比特填充法
    • 违规编码法

2.1字符计数法

  • 就是在帧的首部做计数,看看数据是否错误。
  • 缺点:如果在某一个帧内,标记位后面的某个字节的数据丢失,那么会影响后面的帧。
  • 比如3 1 1 和 4 2 2 2,如果前面的帧丢失变成 3 1,那么后面的4就会被补到前面变成 3 1 4导致错误。

2.2字符填充法

  • 就是加头加尾分别标记开始结束,和零比特填充法(见下)对比,开始和结束的对应的字符不一样。
  • 但有可能出现数据内某段比特流数据正好与标记字段重复,从而导致误判断的情况。

解决方法:添加转义字符

2.3零比特填充法

2.4违规编码法

  • 因为曼彻斯特编码不使用高-高,低-低来表示,所以如果使用高-高,低-低来表示帧起始和终止就不会与数据冲突。

03.差错控制

3.1差错从何而来

3.2为什么要在数据链路层进行差错控制

  • 因为错误可以尽早发现,不会让一个错误的数据包发送了很长时间到达最终目的地之后才被发现,从而导致网络资源的浪费。

3.3检错编码(奇偶校验码,循环冗余码CRC)

3.3.1 奇偶校验码

  • 缺点:只能检测出1,3,5,7…等等奇位数错误,检测成功率位50%。

3.3.2 循环冗余码CRC

  • 就是用传输数据除以生成多项式得到冗余码

实际例子

注释:

1.阶数就是最高位是哪位,然后位数-1,如10011就是5-1=4,1011就是4-1=3

2.异或运算就是相同得0,不同得1,比如100和101做异或,结果就是001

3.除数和最后的余数添加到要发送的数据后面,称为帧检验序列FCS

  • 接收端检错过程

  • 在数据链路层仅仅使用循环冗余检验CRC差错检测技术,只能做到对帧的无差错接收,即“凡是接收端数据链路层接受的帧,我们都能以非常接近于1的概率认为这些帧在传输过程中没有产生差错”。接收端丢弃的帧虽然曾收到了,但是最终还是因为有差错被丢弃。“凡是接收端数据链路层接收的帧均无差错”。
  • 可靠传输”:数据链路层发送端发送什么,接收端就接收到什么。
  • 链路层使用CRC检验,能够实现无比特差错的传输,但这还不是可靠传输。

3.4纠错编码(海明码)

  • 确定校验码位数r

  • 确定校验码和数据的位置
  • 为什么是10为数据位?因为4位校验码+6位信息位=10位。
  • 校验码放到2的几次方的位置,其他的地方按顺序放已知的信息位。

  • 求出校验码的值
  • 先是通过二进制位确定有几位。本题中因为最大位10的二进制是1010,所以是4为,将其标注
  • 然后从p1开始看,看p1的二进制位的数值和所有信息位的对应位置的数值是否相同,然后找出来这些位
  • 这里有点难理解,这里以p1为例辅助理解,这里找出来的就是P1,D1,D2,D4,D5。

  • 然后计算异或值,比如说这里D1=1,D2=0,D4=1,D5=0,就是p1要同时和0,1,0,1进行异或之后得到0,为了标识我加粗原始计算数据
  • 举例:0和1异或得1,1和0异或得1,1和1异或得0,那么p1和0异或得0,p1就是0了
  • 其他同理,按顺序计算出P2,P3,P4,然后填入表格

  • 检测并纠错
  • 就是和上面一样,将所有校验位进行运算,得出的结果的值就是错误的位

04.流量控制与可靠传输机制

4.1流量控制与可靠传输

  • 流量控制是为了让传输过程中的发送速度和接受速度匹配,减少传输出错与资源浪费。
  • 可靠传输是发送端发送什么,接收端就要受到什么。

4.1.1 停止等待协议(stop-and-wait)

  • 停止等待协议的无差错情况
  • 注释:因为一次就一个,所以用0和1标记ack就行。

  • 停止等待协议的有差错情况

停止等待协议的特点

  1. 简单。
  2. 信道利用率低。大部分时间数据都在路上,发送方很长时间闲置,资源浪费。

  • 信道利用率

4.1.2 后退N帧协议(GBN)

  • 因为停止等待协议太浪费时间了,所以尝试采用GBN,发送连续多个数据帧,以增大信道利用率
  • 累计确认:就是收到一个确认帧,那么它和它之前的所有帧都默认已收到,反之,如果某个确认帧没收到,那么它和它之后的所有帧都默认丢失(即使收到了也丢掉),进行重传。

  • 一个实例
  • 注释:此图发送2帧时丢失,所以接收方几首收到后面的帧也是直接丢弃并且发送最晚收到的有效帧1的ACK,直至2帧的超时重传机制被触发进行重传并得到ACK之后,接收方才会接受2帧以及后面的帧。

  • 发送窗口不能无限大,与使用的编号的比特数有关。
  • 若采用n个比特对帧编号,那么发送窗口的尺寸Wt应满足:1<=Wt<=(2^n)-1。因为发送窗口尺寸多大,就会使得接收方无法区别新帧和旧帧。
  • 1比特编号0和1,同理2比特编号0-3,如果用1比特编号,却要4个窗口长度,那么窗口内数据编号都编不过来,直接乱套了。
  • GBN的优缺点也显而易见

    • 优点是提高了信道利用率。
    • 缺点是因为重传机制的原因导致已经收到数据却需要强行丢弃而造成浪费。

4.1.3 选择重传协议(SR)

  • 为了解决GBN的缺点,我们打算尝试只重传错误的帧,这样的话就不用浪费资源吧已经收到的帧再重传一次了。
  • 和GBN相比,两者都有窗口了,和GBN的区别其实就是做了一个数据缓存,已经收到的帧不用扔了,等待之前因意外丢失的帧收到的时候确认即可,但是只能缓存窗口尺寸内的包含的帧
  • SR运行过程如下图。
  • 注释:2帧丢失之后仍然在发送,但是2帧丢失之后只是缓存,并没有移动窗口,直至最后2帧收到后一次性确认2-5帧。

  • 同样的,因为编号的问题,发送窗口不能无限大。
  • 发送窗口最后和接受窗口大小相同,这样利用率比较高。

05.信道划分介质访问控制

  • 介质访问控制的内容:采取一定的措施,使得两对节点之间的通信不会发生相互干扰的情况。

5.1信道划分介质访问控制

  • 信道划分介质访问控制:将使用介质的每个设备与来自同一信道上的其他设备的通信隔离开,把时域和频域资源合理地分配给网络上的设备。

5.1.1 频分多路复用FDM

5.1.2 时分多路复用TDM

  • TDM的缺点就是利用率低,所以又衍生出了STDM。

5.1.3 统计时分复用STDM

  • STDM的原则是先到先走,满了就发,相对于TDM提高了利用率。

5.1.4 波分多路复用WDM

  • 波分多路复用就是光的频分多路复用,在一根光纤传输多种不同波长(频率)的光信号,由于波长(频率)不同,所以各路光信号互不干扰,最后再用波长分解复用器将各路波长分解出来。

5.1.5 码分多路复用CDM

  • 码分多址(CDMA)是码分复用的一种方式。
  • 1个比特分为多个码片/芯片(chip),每一个站点被指定一个唯一的m位的芯片序列。
  • 发送1时站点发送芯片序列,发送0时发送芯片序列反码(通常把0写成-1)。

5.2随机访问介质访问控制

  • 所有用户都可以随机发送信息,发送时可以占用全部带宽,理论上个人使用时比静态分配信道的速度更快。

5.2.1 ALOHA协议

  • 纯ALOHA协议:不监听信道,不按时间槽发送,随机重发。想发就发。
  • 缺点:太随性,导致效率低。

  • 时隙ALOHA协议:相对于纯ALOHA协议就是固定了发送的时间(只能在一个时间片的开始),提高了效率。

5.2.2 CSMA协议

  • 1-坚持CSMA:发送信息时监听信道,一空闲下来就立即传输,信道忙也一直监听,如果发送时冲突就等待随机时长之后再监听。

    • 优点:立即发送,利用率高。
    • 缺点:如果多台设备同时监听,那么会发生冲突。
  • 非坚持CSMA:发送信息时监听信道,如果空闲就立即传输,信道忙就随机等待一段时间后再监听。

    • 优点:冲突发生的几率减少。
    • 缺点:因为需要等待,所以利用率不高。
  • p-坚持CSMA:发送信息时监听信道,空闲时以概率p进行传输,概率1-p不传输。信道忙就随机等待一段时间后再监听。

    • 优点:冲突减少的同时效率也比较高。
    • 缺点:即使发生冲突也要坚持发送数据,资源被浪费。

5.2.3 CSMA/CD协议

  • 就是因为链路实际有长短,发送数据需要时间,这个时间内可能就被其他节点当成空闲状态导致发生碰撞。
  • 知道自己发生碰撞的最长时间是2τ(两倍的传播时延),就是一去一回。

  • 传播时延对载波监听的影响

5.2.4 CSMA/CA协议

  • 载波监听多点接入/碰撞避免CSMA/CA(carrier sense multiple access with collision avoidance)
  • 为什么要有CSMA/CA

    • 无线局域网:无法做到360°全面检测碰撞。
    • 隐蔽站:当A和C都检测不到信号,认为信道空闲时,同时向终端B发送数据帧,就会导致冲突。

5.2.5 CSMA/CD 与CSMA/CA的区别

  • 相同点:

    • CSMA/CD与CSMA/CA机制都从属于CSMA的思路,其核心是先听再说。
    • 换言之,两个在接入信道之前都需要进行监听。
    • 当发现信道空闲后,才能进行接入。
  • 不同点:

    • 传输介质不同:CSMA/CD用总线式以太网(有线),而CSMA/CA用于无线局域网(无线)。
    • 载波检测方式不同:因传输介质不同,CSMA/CD与CSMA/CA的检测方式也不同。CSMA/CD通过电缆中电压的变化来检测,当数据发送碰撞时,电缆中的电压就会随着发生变化;而CSMA/CA采用能量检测(ED)、载波检测(CS)和能量载波混合检测三种检测信道空闲的方式。
    • CSMA/CD检测冲突,CSMA/CA避免冲突,二者出现冲突后都会进行有上限的重传。

5.3轮询访问介质访问控制

  • 主要包括两大类,一个是轮询协议,另一个是令牌传递协议

5.3.1 轮询协议

  • 就是选出一个代表,让他控制所有的传输
  • 轮询开销在随着服务的节点越多,需要用于查询是否发送数据发送的数据帧也就越多,会造成一定开销。
  • 等待延迟就是因为这是轮流“邀请”,所以难免某个节点需要发送数据,但是主节点还在较远的需要里有需求的节点那边,导致需求得不到立即响应。
  • 单点故障很好理解,就是代表挂了。

5.3.2 令牌传递协议

  • 在节点之间没有收发数据的需求时,令牌在节点之间循环
  • 发送数据的流程

    • 当一个节点需要时就可以获得这个令牌。然后修改这个令牌的状态(空闲->占用)
    • 再将令牌与数据帧结合,让其在节点构成的环之间流动
    • 不是目的地的节点收到令牌也不接受,直接略过,目标节点收到信息并复制一份到本地(传输完成),因为是个闭环,所以发送节点最后得到令牌
    • 最后,发送令牌的节点对令牌的内容进行检查,如果发现数据出错还要重新发一遍
  • 问题基本和轮询协议相同。

06.局域网

6.1局域网的概念

  • 概括:范围大小,速度快,延迟低,节点平等。
  • 局域网(Local Area Network):简称LAN,是指在某一区域内由多台计算机互联成的计算机组,使用广播信道。
  • 特点

    • 覆盖的地理范围较小,只在一个相对独立的局部范围内联,如一座或集中的建筑群内。
    • 使用专门铺设的传输介质(双绞线、同轴电缆)进行联网,数据传输速率高(10Mb/s~10Gb/s)。
    • 通信延迟时间短,误码率低,可靠性较高。
    • 各站为平等关系,共享传输信道。
    • 多采用分布式控制和广播式通信,能进行广播和组播。
  • 决定局域网的主要要素为网络拓扑,传输介质介质访问控制方法

6.1.1局域网的网络拓扑结构

  • 常用的是总线型拓扑

6.1.2 局域网的传播介质

  • 有线局域网常用介质:双绞线,同轴电缆,光纤。
  • 无线局域网常用介质:电磁波。

6.1.3 局域网介质访问方法

  • CSMA/CD 常用于总线型局域网,也用于树型网络。
  • 令牌总线:常用于总线型局域网,也用于树型网络。
  • 令牌环:用于环形局域网,如令牌环网。

6.2局域网的分类

6.3.1 IEEE802描述的局域网参考模型

6.4以太网

6.4.1 以太网的概念

  • 以太网提供无连接、不可靠的服务
  • 无连接:发送方和接收方之间无“握手过程”。
  • 不可靠:不对发送方的数据帧编号,接收方不向发送方进行确认,差错帧直接丢弃,差错纠正由高层负责。
  • 以太网只实现无差错接收,不实现可靠传输

6.4.2 以太网的发展

6.4.3 适配器和MAC地址

6.4.4 以太网MAC帧

  1. 这里的mac层指的是数据链路层。
  2. 之前说过数据链路层将上一层ip数据包加头加尾头就是目标地址(6字节),源地址(6字节),类型(2字节)尾就是FCS(帧检验序列),(4字节)
  3. 前导码不是MAC帧的一部分,目的是使时钟同步。
  4. 为什么数据长度时46~1500?因为有最小传输字节64字节,mac占用6+6+2+4=18,所以数据最小为64-18=46,1500则是规定的默认最大字节,没有理由。

6.4.5 10BASE-T以太网

6.4.6 高速以太网

6.5无线局域网

6.5.1 两种无线局域网

07.广域网

7.1广域网的概述

  • 广域网(WAN,Wide Area Network),通常跨接很大的物理范围,所覆盖的范围从几十公里到几千公里,它能连接多个城市或国家,或横跨几个洲并能提供距离通信,形成国际性的远程网络。
  • 广域网的通信子网主要使用分组交换技术。

    • 广域网的通信子网可以利用公用分组交换网、卫星通信网和无线分组交换网,它将分布在不同地区的局域网或计算机系统互连起来,达到资源共享的目的。
    • 如因特网(Internet)是世界范围内最大的广域网。

7.2 PPP协议(Point-to-Point Protocol)

  • PPP协议是目前使用最广泛的数据链路层协议,拨号基本都是PPP协议
  • PPP协议仅支持全双工链路

7.2.1 PPP协议需要满足的要求

7.2.2 PPP协议不需要满足的要求

  • 纠错
  • 流量控制
  • 序号
  • 不支持多点线路

7.2.3 PPP协议组成成分以及功能

7.2.4 PPP协议的状态图

7.2.5 PPP协议的帧格式

7.3 HDLC协议(High-Level Data Link Control)

7.3.1 HDLC协议概述

7.3.2 HDLC的三种站

7.3.3 HDLC的帧格式

7.4 PPP协议和HDLC协议对比

  • 为什么HDLC协议更可靠,但是我们使用PPP协议?
  • 因为现在网络要求高,数据链路层本来就是不可靠的尽力传输,差错控制这些复杂的交给了TCP等。

08.链路层设备

8.1 集线器(Hub)

  • 可以扩展以太网,但是集线器会无脑将一个设备的所有消息转发到集线器所连的所有设备。
  • 故会将所连接的所有设备变成一个大的冲突域,同时只能有两台设备进行通信,且设备越多,冲突越多。
  • 由此诞生了网桥。

8.2 网桥(Bridge)

  • 使用网桥时,由于网桥会根据mac地址进行过滤,所以不会形成冲突域

8.2.1 两种网桥

  • 透明网桥

    • 通过自学习来构建转发表。
    • 每一个通过网桥的数据包都会被记录下网桥收到数据时数据对应的地址和网桥自己的接口,通过许许多多的数据包的构造的缓存,网桥就可以知道哪个数据包在哪个接口,以后如果要穿数据包就知道要往哪个接口发送数据包了。
  • 原路由网桥

    • 在发送时,直接将最佳路径放到帧首部。
    • 那么网桥如何获得最佳路径?通过广播方式想目标地址发送广播,此时可能会经过不同路由产生不同的路径,目标地址收到后再将每一条路径都发一个响应帧给网桥,网桥经过对比就知道哪个接口最快了。

8.3 交换机

  • 网桥接口越来越多,网桥就变成了交换机。

8.4 冲突域和广播域


版权属于:zfh

本文链接:http://zfhblog.com/index.php/archives/193/



评论已关闭