计网笔记#3:数据链路层
概述
数据链路层使用的信道主要有以下两种类型:
- 点对点信道
- 广播信道
使用点对点信道的数据链路层
- 链路link:一条无源的点到点的物理线路段,中间没有任何其他的交换结点。一条链路只是一条通路的一个组成部分。
- 数据链路:链路 + 控制数据传输通信协议的硬件和软件。最常用的方法是使用适配器(网卡)。
- 数据链路层中传输的数据单位是 帧 。
数据链路层的三个基本问题——封装成帧、透明传输、差错控制
封装成帧与透明传输
封装成帧就是在数据的前后添加首部(帧开始符)和尾部(帧结束符),添加完的这玩意就叫做一个帧。
首部和尾部的一个重要作用就是进行 帧定界 。
然而,如果在原数据中出现了与帧开始符或帧结束符相同的字符,在传输的时候就会识别错误,这就是透明传输问题。要解决这种问题,就可以在 数据中 的控制字符前面添加一个转义字符,而接收端在收到数据后只需删除这些转义字符就可以正确识别,如果转义字符也出现在数据里,就用转义字符对转义字符转义。这种方法被称为 字节填充法 。
差错检测
- 传输过程中可能产生 比特差错 ,在一段时间内传输错误的比特占所传输比特总数的概率被称为 误码率BER 。
- 循环冗余检验CRC:在数据段的末尾添加一段 冗余码 ,也称为帧检验序列FCS。接收端对收到的每一帧进行CRC检验,但只能判别出有差错或者无差错,无法确定差错出现的位置,所以有差错的帧一律丢弃。
- CRC只能做到 无差错接受 ,即接受的数据没有差错。如果要做到可靠传输,则须加上确认与重传的机制。
点对点协议PPP
- 用户到ISP的链路使用PPP协议
帧格式
- 标志字段 F = 0x7E
- 地址字段 A = 0xFF ,没有实际作用(都点对点了还要地址干啥)
- 控制字段 C = 0x03
- 协议字段,用于区分PPP帧的数据类型
- PPP帧的长度为整数字节
透明传输
- 当PPP用在同步传输链路时,协议规定采用硬件来完成比特填充
- 当PPP用在异步传输时,就使用 字符填充法 。将信息字段中的每一个0x7E转变成2字节序列(0x7D,0x5E);若信息字段中出现一个0x7D字节,则转变成2字节序列(0x7D,0x5D);若信息字段中出现ASCII码的控制字符(<0x20),则在前面加入一个0x7D字节,同时改变该字符的编码。
- PPP协议用在SONET/SDH链路时,是同步传输,此时采用 零比特填充 。发送端,只要有连续5个1(0b1111110 == 0x7E),就立即填入一个0。接收端对帧中的比特扫描,当发现5个连续的1,就把之后的一个0删除。
不提供使用序号的确认
- 在数据链路层出现差错的概率不大时,使用比较简单的PPP协议比较合理。
- 在因特网环境下,PPP的信息字段放入的数据是IP数据报,数据链路层的可靠传输不能保证网络层的传输也可靠。
- 帧检测序列FCS可以保证无差错接受。
使用广播信道的数据链路层
局域网的数据链路层
- 局域网 :网络为一个单位所拥有,且地理范围和站点数目都有限。具有广播功能。
- 局域网的拓扑:星形网(集线器)、总线网、环形网(令牌)
- 数据链路层的两个子层:逻辑链路控制LLC子层(局域网对LLC子层透明,即看不见下面的局域网;一般不考虑)、媒体接入控制MAC子层(与传输媒体有关)。
适配器
- 通信适配器又称网络接口卡或网卡
- 进行串行/并行转换;缓存数据;在计算机的OS安装设备驱动程序;实现以太网协议
- 计算机通过适配器进行与局域网的通信
CSMA/CD协议
以太网的广播方式
将许多计算机连接到一根总线上。假设当计算机A发送了数据信号,则将其广播,总线上的所有计算机都能检测到,但只有目的计算机B的地址才与数据帧首部的目的地址一致,所以只有B会接收这段数据,而其他计算机就将其丢弃。
- 不必先建立连接就可以直接发送数据,较为灵活简便;对发送的数据不编号,也不要求对方发回确认(因为局域网信道质量好,基本不产生差错)
- 以太网提供的服务是不可靠的交付,当目的站收到有差错的数据帧,就 直接丢弃 。当高层发现丢失了一些数据帧,便将其当作新的数据帧重传。
载波监听多点接入/碰撞检测 CSMA/CD
- 多点接入:许多计算机以多点的方式连在总线上
- 载波监听:每个站在发送数据前要先检测总线上是否有其他计算机在发送数据,来避免碰撞
- 碰撞检测:计算机边发送数据边检测信道上的信号电压大小,一旦发现总线上出现了碰撞,就立即停止发送,避免继续浪费网络资源,然后等待一段 随机时间 后再次发送。👉CSMA/CD协议的以太网只能进行半双工通信,发送的不确定性使得平均通信量远小于以太网的最高数据率。
- 传播时延对载波监听的影响:比如A向B发送信息,由于信息传播需要时间,所以B在没收到信息前认为总线空闲,有可能同时发送信息,便会产生碰撞。
- 将单程端到端的传播时延记为τ,则记 争用期 = 2τ (或碰撞窗口),即:最先发送数据帧的站,在发送数据帧后至多经过这段时间,就可以知道发送的数据是否遭受了碰撞。👉以太网取 51.2μS 作为争用期的长度,对于10Mb/s以太网,争用期内可以发送64字节,只要前64字节没有发生冲突,后续的数据就不会冲突。👉凡长度小于64字节的帧都是由于冲突而异常中止的无效帧。
- 当发送数据的站一旦发生了碰撞时:立即停止发送数据;再继续发送若干比特的 人为干扰信号 ,以便让所有用户都知道发生了碰撞。
使用广播信道的以太网
- 采用星形拓扑,在星形的中心为集线器(hub)
以太网的信道利用率
- 记帧长为L(bit),数据发送速率为C(b/s),则帧的发送时间为 T0=L/C
- 发送一帧的平均时间则为 2τ * n + T0 :发生碰撞的过程可能需要多个争用期,直到转为空闲,然后才能发送信息
- 记 a=τ/T0 ,则要提高信道利用率,就必须减小a。当a→0,则说明一发生碰撞就可以立即检测出来,停止发送;若a越大,则说明争用期所占比例越大,在碰撞中浪费许多信道资源。👉以太网连线的长度不能太长,否则 τ 会太大;以太网的帧长也不能太短,否则 T0 会太小。
- 在 理想情况 下,各站发送的数据不会碰撞 ,则发送一帧占用线路的时间为 T0+τ ,但帧本身的发送时间为 T0 ,所以极限信道利用率为 Smax = T0 / ( T0 + τ ) = 1 / ( 1+a )
- 帧间最小间隔 为9.6μS,用于使刚刚收到数据帧的站的接收缓存来得及清理,做好接收下一帧的准备
以太网的MAC层
- 硬件地址又称为物理地址或MAC地址,即适配器地址或适配器标识符EUI-48(高位24位由IEEE的注册管理机构RA分配,低位24位 扩展标识符 由厂家自行指派)
- 适配器每从网络上收到一个MAC帧就先用硬件检查MAC帧中的MAC地址,判断是否发往本站
MAC帧的基本结构
- 类型字段用来标志 上一层 用的是什么协议,以便把MAC帧的数据交给上一层的这个协议
- 数据字段的大小为 46~1500 字节,这个46字节为最小数据长度64 - 目的地址(6) - 源地址(6) - 类型(2) - FCS(4) 👉当数据字段小于46字节时,应加入填充字段,以保证不小于64字节
- 在MAC帧前面插入的8个字节:第一个字段的7个字节为前同步码,用来迅速实现MAC帧的 比特同步 ,第二个字段的1个字节为帧开始定界符,表示后面的信息是MAC帧
扩展的局域网
在物理层扩展局域网
- 主机使用光纤和一对光纤调制解调器连接到集线器
- 用多个集线器组成更大的局域网,该局域网都在一个碰撞域中,但总的吞吐量并未提高
在数据链路层扩展局域网
- 使用 网桥 ,网桥工作在数据链路层,根据MAC帧的目的地址对收到的帧进行转发
- 网桥的过滤帧功能:当网桥收到一个帧,并不是直接向所有接口转发此帧,而是先检查目的MAC地址,再转发到对应接口(通过内部的转发表确定)
- 优点:可以互连不同物理层、不同MAC子层和不同速率的局域网(如果用hub,速率快的往速率慢的发送会堵塞);使各网段称为隔离开的碰撞率
- 缺点:增加了时延,传播过多广播信息会产生 广播风暴 (信息会重复转发)
- 集线器在转发帧时不会对传输媒体进行检测;网桥在转发帧之前必须执行CSMA/CD算法,检测碰撞
- 目前使用得比较多得网桥是 透明网桥 :局域网上的各站点并不知道所发送的帧将经过哪几个网桥
网桥的自学习算法
当网桥收到一个数据帧,就记录下它的源地址D和进入网桥的接口,然后把这两个信息加入转发表,以后收到目的地址D的信息,就知道要往这个接口发送了。
同时,也要记录下帧进入该网桥的 时间 ,毕竟以太网的拓扑可能经常发生变化,记录了时间就可以只保留最新状态信息。
自学习完成后,对帧进行转发,首先查看转发表中是否有该目的地址:
- 如果有,就先判断这个目的地址的对应接口是否和帧进入网桥的接口相同:
- 是:那就说明不需要经过网桥转发,直接丢弃
- 否:按对应接口进行转发
- 如果没有,就通过除进入网桥的接口以外的所有其他接口进行转发。
透明网桥的生成树算法
因为网络是四通八达的,转发的帧很大可能会在网络中不停地兜圈子,所以需要使用生成树找到任意两个站中的唯一路径。
同时,由于网络拓扑是经常发生变化的,生成树上的根网桥每隔一段时间还需要对生成树的拓扑进行更新。
源路由网桥
源路由网桥在发送帧时将详细的路由信息放在帧的首部,源站以广播方式向目的站发送一个 发现帧 ,每个发现帧都记录所经过的路由。
发现帧到达目的站时就沿各自的路由返回源站,源站在得知这些路由后,从所有可能的路由中选择一个最佳路由,以后从这个源站向这个目的站发送的帧的首部,都必须携带这一个最佳路由信息。
源路由网桥可能提高网络资源的利用率
多接口网桥——以太网交换机
- 以太网交换机的每个接口都直接和主机相连,而且一般工作在 全双工方式
- 对于普通的10Mb/s的共享式以太网,若有N个用户,每个用户占有的平均带宽只有10/N。但如果使用以太网交换机,虽然每个接口到主机的带宽还是10Mb/s,但每个用户在通信时是独占带宽,所以总容量为10NMb/s。
虚拟局域网VLAN
由一些局域网网段构成的与物理位置无关的逻辑组。每个VLAN的帧都有一个明确的标识符,指明发送这个帧的工作站是属于哪一个VLAN。
当B1向VLAN2的成员发送数据,B2和B3会收到消息,但A1,A2,C1都不会收到。
虚拟局域网限制了接收广播信息的工作站数,使网络不会因为广播风暴而引起性能恶化。
虚拟局域网协议允许在以太网的帧格式中插入一个4字节的VLAN标记,来指明发送该帧的工作站属于哪个虚拟局域网(位于源地址与类型之间)。
高速以太网
- 速率达到或超过100Mb/s的以太网被称为高速以太网。在双绞线上传送100Mb/s基带信号的星形拓扑以太网,仍使用IEEE802.3的CSMA/CD协议。100BASE-T以太网又称为快速以太网。
- 吉比特以太网允许在1Gb/s下全双工和半双工两种方式工作,在半双工方式下使用CSMA/CD协议。
- 10吉比特以太网与10Mb/s、100Mb/s和1Gb/s以太网的帧格式完全相同。10吉比特以太网 只工作在全双工方式 ,因此没有争用问题,也不使用CSMA/CD协议。