三、数据链路层

内容摘要:

  • 数据链路层协议有很多,但有三个基本问题是共同的:封装成帧透明传输差错检测
  • 数据链路层主要分两种:
    • 点对点信道:使用PPP协议
    • 广播信道:使用CSMA/CD协议
  • 使用广播信道的数据链路层——局域网
  • 使用广播信道的以太网——以太网在局域网里占有绝对优势,几乎成了局域网的同义词
  • 适配器、转发器、集线器、网桥、以太网交换机
  • 点对点和广播信道的结合——使用以太网进行宽带接入

需要先知道的一些名词和概念:

  • 链路:两点之间的物理线路(可以是有线也可以是无线)
  • 数据链路:链路+协议
  • 网络适配器:通过其中的软件和硬件来实现数据链路上的协议。一般的适配器都包括了物理层和数据链路层的功能

路由器在转发分组时使用的协议栈只有下面三层。(不一定,当路由器之间交换路由信息时,根据所使用的路由协议的不同,也可能需要使用运输层协议,见4.5节)

数据链路层的三个基本问题

  1. 封装成帧

    发送端对IP数据报添加首部尾部封装成帧

    首部+尾部的作用就是帧定界,指明从哪到哪是一个完整的帧。接收端根据帧定界符丢弃不完整帧

    帧的构成:首部+尾部+IP数据报(帧的数据部分)

    各种数据链路层协议都对帧的首部和帧的尾部格式有明确的规定,还都规定了各自的最大传送单元 MTU(帧数据部分的最大长度)

  2. 透明传输

    透明表示一个实际存在的事物看起来却好像不存在一样(例如玻璃)

    ASCLL码7位编码,一共128个不同的编码,可打印的95个,不可打印的33个

    SOH(00000001)和EOT(00000100)是帧的首尾定界符,都占有8bit,而ASCLL码7bit。

    当帧是用文本文件(ASCLL码)组成的时候,不管从键盘上输入什么字符,都会通过这个数据链路层,仿佛是透明的一样。

    但是图像文件等不保证不会出现SOH和EOT所以可能会出现阻碍(数据传输错误),解决办法是加转义字符ESC(00011011),这种方法称为“字节填充”或“字符填充

    img

  3. 差错检测

    传输差错:①帧丢失②帧重复③帧失序

    比特差错:现实通信链路中,比特在传输时会出现,0变1,1变0。

    可靠传输:发送端发送什么,在接收端就收到什么,就是没有传输差错比特差错的情况

    解决比特差错:CRC

    目前数据链路层广泛使用了--循环冗余检验CRC的检错技术
    数据M=101001(6位,即k=6),在M后面加n位“冗余码”,然后构成一个帧发出去,一共(k+n)位。

    • 发送端n位冗余码这么得出:
      1.用二进制“模2运算”,进行2^n乘M的运算(这个乘法运算的结果这相当于在M后面加n个0)得到(k+n)位的数
      2.用这个数除以(模2运算)收发双方实现约定的长度为(n+1)位的除数P假定P=1101,得出余数R=001。
      3.这个余数R就作为“冗余码”拼接在数据M的后面发送出去。
      这种为了进行检错而添加的冗余码常称为“帧检测序列FCS”。
      因此加上FCS后发送的帧是101001001(2^n * M + FCS),共(k+n)位
      循环冗余校验CRC和帧检测序列FCS不是一个概念。CRC是一种检错方法,FCS是添加在数据后面的冗余码。
    • 在接收端对帧进行CRC检验:
      1.把收到的每一帧都除以同样的除数P(模2运算),然后检查得到的余数R

    如果传输过程中没差错R=0,如果出错了R仍然=0的概率是非常小的(通过概率计算得出)。
    R=0则判定,帧没错,接受;R≠0则判定,帧出错,丢弃。
    在数据链路层发送端FCS的生成和接收端的CRC检验都是通过硬件完成,速度非常快。

    CRC能做到非常以接近1的概率去保证接收到的数据无比特差错,可以近似的当作“凡是接收端数据链路层接受的帧均无差错”(因为有差错的全被丢了,这可不没差错了么。那丢了的一段数据怎么办?这个烂摊子全交给传输层了)

    img

过去OSI的观点是:必须让数据链路层向上提供可靠传输。因此在CRC基础上加上了帧编号、确认、重传机制。但是现在通信质量已经大大提高了,因此互联网就采用了区别对待:

对于通信质量好的“有线传输链路”,不要求数据链路层向上提供“可靠传输”的服务,把可靠传输交给运输层
对于通信质量较差的“无线传输链路”,数据链路层向上提供“可靠传输”

实践证明:这么做可以提高通信效率

点对点协议PPP

PPP协议的特点

