数据链路层概述

数据链路层在网络体系结构中所处的地位:

image.png

  • 链路:就是从一个结点到相邻结点的一段物理线路,而中间没有任何其他的交换结点。

image.png

  • 数据链路:是指把实现通信协议的硬件和软件加到链路上,就构成了数据链路。
  • 数据链路层以为单位传输和处理数据。

    数据链路层的三个重要问题

    封装成帧

  • 概念:指数据链路层给上层交付的协议数据单元添加帧头和帧尾使之成为帧。

    1. ![image.png](https://cdn.nlark.com/yuque/0/2021/png/12745322/1617440239068-20fcb548-24bf-4a70-8396-49b18ba88e83.png#height=31&id=LSZxS&margin=%5Bobject%20Object%5D&name=image.png&originHeight=62&originWidth=447&originalType=binary&size=34873&status=done&style=none&width=223.5)
  • [ ] 帧头和帧尾中包含有重要的控制信息。

  • 帧头和帧尾的作用之一就是帧定界。

过程:发送方将待发送的数据发给网络层

  • 透明传输是指数据链路层对上层交付的传输数据没有任何限制,就好像数据链路层不存在一样。
  • 面向字节的物理链路使用字节填充(或称字符填充)的方法实现透明传输。
  • 面向比特的物理链路使用比特填充的方法实现透明传输。

应用层:通过应用层封装成为应用层协议数据单元,然后交付给运输层。
运输层:为其添加运输层协议首部,使之成为运输层协议数据单元,然后交付给网络层。
网络层:为其添加网络层协议首部,使之成为网络层协议数据单元,然后交付给数据链路层。
数据链路层:给网络层协议数据单元添加一个数据链路层协议首部,简称为帧头,还要给其添加一个帧尾。(添加帧头帧尾的操作称为封装成帧)。
物理层:将构成帧的各比特转换成电信号发送到传输媒体。
目的:为了在链路上以帧为单位来传送数据,也就是为了实现数据链路层本身的功能。

  • 为了提高帧的传输效率,应当使帧的数据部分的长度尽可能大些。
  • [ ] 考虑到差错控制等多种因素,每一种数据链路层都规定了帧的数据部分的长度上限,即最大传输单元MTU。

    差错检测

  • 实际的通信链路都不理想的,比特在传输过程中可能会产生差错:1可能会变成0,而0也可能变成1。这称为比特差错。

  • 在一段时间内,传输错误的比特占所传输比特总书的比率称为误码率BER。
  • 使用差错检测码来检测数据在传输过程中是否产生了比特差错,是数据链路层所要解决的重要问题之一。

image.png
发送方将封装好的帧通过物理层发送到传输媒体。帧在传输过程中遭遇干扰后可能出现误码。
检错码:发送方在发送帧之前,基于待发送的数据和检错算法计算出检错码,并将其封装在帧尾。

  1. - 检错码只能检测出帧在传输过程中出现差错,但并不能定位错误,因此无法纠正错误。
  2. - 要想纠正传输中的差错,可以使用冗余信息更多的纠错码进行前向纠错。但纠错码的开销比较大,在计算机网络中较少使用。
  3. - 循环冗余校验CRC有很好的检错能力(漏检率非常低),虽然计算比较复杂,但非常易于用硬件实现,因此被广泛应用于数据链路层。
  4. - 在计算机网络中通常采用检错重传方式来纠正传输中的差错,或者仅仅是丢弃检测到差错的帧,这取决于数据链路层向其上层提供的是可靠传输服务还是不可靠传输服务。
  • 奇偶校验
    • 在待发送的数据后面添加1位奇偶校验位,使整个数据(包括所添加的校验位在内)中“1”的个数为奇数(奇校验)或偶数(偶校验)。
    • 如果有奇数个位发生误码,则奇偶性发生变化,可以检查出误码;
    • 如果有偶数个位发生误码,则奇偶性不会发生变化,不能检查出误码(漏检);

image.png

  • 循环冗余校验CRC
    • 收发双方约定好一个生成多项式G(x);
    • 发送方基于待发送的数据和生成多项式计算出差错检测码(冗余码),将其添加到待传输数据的后面一起传输;
    • 接收方通过生成多项式来计算收到的数据是否产生了误码;

image.png

可靠传输

接收方主机收到有误码的帧后,是不会接受该帧的,将其丢弃。如果数据链路层向其上层提供的是不可靠服 务,那么就丢弃就丢弃了,如果是可靠服务,那么还需要其他措施,来确保接收方主机,还可以重新收到被 丢弃的这个帧的正确副本。

  • 一般情况下,有线链路的误码率比较低,为减小开销,并不要求数据链路层向上提供可靠传输服务。即使出现了误码,可靠传输的问题由其上层处理。
  • 无线链路易受干扰,误码率比较高,因此要求数据链路层必须向上层提供可靠的传输服务。
  • 比特差错只是传输差错中的一种。
  • 从整个计算机网络体系结构来看,传输差错还包括分组丢失、分租失序以及分组重复。
  • 分组丢失、分组失序以及分组重复这些传输差错,一般不会出现在数据链路层,而会出现在其上层。
  • 可靠传输服务并不仅局限于数据链路层,其他各层均可选择实现可靠传输。

    1. ![image.png](https://cdn.nlark.com/yuque/0/2021/png/12745322/1617608336000-089a7e6c-acc6-4c42-9c69-7f98cca6b3fc.png#height=211&id=VLqGh&margin=%5Bobject%20Object%5D&name=image.png&originHeight=422&originWidth=1843&originalType=binary&size=412072&status=done&style=none&width=921.5)

    使用广播信道的数据链路层

  • 共享式以太网的媒体接入控制协议CSMA/CD

  • 802.11局域网的媒体接入控制协议CSMA/CA

    三种可靠传输的实现机制

    这三种可靠传输实现机制的基本原理并不仅限于数据链路层,可以应用到计算机网络体系结构的各层协议中。

    停止-等待协议SW

    image.png
    image.png
    注意事项:

  • 接收端检测到数据分组有误码时,将其丢弃并等待发送方的超时重传。但对于误码率较高的点对点链路,为使发送方尽早重传,也可给发送方发送NAK分组。

  • 为了让接收方能够判断所收到的数据分组是否是重复的,需要给数据分组编号。由于停止-等待协议的停等特性,只需1个比特编号就够了,即编号0和1。
  • 为了让发送方能够判断所收到的ACK分组是否是重复的,需要给ACK分组编号,所用比特数量与数据分组编号所用比特数量一样。数据链路层一般不会出现ACK分组迟到的情况,因此在数据链路层实现停止-等待协议可以不用给ACK分组编号。
  • 超时计时器设置的重传时间应仔细选择。一般可将重传时间选为略大于“从发送方到接收方的平均往返时间”。
    • 在数据链路层点对点的往返时间比较确定,重传时间比较好设定。
    • 然而在运输层,由于端到端往返时间非常不确定,设置合适的重传时间有时并不容易。

image.png

  • 当往返时延RTT远大于数据帧发送时延TD时(例如使用卫星链路),信道利用率非常低。
  • 若出现重传,则对于传送有用的数据信息来说,信道利用率还要降低。
  • 为了克服停止-等待协议信道利用率很低的缺点,就产生了另外两种协议,即回退N帧协议GBN和选择重传协议SR。

    回退N帧协议GBN

    image.png累计确认:接收方不一定要对收到的数据分组逐个发送确认,而是可以在收到几个数据分组后(由具体实现决定),对按序到达的最后一个数据分组发送确认。ACKn表示序号为n及以前所有数据分组都已正确接收。
    优点:即使确认分组丢失,发送方也可能不必重传。
    缺点::不能向发送方及时反映出接收方已经正确接收的数据分组信息。
    有差错情况:
    image.png
    image.png
    总结:
    image.png
    回退N帧协议在流水线传输的基础上利用发送窗口来限制发送方连续发送数据分组的数量,是一种连续ARQ协议。
    在协议的工作过程中发送窗口和接收窗口不断向前滑动,因此这类协议又称为滑动窗口协议。
    由于回退N帧协议的特性,当通信线路质量不好时,其信道利用率并不比停止-等待协议高。

    选择重传协议SR

    image.png
    过程:
  1. 发送窗口为4,发送方将发送窗口中的0、1、2、3号数据分组发送给接收方。
  2. 在发送的过程中2号数据分组丢失。
  3. 只要序号落入接收窗口内且无误码的数据分组,接收方都会接收,则接收方接收0、1号数据分组,并且发送0、1号确认分组,接收窗口向前滑动两个位置。
  4. 接收方接收3号数据分组,并发送3号确认分组,但是接收窗口不能向前滑动,因为3号数据分组不是按序到达的数据分组。
  5. 发送方将4、5号数据分组发送出去,0、1收到确认分组后从发送缓存中删除。
  6. 发送方收到3号的确认分组后,记录该分组已经收到确认,这样就不会超时重发。
  7. 接收方接收到4、5号数据分组后,并发送4、5号确认分组,但是接收窗口不能向前滑动,因为4、5号数据分组不是按序到达的数据分组。
  8. 发送方针对2号数据分组的重传计时器超时了,发送方重传2号分组。
  9. 发送方收到4、5号的确认分组后,记录该分组已经收到确认,这样就不会超时重发。
  10. 接收方接收到2号数据分组,则接收窗口可以向前滑动4个位置。
  11. 发送方接收到2号确认分组,则发送窗口可以向前滑动4个位置。

image.png
总结:
image.png

点对点协议PPP

点对点协议PPP是目前使用最广泛的点对点数据链路层协议
image.png

  • 对各种协议数据报的封装方法(封装成帧)
  • 链路控制协议LCP
    • 用于建立、配置以及测试数据链路的连接
  • 一套网络控制协议NCPs

    • 其中的每一个协议支持不同的网络层协议

      帧格式

      image.png

      透明传输

      image.png
      字节填充法:
      image.png
      比特填充法:
      image.png

      差错检测

      image.png

      工作状态

      image.png

      媒体接入控制

      共享信道要着重考虑的一个问题就是如何协调多个发送和接收站点对一个共享传输媒体的占用,即媒体接入控制MAC。
      image.png

      信道复用

  • 复用是通信技术中的一个重要概念。复用就是通过一条物理线路同时传输多路用户的信号。

  • 当网络中传输媒体的传输容量大于多条单一信道传输的总通信量时,可利用复用技术在一条物理线路上建立多条通信信道来充分利用传输媒体的带宽。

image.png

频分复用FDM

image.png
将传输线路的频带资源划分成多个子频带,形成多个子信道,各子信道之间需要留出隔离频带,以免造成子信道间的干扰。当多路信号输入一个多路复用器时,这个复用器将每一路信号调制到不同频率的载波上。接收端由相应的分用器通过滤波将各路信号分开,将合成的复用信号恢复成原始的多路信号。

时分复用TDM

image.png
时分复用技术将传输线路的带宽资源,按时隙分配给不同的用户,每个用户只在所分配的时隙里使用线路传输数据。时分复用技术将时间划分成一段段等长的时分复用帧。每一个时分复用的用户在每一个时分复用帧中占用固定序号的时隙。其周期就是时分复用帧的长度。

波分复用WDM

image.png

码分复用CDM
  1. - 码分复用CDM是另一种共享信道的方法。实际上,由于该技术主要用于多址接入,人们更常用的名词是码分多址CDMA
  2. - 同理,频分复用FDM和时分复用TDM同样可用于多址接入,相应的名词是频分多址FDMA和时分多址TDMA
  3. - 复用将单一媒体的频带资源划分成很多子信道,这些子信道之间相互独立,互不干扰。从媒体的整体频带资源上看,每个子信道只占用该媒体频带资源的一部分。
  4. - 多址(更确切地应该称为多点接入)处理的是动态分配信道给用户。这在用户仅仅暂时性地占用信道的应用中是必须的,而所有的移动通信系统基本上都属于这种情况。相反,在信道永久性地分配给用户的应用中,多址是不需要的。
  5. - 某种程度上,FDMATDMACDMA可以分别看成是FDMTDMCDM的应用。
  6. - 由于各用户使用经过特殊挑选的不同码型,因此各用户之间不会造成干扰。
  7. - CDMA中,每一个比特时间再划分为m个短的间隔,称为码片。通常m的值是64128.为了简单起见,在后续的举例中,我们假设m8
  8. - 使用CDMA的每一个站被指派一个唯一的m bit码片序列。
  9. - 一个站如果要发送比特1,则发送它自己的m bit码片序列;
  10. - 一个站如果要发送比特0,则发送它自己的m bit码片序列的二进制反码;
  11. - 码片序列的挑选原则如下:
  12. - 分配给每个站的码片序列必须各不相同,实际常采用伪随机码序列。
  13. - 分配给每个站的码片序列必须相互正交(规格化内积为0)。

令向量S表示站S的码片序列,令向量T表示其他任何站的码片序列。
两个不同站S和T的码片序列正交,就是向量S和T的规格化内积为0。

随机接入

  1. ![image.png](https://cdn.nlark.com/yuque/0/2021/png/12745322/1621397189513-a7cae1c9-9f9c-444b-bd55-e2ad37fa48e8.png#height=361&id=ecklM&margin=%5Bobject%20Object%5D&name=image.png&originHeight=721&originWidth=1920&originalType=binary&size=260260&status=done&style=none&width=960)<br />**CSMA/CD:**<br />![image.png](https://cdn.nlark.com/yuque/0/2021/png/12745322/1621397289217-bd01cd54-0504-4b83-acc2-8ac708e109f1.png#clientId=ufc19b717-8d64-4&from=paste&height=406&id=ub72ddf2b&margin=%5Bobject%20Object%5D&name=image.png&originHeight=811&originWidth=1920&originalType=binary&size=883660&status=done&style=none&taskId=u0173a597-a146-4993-9e2b-275c89a9378&width=960)<br />**多址接入:**<br />即多个主机连接到一根总线上,各主机随机发送帧。<br />**过程:**<br />![image.png](https://cdn.nlark.com/yuque/0/2021/png/12745322/1621397552493-4388ba68-4859-4c1d-8bb7-c14a1528f083.png#clientId=ufc19b717-8d64-4&from=paste&height=383&id=u14280d99&margin=%5Bobject%20Object%5D&name=image.png&originHeight=766&originWidth=1920&originalType=binary&size=667559&status=done&style=none&taskId=u907c9cec-e5c1-41bc-8363-f491b8a7f5c&width=960)

CSMA/CD协议——争用期(碰撞窗口):
image.png
CSMA/CD协议——最小帧长:
image.png
CSMA/CD——最大帧长:
image.png
CSMA/CD——截断二进制指数退避算法:
image.png
CSMA/CD——信道利用率:
image.png
CSMA/CA:
image.png
image.png
CSMA/CA——帧间间隔IFS:
image.png
CSMA/CA——工作原理:
image.png

  • 源站为什么在检测到信道空闲后还要再等待一段时间DIFS?
    • 可能有其他的站有高优先级的帧要发送。若有,就要让高优先级帧西安发送。
  • 目的站为什么正确接收数据帧后还要等待一段时间SIFS才能发送ACK帧?
    • SIFS是最短的帧间间隔,用来分隔开属于一次对话的各帧。在这段时间内,一个站点应当能够从发送方式切换到接受方式。
  • 信道由忙转为空闲且经过DIFS时间后,还要退避一段随机时间才能使用信道?
    • 防止多个站点同时发送数据而产生碰撞。
  • 当站点检测到信道是空闲的,并且所发送的数据帧不是成功发送完上一个数据帧之后立即连续发送的数据帧,则不使用退避算法。
  • 以下情况必须使用退避算法:
  • 在发送数据帧之前检测到信道处于忙状态时;
  • 在每一次重传一个数据帧时;
  • 在每一次成功发送后要连续发送下一个帧时(这是为了避免一个站点长时间占用信道)。

CSMA/CA协议的退避算法:
image.png
image.png
CSMA/CA协议的信道预约和虚拟载波监听:image.pngimage.png
image.png
image.png

MAC地址、IP地址以及ARP协议

image.png

MAC地址

  • 当多个主机连接在同一个广播信道上,要想实现两个主机之间的通信,则每个主机都必须有一个唯一的标识,即一个数据链路层地址;
  • 在每个主机发送的帧中必须携带标识发送主机和接收主机的地址。由于这类地址是用于媒体接入控制MAC,因此这类地址被称为MAC地址;
  • MAC地址一般被固化在网卡(网络适配器)的电可擦编程只读存储器EEPROM中,因此MAC地址也被称为硬件地址;
  • MAC地址有时也被称为物理地址。请注意:这并不意味着MAC地址属于网络体系结构中的物理层!
  • 一般情况下,用户主机会包含两个网络适配器:有线局域网适配器(有线网卡)和无线局域网适配器(无线网卡)。每个网络适配器都有一个全球唯一的MAC地址。而交换机和路由器往往拥有更多的网络接口,所有会拥有更多的MAC地址。综上所述,严格来说,MAC地址是对网络上各接口的唯一标识,而不是对网络上各设备的唯一标识。

image.png
单播MAC地址举例:
image.png
image.png
广播MAC地址举例:
image.png
image.png
多播MAC地址举例:
image.png
image.png
image.png

IP地址

  • IP地址是因特网上的主机和路由器所使用的地址,用于标识两部分信息:
  • 网络编号:标识因特网上数以百万计的网络
  • 主机编号:标识同一网络上不同主机(或路由器各接口)
  • 如果只是一个单独的网络,不接入因特网,可以只使用MAC地址(着不少一般用户的应用方式)。
  • 如果主机所在的网络要接入因特网,则IP地址和MAC地址都需要使用。

image.png
image.png

  • 数据包转发过程中源IP地址和目的IP地址保持不变;
  • 数据包转发过程中源MAC地址和目的MAC地址逐个链路(或逐个网络)改变。

    ARP协议:

    image.png
    image.png
    image.png
    image.png
    image.png
    动态:自动获取,生命周期默认为两分钟
    静态:手工设置,不同操作系统下的生命周期不同,例如系统重启后不存在或系统重启后依然有效。

    集线器与交换机

    集线器:
    image.png
    image.png
    交换机:
    image.png
    image.png
    交换机和集线器的区别:
    image.png
    image.png

    以太网交换机自学习和转发帧的流程

  • [ ] 以太网交换机工作在数据链路层(也包括物理层)

  • 以太网交换机收到帧后,在帧交换表中查找帧的目的MAC地址所对应的接口号,然后通过该接口转发帧。
  • 以太网交换机是一种即插即用设备,刚上电启动时其内部的帧交换表是空的。随着网络中各主机间的通信,以太网交换机通过自学习算法自动逐渐建立起帧交换表。

image.png
image.png
image.png
image.png
帧交换表中的每条记录都有自己的有效时间,到期自动删除。这是因为MAC地址与交换机接口的对应关系并不是永久性的!

以太网交换机的生成树协议STP

image.png
image.png

虚拟局域网VLAN

概述

image.png

  • 网络中会频繁出现广播信息
    • TCP/IP协议栈中很多协议都会使用广播:
      • 地址解析协议ARP(已知IP地址,找出其相应的MAC地址)
      • 路由信息协议RIP(一种小型的内部路由协议)
      • 动态主机配置协议DHCP(用于自动配置IP地址)
    • NetBEUI:Windows下使用的广播型协议
    • IPX/SPX:Novell网络的协议栈
    • Apple Talk:Apple公司的网络协议栈

虚拟局域网VLAN是一种将局域网内的设备划分成与物理位置无关的逻辑组的技术,这些逻辑组具有某些共同的需求。
image.png

实现机制

IEEE 802.1Q帧:
image.png

交换机的端口类型:

image.png
Access端口
image.png
Trunk端口
image.png
Hybrid端口
image.png