PPP协议应满足的需求:

  1. 差错检测:PPP协议必须检测出差错帧并丢弃

  2. 封装成帧:PPP协议必须规定特殊字符作为帧定界符

  3. 透明性:PPP协议必须保证透明性

  4. 简单:这样可以使协议实现的时候不容易出差错,进而不同的设备厂家生产的协议设备的互操作性提高了

  5. 多种网络层协议:PPP必须能够在同一条物理链路上同时支持多种网络层协议

  6. 多种类型链路:必须能在多种链路上运行。例如:串行的(一次发送一个比特)或并行的(一次并行发送多个比特),同步的或异步的,低速的或高速的,电的或光的点对点链路

    PPPoE这是PPP协议能适应多种类型链路的一个例子。PPPoE是为宽带上网的主机使用的链路层协议。见3.5.4节

  7. 检测连接状态:当出现故障的链路隔了一段时间后又重新恢复正常工作时,就特别需要这种检测功能

  8. 最大传送单元:PPP协议必须对每一种类型的点对点链路设置MTU的标准默认值(1500字节)。这样做是为了促进各种实现之间的互操作性。如果高层协议发送的分组长超过MTU,PPP就要丢掉这个帧,并且返回差错。

  9. 网络地址协商:PPP协议必须提供一种机制使通信的两个网络层的实体能协商知道彼此网络地址。这对拨号连接的链路特别重要,因为即使建立了链路层连接不知道网络地址,则还是不能保证网络层可以传送分组

  10. 数据压缩协商

PPP协议有三个部分组成:

  1. 一个将IP数据报封装到串行链路的方法。PPP支持异步链路(无奇偶校验的8比特数据)和面向比特的同步链路。信息部分还得有MTU的限制
  2. 一个用来建立、配置和测试数据链路连接的 链路控制协议LCP。通信的双方可以协商一些选项。RFC 1661中定义了11种类型的LCP分组
  3. 一套 网络控制协议NCP,其中每一个协议支持不同的网络层协议,如IP、OSI网络层、DECnet、AppleTalk等

PPP协议帧格式:

img

  • 格式

    ①首尾的是标志字段F(flag):标识着开始和结束,F = 0x7E(01111110),连续两帧之间只用一个标志字段

    ②A和C是预留的字段,但是直到现在还没有用到

    ③协议字段:当值为0x0021时,PPP帧的信息字段就是IP数据报;当0xC021,则是LCP的数据

    ④信息字段:长度不超过1500字节

    ⑤FCS:是使用CRC的帧检测序列FCS

  • 字节填充:

    当信息字段中出现和标志字段一样的比特(0x7E)组合时,就必须采取一些措施使这种形式上和标志字段一样的组合不出现在信息字段中。

    当PPP使用异步传输时(逐个字符地传送),转义字符为0x7D(即01111101),并使用字节填充,以下为填充方法。

    ①出现的每一个0x7E字节转变为2字节序列(0x7D,0x5E)

    ②出现0x7D的字节(即和转义字符一样的比特组合)转变为2字节序列(0x7D,0x5D)

    ③若出现ASCLL码的控制字符(即数值小于0x20的字符),则在其前面加入0x7D,同时将该字符的编码加以改变。例如出现0x03,那么就转为(0x7D,0x23)

  • 零比特填充:PPP协议用在SONET/SDH链路时,是使用同步传输(一连串的比特连续传送),而不是异步传输(逐个字符地传送)这时PPP采用零比特填充来实现透明传输

    ①在发送端先扫描整个信息字段(通常用硬件实现,但也可以用软件实现,只是会慢些)。只要发现有5个连续1,就立即填入一个0,保证不会出现6个连续的1。

    ②接收端收到一个帧时先找到标志字段F以确定一个帧边界,再对其中的比特流进行扫描,每发现5个连续1,就把5个连续1后的0删除,还原成原来的比特流

    例1:当出现0111 1110时转为0111 1101 0。例二:当出现的数据恰好是0111 1101时也是填入一个0得到0111 1100 1。所以不会零比特填充不会出现错误

    img

PPP协议工作状态

PPP链路一开始是怎样初始化的?

当用户拨号接入ISP后,就建立了一条从用户PC到ISP的物理连接。这时, 用户电脑向ISP发送一系列的链路控制协议LCP分组(封装成多个PPP帧),以便建立LCP连接。这些分组及响应选择了将要使用的一些PPP参数,接着还要进行网络层配置,网络控制协议NCP给新接入的用户个人电脑分配了一个临时IP地址。这样用户电脑就成为互联网上的一个有IP地址的主机了。
当用户通信完毕时,NCP释放网络连接,收回IP地址,接着LCP释放数据链路层连接。最后释放的是物理层的连接.

img

  1. 链路静止状态:PPP链路的起始和终止状态永远是“链路静止”状态

  2. 链路建立状态:当用户拨号接入ISP后,就建立了一条从用户PC到ISP的物理连接。

    拨号过程:

    当PC通过调制解调器呼叫路由器时(通常是在屏幕上用鼠标点一个连接按钮),路由器就能检测到调制解调器发出的载波信号,在双方建立了物理层连接后,PPP就进入“链路建立”状态,其目的是建立链路层LCP连接

  3. LCP配置协商:接着用户PC向ISP发送一系列LCP分组(封装成多个PPP帧),开始协商一些配置选项,以便建立LCP连接。这些分组及其响应选择了一些将要使用的PPP参数。

    协商过程:

    ①发送LCP的配置请求帧,这是个PPP帧,其协议字段设置为LCP对应的代码,而信息字段包含特定的配置请求。(配置请求即将“要使用的PPP参数”,LCP配置选项包括,链路上的最大帧长、所使用的鉴别协议(如果有的话)、不使用PPP帧中的地址和控制字段(A和C)因为这俩字段还没有意义。)

    ②链路另一端可以发送以下响应中的一种:

    • 配置确认帧:所有选项都接受
    • 配置否认帧:所有选项都理解,但不能接受
    • 配置拒绝帧:选项有的无法识别或不能接受,需要协商

    协商之后双方就建立了LCP链路

  4. 接着就进入鉴别状态,这一状态只允许传送LCP协议的分组、鉴别协议的分组、监测链路质量的分组

    若使用口令鉴别协议PAP,则需要用户PC发送身份标识符可口令。

    如需要更好的安全性则可使用更复杂的握手鉴别协议CHAP。

    若鉴别失败则转到”链路终止“状态,鉴别成功则进入下一步“网络层协议”状态

  5. 网络层协议状态:接着还要进行网络层的配置,网络控制协议NCP给新接入的用户PC分配一个临时的IP地址。这样用户就成为因特网上的一个有IP地址的主机了

    PPP链路两端的网络控制协议NCP根据网络层的不同协议互相交换特定的网络控制分组。这个步骤很重要,因为现在的路由器都能同时支持多种网络层协议。总之PPP协议两端的网络层可以运行不同的网络侧协议,但仍然可以使用一个PPP协议进行通信。如果在PPP链路上运行的是IP协议,则对PPP链路的每一端配置IP协议模块(如分配IP地址)时就要使用NCP中支持IP的协议——IP控制协议IPCP。IPCP分组也封装成PPP帧(其中的协议字段为0x8021)。

    在低速链路上运行时,双方还可以协商使用压缩的TCP和IP首部。

  6. 链路打开状态: 当网络层配置完成后,链路就进入可进行数据通信的“链路打开状态”。可互相发送分组。还可发送回送请求LCP分组和回送回答LCP分组,来检查链路状态

    数据传输结束之后,可以由链路的一端发出终止请求LCP分组请求终止链路连接,在收到对方发来终止确认LCP分组后,转到链路终止状态

  7. 链路终止状态:接着LCP释放数据链路层连接

  8. 链路静止状态:最后释放物理层连接——调制解调器的载波停止

    PPP链路的起始和终止状态永远是“链路静止”状态,这时在PC和ISP之间不存在物理层的连接

从设备之间无链路,到先建立物理链路,再建立链路控制协议LCP链路。经过鉴别后再建立网络控制协议NCP链路,才能交换数据。由此可见PPP协议已经不是纯粹的数据链路层协议,他还包含了物理层和网络层的内容。

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

广播信道可以进行一对多的通信。下面要讨论的局域网使用的就是广播信道。

局域网的数据链路层

局域网可按网络拓扑进行分类:①星形网②环形网③总线网
总线网以传统以太网最为著名。局域网经过了四十年的发展,尤其是在快速以太网和吉比特以太网、10吉比特以太网相继进入市场后,以太网已经在局域网里占据了绝对优势,几乎成为了局域网的同义词。
局域网工作的层次跨越了数据链路层和物理层,但由于关于数据链路层的技术比较多,所以在数据链路层介绍局域网。

img

共享信道要着重考虑的一个问题就是如何使众多用户能够合理而方便的共享通信媒体资源。在技术上有两种方法:

  1. 静态划分信道频分复用、时分复用、波分复用、码分复用,这种代价较高,不适合局域网

  2. 动态媒体接入控制。其特点是信道并非在用户通信时固定分配给用户。

    分为

    随机接入:所有用户随时的发送信息,但是同一时刻两个用户一起发送,在共享媒体上就会出现碰撞,导致双方都发送失败。

    受控接入:用户不能随时发送消息,必须服从一定的控制。典型代表——轮询

    随机接入使用较多,受控接入使用较少不用管它。

下面我们从传统以太网开始介绍

以太网的两个标准、MAC的由来和发展

由于有关厂商在商业上竞争太激烈,IEEE 802委员会未能形成一个统一的、最佳的局域网标准,而是被迫制定了几个不同的局域网标准,如(令牌总线网,令牌环网等)。为了使数据链路层能更好的适应多种局域网标准,委员会把局域网的数据链路层拆成两个子层,①逻辑链路控制LLC子层②媒体输入控制MAC子层。与接入传输媒体有关的内容都放在MAC子层,而LLC子层则与传输媒体无关,不管采用何种传输媒体和MAC子层的局域网 对LLC子层来说都是透明的

img

然而最后以太网取得了垄断地位,几乎成了局域网代名词,因此LLC子层已经消失了,很多厂商生产的适配器上仅装有MAC协议。

适配器

  • 计算机与外界局域网的连接是通过适配器。

  • 适配器是一块插在电脑上的网络接口卡NIC,简称 网卡(由于现在主板上都嵌入适配器了,不再单独使用网卡了,所以用适配器这个更准确的术语)

  • 适配器的内容虽然放在数据链路层中讲授,但是适配器所实现的功能却包含了”数据链路层“和”物理层“这两层次的功能。现在芯片集成度很高,以致很难把一个适配器的功能严格按照层次关系精确划分开

  • 适配器上装有处理器和存储器

  • 适配器与局域网的通信以串行的方式进行。但是适配器和主板上的I/O总线以并行传输方式进行。因此适配器的一个重要功能是:数据串行和并行的转换。

    img

  • 转换就需要处理器。因为要并行转串行(快转慢),所以需要存储器对数据进行缓存。

  • 适配器有个驱动程序,会告诉它应该从内存的什么位置把多长的数据块发送到局域网,应该把局域网传过来的数据块放到内存的什么位置。

  • 适配器还要实现以太网协议

  • 适配器的工作不会使用计算机的CPU。①当适配器收到不正确的帧就丢掉,不再进行其他处理,这样做不浪费计算机CPU资源。②收到正确的帧时,就会使用中断来通知该计算机并交付协议栈中的网络层。③当计算机要发送IP数据报时,就由协议栈把IP数据报向下交给适配器,组装成帧后发送到局域网。

  • MAC地址就在适配器中。

CSMA/CD协议

以太网为了在广播信道中实现一对一的通信,使用了MAC地址作为每个适配器的唯一标识,发送数据帧时在首部填入目的MAC地址。现在的电子技术很容易做到:仅当数据帧中的目的地址与适配器ROM中存放的硬件地址一致时,该适配器才能接收这个数据帧。

为了通信简便,以太网采用了两种方式。

  1. 以太网使用工作起来非常简单的无连接方式。而且以太网通信质量好。因此,以太网提供的服务就是尽最大努力的交付,即不可靠的交付。当目的站收到差错帧就丢掉(比特差错-使用CRC),传输差错交给高层协议解决。以太网采用最简单的随机接入,那么就需要解决碰撞(多人同时发言)的问题,使用的方案是CSMA/CD协议,意思是载波监听多点接入/碰撞检测

  2. 以太网使用的是曼彻斯特编码的信号。

    二进制基带数字信号通常就是高低压交替出现的信号。这种信号的最大问题就是一旦出现一长串的连1或连0,接收端就无法从收到的比特流中提取位同步信号。

    曼彻斯特编码如图,1就是”前高后低“,0是”前低后高“(也可以反过来),这样就保证了在每一个码元正中间出现一次电压的转换而接收端就是利用这种电压的转换很方便的把同步位信号提取出来。

    曼彻斯特编码的一个小缺点,从图中可以知道它所占的频带宽度比原始基带信号增加了一倍。

    img

CSMA/CD协议要点:

  • 多点接入:多个计算机接在一条总线。
  • 载波监听:多个计算机一直在监听总线上有没有其他计算机在发送信息。
  • 碰撞检测:边发送边监听,如果监听到有其他站在发送消息,就表明发生了碰撞。任何一个正在发送数据的站,一旦发现总线上出现了碰撞,其适配器就要立即停止发送,然后等待一会再发送。

img

显然在使用CSMA/CD协议时,一个站不可能同时进行发送和接收(但必须边发送边监听)。因此使用CSMA/CD协议的以太网不可能进行全双工通信,而只能进行半双工通信。

以太网上的每一个站在自己发送数据之后的一小段时间内,存在着遭遇碰撞的可能性。这一小段时间是不确定的,它取决于另一个发送数据站到本站的距离。因此以太网不能保证某一段时间内一定能把自己的数据帧成功地发送出去(因为存在产生碰撞的可能)。以太网的这一特点称为发送的不确定性。如果希望在以太网上发生碰撞的机会很小。必须使整个以太网的平均通信量远小于以太网的最高数据率。

以太网经过争用期这段时间还没有检测到碰撞,才能肯定这次发送不会发生碰撞。

为了避免一个帧太短还没等检测到碰撞,它就已经全发出去了。这样发送端就没法终止它的发送了,发送端还会以为它已经发送成功了。所以以太网规定一个帧最短为64字节,如果发送的数据不够64字节,那么必须填充一些字节。

由以上可知,如果在争用期(共发送了64字节)没有发生碰撞,那么后续发送的数据就一定不会发生冲突。换句话说如果发生碰撞,就一定是在发送的前64字节内。由于一检测到冲突就立即终止发送,这时已经发出的数据一定小于64字节,因此凡长度小于64字节的帧都是由于冲突而异常终止的无效帧。只要收到这种无效帧,就应当立即丢弃。

当发送数据的站一旦发现发生了碰撞时,除了立即停止发送数据外,还要继续发送32比特或48比特的人为干扰信号,以便让所有用户都知道现在已经发生了碰撞。这叫做强化碰撞

image-20210902205528979

以太网还规定了帧间最小间隔为9.6us,相当于96比特时间。这样做是为了使刚刚吸收到的数据帧的站的接收缓存来得及清理。做好接收下一帧的准备。

根据上述讨论,可以把CSMA/CD协议的要点归纳如下:

  1. 准备发送:适配器从网络层获得一个分组,加上以太网的首部和尾部,组成以太网帧,放入适配器的缓存中。但在发送之前,必须先检测信道
  2. 检测信道:若检测到信道忙,则应不停检测,一直等待信道为空闲,若检测到信道空闲,并在96比特时间内保持空闲(保证了帧间最小间隔),就发送这个帧
  3. 在发送过程中仍不断检测信道。发送成功:在争用期内一直未检测到碰撞。这个帧肯定能发送成功,发送完毕后,其他什么也不做。然后回到1步。发送失败:争用期内检测到碰撞。立即停止发送数据,并按规定发送人为干扰信号(强化碰撞)。适配器就执行指数退避算法,等待512比特时间后,返回步骤2,继续检测信道。但若重传16次仍不能成功,则停止上传而向上报错

以太网每发送完一帧,一定要把已发送的帧暂时保留一下。如果在争用期内检测到发生了碰撞,那么还要推迟一下把这个暂时保留的帧重传一次。

集线器

使用集线器的网络是星型拓扑,集线器相当于把总线网的各个分支汇集到了一起,在逻辑上还是一个总线网,在上面运行的各个站还是使用CSMA/CD协议。一个集线器有很多接口(8-16个),因此一个集线器很像一个多接口转发器。集线器工作在物理层,每个接口仅简单的转发比特,不进行碰撞检测

以太网的信道利用率

以太网的信道利用率不能达到100%,因为总会发生碰撞,造成信道损失。因此当数据率一定时,以太网的连线长度受到限制,同时以太网的帧长不能太短。(连线太长会导致争用期变长。争用期变长,帧就也得变长,不然帧已经全发出去了,才知道有碰撞,这个帧就白发了)
img

以太网的MAC层

  1. MAC层的硬件地址

    局域网中(注意不是点对点信道),“硬件地址”又称为“物理地址”或“MAC地址”(因为这种地址用在MAC帧中)。

    MAC就是为了标识某个系统的一个非常重要的标识符。——“名字指出我们所要寻找的那个唯一资源,地址指出那个资源在何处,路由告诉我们到达何处”。严格来讲名字应该与系统的所在地无关。就像我们每个人的名字一样,不随我们所处地址而改变。但是IEEE 802标准为局域网规定了一种48位全球地址(一般都简称为“地址”),是指局域网上的每一台计算机中固化在适配器的ROM中的地址

    主机的MAC地址虽然被称为“地址”但是它根本不能告诉我这个主机在什么地方。所以严格来讲,MAC其实就是计算机的唯一身份ID,而IP通常用来指明“地址”。只不过称呼MAC为地址比较习惯了,尽管不那么严谨

    IEEE的注册管理机构RA是局域网全球地址的法定管理机构,它负责分配地址字段的6个字节中的前3个字节(即高24位),适配器生产厂家向它购买这三个字节构成的这个号(即地址块),这个号的正式名称是组织唯一标识符OUI。地址字段中的后三位(即低24位)则由厂家自行指派,称为扩展标识符。可见一个地址块可以生产出2²⁴个不同的地址。用这种方式得到的48位地址称为EUI-48。EUI-48的使用范围并不局限于局域网的硬件地址,而是可以用于软件接口。

    IEEE规定地址字段的第一字节的最低位为I/G位,当I/G位为0时,地址字段表示一个单个站地址。当I/G位为1时,表示组地址用来进行多播。因此IEEE只分配地址字段的前三个字节中的23位

    IEEE还考虑到可能有人不愿意购买OUI。为此,IEEE把地址字段第一字节的最低第二位规定为G/L位。当G/L位为0时是全球管理(保证全球没有相同地址),厂商购买的OUI全是属于全球管理。当G/L位为1时是本地管理,这时用户可以任意分配网络上的地址。但应当指出,以太网几乎不会理会这个G/L位

    适配器有过滤功能,它在网上每收到一个MAC帧就先用硬件检查MAC帧中的目的地址,是本地的MAC就留下,不是就丢弃。这里的帧包括以下三种:

    1. 单播帧:一对一,收到的帧的MAC地址与本站的硬件地址完全相同
    2. 广播帧:一对全体,全1的MAC地址
    3. 多播帧:一对多,发送给本局域网上一部分站点的帧

    所有适配器都至少能识别前两种帧。有的适配器可用编程方法识别多播地址。当操作系统启动时,它就把适配器初始化,使适配器能够识别某些多播地址。显然只有目的地址才能使用广播地址和多播地址。

    以太网适配器还有一种工作方式——混杂方式。这种适配器只要“听到”有帧在以太网上传输就悄悄的接受下来。这样是“窃听”,黑客常用。所以别在有这种适配器的以太网上上网。但是混杂模式有时还非常有用。例如:网络工作人员用它来监视和分析以太网上的流量,以便找出提高网络性能的具体措施。有一种很有用的网络工具叫嗅探器就使用了设置混杂方式的网络适配器。

  2. MAC帧的格式(有两种格式标准,这里讲使用的最多的V2标准)

    img

    • 源地址、目的地址

    • 类型字段:用来标志上层使用的是什么协议,以便把收到的MAC地址交给这个上层这个协议,例如0x0800就代表IP(图中假定使用IP地址,实际上使用其他协议也是可以的。)

    • 数据字段:长度在46-1500字节之间

      46字节这样得出:最小长度64(见上文提到的的CSMA/CD)减去18字节的首部、尾部

      数据字段小于46字节时,MAC子层就会在数据字段后面加入一个整数字节填充字段。

    • 帧检测序列FCS:用的CRC检验

      MAC帧的FCS检验范围不包括前同步码帧开始定界符当传输媒体的误码率位1×10﹣⁸,MAC子层可使未检测到的差错小于1×10﹣¹⁴

    • MAC帧没有帧长度字段,怎么来进行帧定界?

      使用曼彻斯特编码!这种编码每一个码元正中间肯定有一次电压转换。当发送方把一个以太网帧发送完毕之后,就不再发送其他码元了。这时发送方网络适配器的接口上的电压再也没变化了。这样接收方就很容易知道以太网帧的结束位置。在这个位置往前数4字节(FCS字段长度是4字节)。这就是物理层属性对数据链路层造成的影响,由于以太网采用曼彻斯特编码所以长度字段并无实际意义。

    • 前同步码+帧开始定界符

      为了接收端迅速实现位同步,从MAC子层下传到物理层时还需要在帧的前面插入8字节(由硬件生成)。它的前7个字节是前同步码(1和0交替码),作用是使接收端调整时钟频率实现“位同步”;后1个字节帧开始定界符(10101011)前6位和前同步码一样,最后两个连续的1就是告诉接收端适配器:“MAC帧的信息马上要来了”。

      在使用SONET/SDH进行同步传输时则不需要用前同步码,因为在同步传输时收发双方的位同步总是一直保持着。

    • 当数据字段的长度小于46字节,MAC子层就会在数据字段后面加入一个整数字节的填充字段,以保证以太网的MAC帧长度不小于64字节。我们应该注意到MAC帧的首部并没有指出数据字段的长度是多少。在有填充字段的情况下,接收端的MAC子层在剥去首部和尾部后就把数据字段和填充字段一起上交给协议层。现在的问题是:上层协议如何知道填充字段的长度的呢?(IP层应当丢弃没有用处的填充字段)可见,上层协议必须具有识别有效的数据字段长度的功能。我们知道,IP协议首部有一个“总长度”字段,那用这个长度就可以剪去后面的填充字段了。

    • 无效帧的定义

      帧长度不是整数字节

      收到的帧检验序列FCS查出有错

      收到的帧的MAC客户数据字段的长度不在46-1500字节之间。考虑到MAC帧首部和尾部的长度共有18字节,可以得出有效的MAC帧长度为64-1518字节。

    还需要注意,以太网上传送的数据是以帧为单位,各帧之间必须要有一定的间隙。因此接收端只要找到帧开始定界符,其后面连续到达的比特流就都属于同一个MAC帧。可见以太网不需要使用帧结束定界符,也不需要字节插入来保证透明传输。

扩展的以太网

以太网太大会导致信号衰减

在物理层扩展以太网

早期使用转发器扩展以太网,现在扩展主机和集线器之间的距离的一种办法就是使用光纤,光纤时延很小带宽很高,因此很容易使主机和几公里以外的集线器相连接

img

使用多个集线器,和使用主干集线器把各个集线器连接起来。
优点:形成一个更大的以太网,
缺点:①碰撞域变大了。②不同的系使用不同的以太网技术(比如数据率不同),就不可能用集线器将他们互连起来。例:一个系用10Mb/s的适配器,一个100Mb/s的适配器,那么用集线器连接起来之后大家只能工作在10Mb/s的速率。
img

在数据链路层扩展以太网——网桥

扩展以太网更常用的办法是在数据链层进行。最初人们使用的是网桥

网桥和 集线器、转发器 的区别

https://zhuanlan.zhihu.com/p/350822185

网桥是按存储转发方式工作,集线器或转发器是逐个比特转发,此外网桥丢弃CRC检验有差错的帧、过长过短的无效帧

网桥:

对收到的MAC帧的目的地址进行转发和过滤。当网桥收到一个帧时,并不是向所有的接口转发此帧,而是根据此帧MAC的目的地址,查找网桥中的地址表,然后确定将该帧转发到哪一个接口,或者丢弃。

网桥的优点

网桥工作在链路层的MAC子层,可以使以太网各网段成为隔离开的碰撞域。物理层的转发器集线器就没有这个功能;扩大了物理范围、网络故障出现时,只影响个别网段。可互联不同物理层、不同MAC子层和不同速率(如10Mb/s和100Mb/s以太网)的以太网

网桥缺点

由于网桥对接收的帧要先存储->查找转发表->执行CSMA/CD算法->转发,这样增加了时延;在MAC子层没有流量控制功能。当网络上的负荷很重时,网桥中的缓存会溢出,以致帧丢失;网桥只适合于用户不多的情况(不超过几百个)和通信量不太大的以太网,否则有时会因传播过多的广播信息而产生网络拥塞。这就是所谓的广播风暴

源路由网桥

源站广播发送一个发现帧作为探测用,每个发现帧都记录所经过的路由。当这些发现帧到达目的站,就沿着各自的路由返回源站。源站在得知这些路由之后,从所有可能的路由中选一个最佳路由。以后凡从这个源站向该目的站发送的帧首部,都必须携带源站所确定的这一路由信息。

若两个以太网之间使用并联的源路由网桥,则可使通信量平均一些分配给各个网桥。做到负载均衡

1990年问世的交换式集线器,很快就淘汰了网桥。又叫以太网交换机第二层交换机,强调这种交换机工作在数据链路层。

以太网交换机:

实质上就是一个多接口网桥,从技术上讲网桥的接口数很少,2-4个,以太网交换机通常有十几个或更多的接口;它与工作在物理层的转发器集线器有很大的差别;以太网交换机的每个接口都直接与一个单台主机或另一个以太网交换机相连,并且一般都工作在全双工方式(注意:普通网桥的接口往往是连接到以太网的一个网段);以太网交换机还具有并行性,即能同时连通多对接口,使多对主机能同时通信(网桥一次只能转发一个帧)。相互通信的主机都是独占媒体,无碰撞地传输数据;其内部的帧交换表是通过自学习算法建立的;以太网交换机使用了专用的交换结构芯片,用硬件转发,其转发速率比使用软件转发的网桥块;内部还有存储器,能在输出端口繁忙的时候把到来的帧进行缓存;虽然大部分都有缓存进行存储转发,但是有直通交换形式的交换机。直通是在收到帧的同时就立即按数据帧的目的MAC地址决定该帧的转发接口,因而提高了转发速度。直通的缺点是不检查差错就转发,因此有可能转发一些无效帧。

以太网交换机种类有很多。例如:”具有第三层特性的第二层交换机“和”多层交换机“。前者具有某些第三层的功能,如数据报的分片和对多播通信量的管理,而后者可根据第三层的IP地址对分组进行过滤。

  • 自学习和转发帧的一般算法

    ①收到一个帧后先进行自学习。找找转发表中与收到帧的源地址有无匹配的项目。没有就在转发表中增加一个项目(源地址、进入的接口、时间)。如有,则把原有的项目进行更新

    转发帧。查找转发表中与收到帧的目的地址有无匹配的项目。没有,通过所有其他接口(除了进入的接口)进行转发。有,则按转发表中给出的接口进行转发。若转发表中给出的接口就是该帧进入网桥的接口,那么就丢弃这个帧。

  • 生成树协议STP:互相连接在一起的网桥在进行彼此通信后,就能找出原来的网络拓扑的一个子集。这个子集里,整个连通的网络中不存在回路,在任何两个站之间只有一条路径。(避免兜圈子)

PPP协议和以太网MAC层结合

两个以太网之间通过PPP协议(点对点信道)连接。其MAC帧外层还要包上:首部PPP-H和尾部PPP-T
在数据帧离开网桥2时,还要剥去这个PPP-H和PPP-T然后经以太网LAN2到达站点B。
img

虚拟局域网VLAN

利用以太网交换机可以很方便的实现虚拟局域网VLAN。

VLAN是由一些局域网网段构成的与物理位置无关的逻辑组。每一个VLAN的帧都有一个明确的标识符,指明发送这个帧的工作站是属于哪一个VLAN。虚拟局域网只是局域网提供给用户的一种服务,并不是一种新型局域网。

例:下图中

LAN₁:(A₁, A₂, B₁, C₁)、LAN₂:(A₃, B₂, C₂)、LAN₃:(A₄, B₃, C₃)。可以划分为三个虚拟局域网VLAN₁:(A₁, A₂, A₃, A₄)、VLAN₂:(B₁,B₂,B₃)、VLAN₃:(C₁,C₂)。

如果B₁发出广播,那么只有和B₁在一个VLAN上的B₂,B₃能收到。虽然B₁,B₂,B₃没有连在同一交换机上。以太网交换机不向虚拟局域网以外的工作站传送B₁的消息。这样,虚拟局域网限制了接收广播信息的工作站数,使得网络不会因传播过多的广播信息(即”广播风暴“)而引起性能恶化。

img

新的以太网帧格式——802.1Q帧:

1988年新标准定义了以太网的帧格式扩展,以便支持虚拟局域网。虚拟局域网协议允许在以太网的帧格式中插入一个4字节的标识符称为VLAN标记,用来指明发送该帧的工作站属于哪一个虚拟局域网。插入VLAN标记得出的帧称为802.1Q帧。显然如果还使用旧的以太网帧格式,就无法区分是否划分了虚拟局域网。上图中标出的几个粗线链路上传输的是802.1Q帧。在其他链路上传输的仍然是普通的以太网帧。由于VLAN的以太网帧的首部增加了4字节,因此以太网的最大帧长从原来的1518字节变为1522字节。

img

高速以太网

1995年:100BASE-T以太网,100Mb/s

1998年:吉比特以太网,1Gb/s

10吉比特和100吉比特

使用以太网进行带宽接入

以太网接入的一个重要特点就是可以提供双向的带宽通信,并且可以根据用户对宽带的需求灵活地进行宽带升级。当城域网和广域网都采用吉比特以太网或10吉比特以太网时,采用以太网接入可以实现端到端的以太网传输,中间不需要进行帧格式的转换。这就提高了数据的传输率且降低了传输成本。

然而以太网的帧标准格式中没有用户名字段,也没有让用户键入密码来鉴别身份的过程。如果运营商要利用以太网,就必须解决这个问题,于是有人想法子把数据链路层的两个成功协议结合起来,即把PPP协议帧再封装到以太网中来传输——”在以太网上运行PPP“。现在的光纤FTTx都要使用PPPoE的方式进行接入

例如,如果使用光纤到大楼FTTB的方案,就在每个大楼的镂口安装一个光网络的单元ONU(实际上就是一个以太网交换机),然后根据用户所申请的带宽,用5类线(铜线)接到用户家中。如果大楼的用户太多,那么还可以在每一层再安装一个100Mbit/s的以太网交换机。各大楼的以太网交换机通过光缆汇接到光节点汇接点(光汇接点一般通过城域网连接到互联网的主干网)。

使用这种方式介入到互联网时,在用户家中不再需要使用任何调制解调器。用户家中只有一个RJ-45的插口。用户把自己个人电脑通过5类线连接到墙上的RJ-45插口中,然后在PPPoE弹出的窗口中键入在网络运营商处购买的用户名(一串数字)和密码,就可以进行上网了。注意这种以太网带宽接入时,从用户家中的个人电脑到户外的第一个以太网交换机的带宽是能够得到保证的。因为这个带宽时用户独占的。但是这个以太网交换机到上一级的交换机的带宽是许多用户共享的。这时运营商就要及时扩容,保证用户利益不被损伤。

顺便指出,当用户使用ADSL进行宽带上网时,从用户个人电脑到家中的ADSL调制解调器之间,也是使用RJ-45和5类线(即以太网使用的网线)进行连接的,并且也是使用PPPoE弹出的窗口进行拨号连接的。但是用户个人电脑发送的以太网帧到了家里的ADSL调制解调器后,就转换成为ADSL使用的PPP帧。

posted @ 2021-08-18 00:17  abzor  阅读(508)  评论(0编辑  收藏  举报