计算机网络总结——数据链路层

3.1数据链路层概述

  • 链路:从一个结点到相邻节点之间的一段物理线路,而中间没有其他的结点。

  • 数据链路:是指把实现通信协议的硬件和软件加到链路上,就构成了数据链路。

  • 数据链路层传输的数据包称为,数据链路层以帧为单位传输和处理数据。

数据链路层需要探讨的问题:

(1)对于使用点对点信道的数据链路层来说,数据链路层的三个重要问题:

  • 封装成帧:数据链路层给网络层交付的网络协议数据单元加上帧头和帧尾,该操作称为封装成帧。

以下是以太网版本2的MAC帧格式:

image-20210529234625851
  • 差错检测:发送方将封转好的帧通过物理层发送到传输媒体中,帧在传输过程中遭遇干扰后可能会出现误码,也就是比特0可能变成了比特1,或者相反。所以需要采取一定措施解决这个问题。

发送方在发送帧之前,基于待发送数据和检错算法计算出检错码,并将其封转到帧尾,如上面以太网MAC帧中的FCS字段,接收方接受到数据后,通过检错码和检错算法就可以判断帧在传输过程中是否发生了误码。

  • 可靠传输:接收方接受到有误码的帧后会将其丢弃,并采取其他措施来确保能重新收到这个帧的正确副本。

这里的可靠传输就是说,虽然我把这个错误帧扔掉了,但是我还是会通知你重新发一份,并不会不负责任的不了了之。

封装成帧、差错检测,可靠传输是数据链路层最基本最重要的问题。

(2)对于使用广播信道(共享式局域网)的数据链路层来说,数据链路层除了上面三个问题,还有一些其他需要解决的问题:

image-20210530000435844

编址问题:如图所示,ABCDE通过一条总线进行互连,主机A要给主机C发送数据,代表帧的信号会通过总线传输到总线上的所有主机,主机C需要知道该帧是发送给自己的,同时主机BDE需要知道该帧不是发送给自己的。主机A会将目的地址添加到帧的首部中一起传输,例如上面以太网MAC帧的目的地址字段。

image-20210530001049478

碰撞问题:当总线上多台主机同时使用总线传输帧时,传输信号就会产生碰撞。以太网采用的协调方式是:使用一种特殊的协议CSMA/CD(载波监听多点接入/碰撞检测)。

(3)随着技术的发展和交换技术的成熟和成本的降低,具有更高性能的是使用点对点链路和链路层交换机的交换式局域网,在有线局域网领域已完全取代了上面的共享式局域网。

image-20210530001819149

这时需要探讨交换机是如何转发帧的呢?

(4)无线局域网仍然采用共享信道技术,例如802.11局域网采用的是媒体接入控制协议CSMA/CA(载波监听多点接入/碰撞避免),它的工作原理又是怎样的呢?

image-20210530002207656

3.2封装成帧

(1)封装成帧

  • 封装成帧是指数据链路层为上层交付的网络协议数据单元加上帧头和帧尾使之成为帧。

  • 帧的帧头和帧尾包含有很多重要的控制信息。

例如以太网MAC帧的帧头包含目的地址、源地址和类型,帧尾包含FCS字段

image-20210530102153764

点对点协议PPP的帧格式,帧头包含标志、地址、控制和协议字段,帧尾包含了FCS和标志字段。

image-20210530102333036
  • 帧头和帧尾的作用之一就是帧定界,例如PPP帧中帧头和帧尾中的标志位,作用就是帧定界。

image-20210530102844946

这样接收方的数据链路层就可以依据帧定界标志,从物理层交付的比特流中提取出一个个的帧。

需要说明的是,并不是每一种数据链路层的帧都包含有帧定界标志,例如以太网MAC帧中并没有包含帧定界标志位。

实际上,以太网将封装好的帧交付给物理层,物理层会在MAC帧前面添加8字节的前导码,然后再将比特流转换成电信号发送。

前导码中的前7个字节为前同步码,作用是使接收方的时钟同步。最后的一字节为帧开始定界符,表明其后面经跟着的就是MAC帧。

image-20210530104104215

另外,以太网还规定了帧间间隔时间为96比特的发送时间,因此MAC帧并不需要帧结束定界符。

image-20210530104014230

(2)透明传输:

透明传输是指数据链路层对上层交付的数据没有任何限制,就好像数据链路层不存在一样。

  1. 面向字节的物理链路使用字节填充(或字符填充)的方法实现透明传输。

数据链路层在发送帧之前,会对上层交付的协议数据单元进行扫描,对上层数据中出现的每一个帧定界符前面添加一个转义字符,接收方数据链路层在物理层交付的比特流中提取帧,当遇到转义字符时就知道,虽然后面一字节内容和帧定界符相同,但它是数据并不是定界符,剔除转义字符后将其后面的内容作为数据继续提取。这样数据链路层对上层交付的数据没有任何限制,所以叫做透明传输。

转义字符是一种特殊的控制字符,长度为1个字节,十进制值为27。

  1. 面向比特的物理链路使用比特填充的方法实现透明传输。

以某个点对点协议的帧为例,当上层交付的协议数据单元中出现了帧定界符一样的比特串时,在发送前可以采用零比特填充法,对数据部分进行扫描,每5个连续的比特1后面就插入一个比特0,这样就确保了帧定界符在整个帧中的唯一性。这样就可以实现透明传输。

image-20210530113538970

接收方数据链路层在对物理层交付的比特流中提取帧时,对每5个连续的比特1后面的比特0剔除。

练习题:

image-20210530113831789

为了提高帧的传输效率,应该使帧的数据部分的长度尽可能大一些。

但是考虑到差错控制等因素,每一种数据链路层协议都规定了帧的数据部分的最大长度,称为最大传送单元MTU(Maximum Transfer Unit)。

3.3差错检测

实际的传输链路都不是理想的,比特在传输过程中都可能会发生差错,称为误码。

在一段时间内,传输错误的比特数占所传输总比特数的比率称为误码率BER(Bit Error Rate)。

使用差错检测码来检测数据在传输过程中是否发生了差错,例如以太网MAC帧的帧尾包含了一个4字节的帧检验序列FCS字段。

(1)奇偶校验

在待发送的数据后面添加一位奇偶校验位,使整个数据(包含奇偶校验位在内)的比特1的个数为偶数(偶校验)或者奇数(奇校验)。

如果有奇数个比特发生错误,则奇偶性发生变化,可以检测到误码。

如果有偶数个比特发生错误,则奇偶性不发生变化,不能检测到误码(漏检)。

由于奇偶检验的漏检率比较高,因此计算机网络中数据链路层一般不采用这种检验方式。

(2)循环冗余码(CRC)

这是一种具有很强检错能力的检验方法,漏检率很低。

  • 收发双方约定一个生成多项式G(x)。
  • 发送方根据生成多项式和待发送数据计算出一个差错检测码(冗余码),添加到待发送数据后面一起发送。
  • 接收方根据生成多项式和接收到的数据计算是否发生了差错。
image-20210530121618649

image-20210530121741428

发送方生成冗余校验码:

image-20210530150201998

接收方判断数据是否出错:

image-20210530150629690

检错码只能检测出帧在传送过程中出现了差错,并不能定位错误,因此不能纠正错误。

要想纠正差错,可以使用冗余信息更多的纠错码进行前向纠错。但这种纠错码的开销比较大,在计算机网络中很少使用。

循环冗余码有很好的检错能力,虽然计算比较复杂, 但是硬件上很好实现,所以被广泛应用在数据链路层。

3.4可靠传输

3.4.1可靠传输的基本概念

接收方通过检错码发现数据发生了误码,则接下来会有两种情况:

  • 如果数据链路层为上层提供的是不可靠传输服务,则会直接丢弃该帧,其他什么都不做。
  • 如果数据链路层为上层提供的是可靠传输服务,则会想办法实现发送方发送什么,接收方就接受什么。例如接收方可以给发送方发送一个通知帧,通知发送方数据发生了错码,需要进行重发。

可靠传输服务还需要解决其他问题:

  • 通知帧也发生了误码。
  • 从整个计算机体系来看,**传输差错还包括分组丢失,分组失序和分组重复,**这些传输差错一般出现在数据链路层的上层。

对于有线链路,其误码率比较低,为了减少开销,并不要求数据链路层为上层提供可靠传输服务,即使发生了误码,可靠传输的问题由其上层处理。

对于无线链路,由于其易受干扰,误码率较高,因此必须要求数据链路层为上层提供可靠传输服务。

可靠传输服务并不仅限于数据链路层,其他各层皆可选择实现可靠服务。

image-20210530155321097

可靠传输的实现比较复杂,开销较大,是否使用可靠传输服务取决于应用需求。

3.4.2可靠传输的实现机制——停止等待协议SW

(1)确认与否认:发送方发送分组后,等待接收方接受分组,接收方接受分组后,检测数据是否发生了误码。

如果没发生误码,则接受分组并发送确认分组ACK给发送方,发送方收到确认分组后继续下一个分组的传送;

如果发生了误码,则丢弃该分组并发送否认分组NAK给发送方,发送方收到否认分组后对该分组进行重传。

因此发送方发送完分组后并不能立刻从缓存中删除该分组,而需要收到确认分组后才能从缓存中删除该分组。

image-20210530164543868

(2)超时重传:

发送方发送的分组可能在传输过程中丢失了,导致接收方一直接收不到该分组,也就不会发送确认分组或者否认分组给发送方,这样会导致发送方一直处于等待的状态,为了解决这个问题,可以在发送方发送完一个数据分组后,启动一个超时计时器到了设置的重传时间而发送方并没有接受到ACK或NAK,则重传该分组。

这个重传时间一般设置为略大于从发送方到接收方的平均往返时间。

image-20210530165433617

(3)确认丢失:

如果接收方发送的确认分组或者否认分组在传输过程中丢失了,则会导致发送方的超时重传,这时接收方会收到重复的分组。

为了避免分组重复这种传输错误,发送方发送分组之前必须给每个分组带上序号。

对于停止等待协议,由于停止等待这种特性,只需要保证每次发送的分组序号与上一次发送的分组序号不同即可,因此只需要一个比特来编号就够了,即序号0和序号1。

当接收方发现该分组是重复的,则丢弃,同时给发送方发送一个确认分组,以免发送方对该分组的再次超时重传。

image-20210530170513623

(4)确认迟到:

接收方接受到发送方的分组0后发送确认分组,但是因为某些原因,这个确认分组迟到了,导致发送方进行超时重传分组0,此时发送方收到了迟到的确认分组,于是就发送下一个分组1,而接收方这边收到了重传的分组0后会进行丢弃并发送一个确认分组,而这个确认分组会让发送方以为是对分组1的确认回应。

所以,为了解决这种问题,确认分组也同样需要进行编号。

image-20210530171513396

对于数据链路层的点对点信道,往返时间比较固定,不会出现确认迟到的问题,因此,只在数据链路层实现停止等待协议,可以不用给确认分组编号。

注意事项:

image-20210530172010554

(5)停止等待协议的信道利用率:

image-20210530172525378

TD:发送方发送数据分组的发送时延。

RTT:收发双方之间的往返时间。

TA:接收方发送确认分组的发送时延。

image-20210530173038207

当往返时延RTT远大于数据帧发送时延TD时(例如使用卫星链路),信道利用率会非常低。

若出现重传,则对于有用信息来说,信道利用率会更低。

为了克服停止等待协议信道利用率低的缺点,于是产生了另外两种协议:回退N帧协议和选择重传协议。

练习题:

image-20210530173934457 image-20210530174243569

3.4.3可靠传输的实现机制——回退N帧协议GBN

在相同时间内,采用停止等待协议只能发送一个分组,而采用流水线传输可以发送多个分组。

image-20201012190027828

回退N帧协议在流水线传输的基础上,利用发送窗口来限制发送方可连续发送分组的个数。

image-20210530201853476

(1)无差错情况:

发送方的发送窗口中的0到4号数据分组,正确传输到了接收方,也就是没有出现乱序和误码,接收方按序接受他们,每接受一个,接收窗口就向前滑动一个位置,并给发送方发送针对已接收分组的确认分组,发送方每接收到一个确认分组,发送窗口就向前滑动一个位置,这样就有新的序号落入发送窗口,发送方可以将收到确认的分组从缓存删除,而接收方可以择机将以接受的数据分组交付上层。

累积确认:接收方不一定要对接受到的分组逐个发送确认分组,而是可以在收到几个数据分组后(由具体实现决定)对按序到达的最后一个分组发送确认。

举例:发送方发送0到4号数据分组,经过传输线路正确到达接收方,接收方接受到0和1后发送ACK1确认分组,接受到2,3,4后发送ACK4确认分组,如果ACK1在传输过程中丢失了,发送方只接受到ACK4,发送方就可以确定序号为4及之前的数据分组已被正确接受了,于是发送窗口向前移动5个位置。

所以即使确认分组丢失,发送方也可能不必重传。

累积确认的优点:可以减少接收方的开销,减少网络资源的占用等;

缺点:不能像发送方及时反映出接收方已经正确接受分组的信息。

(2)有差错情况:

image-20210530203911483

发送方发送了序号为5,67,0,1的数据分组,在发送过程中5号分组发生了误码,接收方通过检错码发现了错误,于是会丢弃该分组,而后续到达的分组序号和接收窗口中的序号不一致,于是同样被丢弃,并对之前按序接受的最后一个分组进行确认也就是发送ACK4,每丢弃一个数据分组,就发送一个ACK4,接收方接受到ACK4后,就知道了之前发送的分组出现了错误,于是可以不等超时计时器超时就立即重传。

至于收到几个重复确认就立刻重传,由具体实现决定。

image-20210530204821818

在本例中,假设发送方收到4个重复确认分组后并不会触发重传,当超时计时器到达规定时间后,发送方会将窗口中的分组重新发送,尽管序号为6,7,0,1的分组都正确到达过了接收方,但是因为序号为5号的分组误码不被接受,导致它们也受到牵连而不被接受,发送方还要重传这些分组,这就是所谓的Go-back-N(回退N帧)。

可见,当通信线路质量不好时,回退N帧协议的信道利用率并不比停止等待协议高。

(3)当发送窗口的尺寸WT超过取值范围的上限

将WT超过取值范围上限,将WT取值为8

image-20210530205742458

发送方将0到7的数据分组经过传输线路正确发送到接收方,接收方接受后发送确认分组ACK7,但是ACK7在发送过程中丢失了,这会触发发送方的超时重传机制,发送方重新发送该0到7号分组,此时接收方无法分辨这是新分组还是旧分组,进而产生分组重复这种传输差错。
image-20210530210224827

因此发送窗口的尺寸不能超过其上限。

回退N帧协议在流水线传输的基础上利用发送窗口来限制连续发送分组的数量,是一种连续ARQ协议。

在协议的工作过程中,发送窗口和接受窗口不断向前移动,故此类协议又称为滑动窗口协议。

小结:

image-20201012202222138

练习:

image-20210530211234933

3.4.4 可靠传输的实现机制——选择重传协议SR

回退N帧协议的接收窗口WR尺寸只为1,因此接收方只能按序接受正确到达的数据分组,一个数据分组的误码就会导致后续多个数据分组的超时重发,显然这是对通信资源的极大浪费。

为了进一步提高性能,可设法只重传出现误码的数据分组。因此,接收方接收窗口的尺寸WR应该大于1,以便接收方先收下失序到达但无误码并且序号落在接收窗口内的那些数据分组,等到所缺分组收齐后再一同交付给上层,这就是选择重传协议

注意:选择重传协议为了使发送方仅重传发生误码的数据分组,接收方不能再使用累积确认,而需要对每个正确接受到的分组进行逐一确认

(1)选择重传协议的工作原理:

image-20210530222002057

发送方发送0到3号分组,但2号分组在传输过程中丢失了,0,1,3分组正确抵达接收方,接收方接收0号和1号分组,并发送0号和1号确认分组,接收窗口向前滑动两个位置,接收方接受3号分组,并发送3号确认分组,但接收窗口并不能向前滑动,因为3号数据分组是未按序到达的数据分组。

image-20210530222718503

发送方每收到一份确认分组,发送窗口就向前滑动一个位置。发送方接受0号和1号确认分组,发送窗口向前滑动两个位置,发送方收到3号确认分组后,记录3号数据分组已收到确认,这样数据分组就不会超时重发了。发送方发送4号和5号数据分组,接收方接受后发送确认分组,发送方接受到确认分组后,记录4号和5号已经收到确认。当2号分组的超时计时器到达时间后,发送方会进行超时重传,接收方接受2号分组,并发送确认分组,此时接收窗口可以向前滑动4个位置;发送方接受确认分组,此时发送窗口可以向前滑动4个位置。

image-20210530223105319

image-20210530223921359

(2)发送窗口和接受窗口的尺寸问题:

image-20210530224156353

如果窗口尺寸超过取值范围会怎样?

image-20210530224513291

将发送窗口和接收窗口的尺寸设置为超过总序号数的一半,这里设置为5。

发送方发送0,1,2,3,4数据分组,接收方接收到分组后逐一发送确认分组,但在传输过程中0号去人分组丢失了,这会导致发送方对0号分组进行超时重传。

image-20210530224921101

接收方无法辨别该0号分组是新分组还是旧分组,如果还要接受,就会发生分组重复的传输差错。

所以发送窗口和接收窗口的尺寸只能是总序号数的一半。

小结:

image-20201012205133924

3.5点对点协议PPP

点对点协议PPP(Point-to-Point Protocol)是目前使用最广泛的点对点数据链路层协议。

用户想要接入到因特网,需要先通过连接到某个因特网服务提供着ISP,才能接入因特网。

这些ISP已经从因特网管理机构申请到了一批IP地址,用户计算机只有获取到ISP分配的合法IP地址后,才能成为因特网上的主机。

用户计算机和ISP进行通信时,所使用的数据链路层协议通常就是PPP协议。

在1999年公布的在以太网上运行的PPP协议,即PPP over Ethernet,简称PPPoE。

image-20210531000017038

PPP协议是因特网工程任务组IETF在1992年制定的,经过1993年和1994年的修订,现在的PPP协议已成为了因特网的正式标准[RFC1661,RFC1662]。、

PPP协议的组成部分:

PPP协议为在点对点链路上传输各种协议数据报提供了一个标准方法,主要由以下三部分组成:

  • 对各种协议数据报的封装方法(封转成帧)

  • 链路控制协议LCP:用于建立、配置以及测试数据链路的连接

  • 一套网络控制协议NCPs:其中的每一个协议支持不同的网络层协议

    image-20210531001011719

PPP协议的帧格式:

image-20201012211826281

PPP协议的透明传输:

(1)面向字节的异步链路:字节填充法(插入“转义字符”)

image-20201012212148803

(2)面向比特的同步链路:比特填充法(插入“比特0”)

image-20201012212255550

差错检测:

image-20201012212558654

使用PPP协议的数据链路层向上不提供可靠传输。

工作状态:

image-20201012213021860

可见,PPP协议已不是纯粹的数据链路层协议,它还包括物理层和网络层的内容。

3.6媒体接入控制

为了使数据链路层更好地适应多种局域网标准,IEEE 802委员会将局域网的数据链路层拆成两个子层:

  1. 逻辑链路控制 LLC(Logical Link Control)子层
  2. 媒体接入控制 MAC(Medium Access Control)子层

与接入到传输媒体有关的内容都放在了MAC子层,而LLC子层则与传输媒体无关。

不管采用何种协议的局域网,对LLC子层来说都是透明的。

image-20201013201133903

3.6.1媒体接入控制的基本概念

若多个设备在共享信道上同时发送信息,信号会在共享媒体上发生碰撞,使得信息发送失败。

image-20210531191752119

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

image-20201013152453425

随着技术的发展,交换技术的成熟和成本的降低,具有更高性能的使用点对点链路和链路层交换机的交换式局域网在有线领域已完全取代了共享式局域网,但由于无线信道的广播天性,无线局域网仍然使用的是共享媒体技术。

3.6.2媒体接入控制——静态划分信道

信道复用:

复用(Multiplexing):通过一条物理线路同时传输多路用户的信号。

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

image-20210531200100957

如果在发送方使用复用器,在接收方使用分用器,就可以实现多个用户在同一条物理线路上通信。

常见的信道复用技术:

  • 频分复用FDM
  • 时分复用TDM
  • 波分复用WDM
  • 码分复用CDM

(1)频分复用FDM:

image-20210531201612211

将传输线路的频带资源划分成多个子频带,形成多个子信道,各子信道之间需要留出隔离频带,以免造成子信道间的干扰。

当多路信号输入到一个多路复用器时,这个复用器将每一路信号调制到不同频率的载波上,接收端由相应的分用器通过滤波将各路信号分开,将合成的复用信号恢复成原始的多路信号。

频分复用的所有用户同时占用不同的频带资源并行通信。

(2)时分复用TDM:

image-20210531201542553

时分复用技术将传输线路上的带宽资源按时隙轮流分配给不同的用户,每对用户只在所分配的时隙中使用线路传输数据。

时分复用技术将时间划分成了一段段等长的时分复用帧,每一个时分复用的用户在每一个时分复用帧中占用固定序号的时隙。

时分复用的所有用户在不同时间内占用同样的频带宽度。

(3)波分复用WDM:

image-20210531202149379

波分复用就是光的频分复用。

如上图所示,这是8路传输速率均为2.5Gb/s的光载波,其波长均为1310nm。经光调制器调制后,分别将波长变换到1550-1561.2nm,每个光载波相隔1.6nm,这8个波长很接近的光载波经过光复用器(或称合波器),在同一根光纤上传输,因此数据传输总速率为8*2.5Gb/s = 20G/s。

光信号传输一段距离后会衰减,因此需要放大器进行放大才能继续传输,如图中的掺铒光纤放大器。

(4)码分复用CDM:

由于该技术主要用于多址接入,人们更常用的名词是码分多址CDMA(Code Division Multiple Access)。

频分复用FDM和时分复用TDM同样可用于多址接入,相应的名词是频分多址FDMA和时分多址TDMA。

复用和多址:

image-20210531204554072

复用是针对传输线路来说的,多址是针对用户来说的。

多址一定复用,复用不一定为了多址。

与频分复用和时分复用不同,码分复用的每一个用户可以在同样时间内占用相同的频带资源进行通信。

由于各用户使用经过特殊挑选的不同码型,因此各用户之间不会造成干扰。

码分复用最初使用于军事通信,因为这种系统所发送的信号具有很强的抗干扰能力,其频谱类似于白噪声,不易被敌人发现。

随着技术的进步,CDMA设备价格和体积都大幅下降,因此已广泛应用在了民用的移动通信中。

码片:

在CDMA中,每一个比特时间再划分为m个短的间隔,称为码片(Chip)。通常是m的值是64或128。

为了简单起见,这里的举例假设m为8。

使用CDMA的每一站被指派一个唯一的 m bit 码片序列(Chip Sequence)。

  • 一个站如果要发送比特1,则发送它自己的 m bit 码片序列。

  • 一个站如果要发送比特0,则发送它自己的 m bit 码片序列的二进制反码。

image-20210531210903243

这种通信方式称为直接序列扩频DSSS。

码片序列的挑选原则如下:

  1. 分配给每个站的码片序列必须各不相同,实际常采用伪随机码序列。
  2. 分配给每个站的码片序列必须相互正交,即规格化内积为0。

image-20210531212421922

image-20210531212849737

码分多址的应用举例:

image-20210531213244947

练习题:

image-20210531223536390

解析:

image-20210531223655487

结果为1,所以A发送的是比特1。

image-20210531223737807

结果为-1,所以B发送的是比特0。

image-20210531223813910

结果为0,所以C没有发送比特数据。

image-20210531223913879

结果为1,所以D站发送比特1。

image-20210531224015294

解析:

image-20210531224332724

3.6.3媒体接入控制——动态接入控制

  • 以太网是一种局域网技术,以前的以太网是总线型结构,现如今以太网是通过交换机来实现网络连接,所以变成了星型结构。

但在逻辑上,以太网仍然采用总线型拓扑和CSMA/CD的总线技术。

(1)随机接入——CSMA/CD协议

基本概念:
image-20201013211620687

多址接入MA:多个站点连接在同一总线上,竞争使用总线。

载波监听CS:每一个站点在发送帧时先检测总线上是否有其他站点在发送帧。

  • 若检测到总线空闲96比特时间,则发送这个帧。
  • 若检测到总线忙,则继续检测并等待总线转为96比特空闲时间,然后发送这个帧。

96比特时间是指发送96比特时间所耗费的时间,也称为帧间最小间隔。

碰撞检测:每一个正在发送帧的站点边发送边检测碰撞,如果检测到碰撞,则停止发送。

以太网还采取一种叫做强化碰撞的措施,当发送帧的站点一旦检测到了碰撞,除了立即停止发送帧,还要再发送32比特或者48比特的人为干扰信号,以便有足够多的碰撞信号使所有站点都能检测到碰撞。

争用期:

image-20210601211513664

image-20210601211604129

发送方经过争用期还没检测到碰撞,才能肯定这次发送没有发生碰撞。

在以太网中发送帧的主机越多,端到端往返传播时延越大,发生碰撞的概率就越大。因此,共享式以太网不能连接太多的主机,使用的总线也不能太长。

10Mb/s以太网把争用期规定为512比特发送时间,即51.2us,因此其总线长度不能超过5120m,但还要考虑其他一些因素,如信号衰减等,以太网规定总线长度不能超过2500m

最小帧长:

image-20210602000947266

假设主机A给主机D发送一个很短的帧,边发送边检测碰撞,主机A很快就将该帧发送完毕了,之后就不再对该帧进行碰撞检测,在该帧的传输过程中,主机C也要发送帧,主机C检测到总线上96比特空闲时间后立即发送帧, 尽管总线上实际并不空闲,导致和主机A的帧碰撞,主机D会收到主机A发送的,并遭遇碰撞的帧,丢弃该帧,但对于主机A而言,它并不知道已发送完毕的帧发生了碰撞,不会重发该帧。

使用CSMA/CD协议的以太网的帧长不能太短。

以太网规定最小帧长为64字节,即512比特,512比特时间为争用期。

  • 如果要发送的数据非常少,则需要加入一些填充字节,使帧长不小于64字节。

以太网的最小帧长确保了主机可在帧发送之前就检测该帧在发送过程中是否发生了碰撞。

  • 如果在争用期内(共发送64字节)没有发生碰撞,则后续发送的数据就一定不会发生碰撞。
  • 如果在争用期内发生了碰撞,则立即终止发送,这时已经发送的数据一定小于64字节,因此凡是小于64字节的帧都是因为碰撞而异常终止的无效帧,接收方进行丢弃。
最大帧长:
image-20210602001051373

如果帧很长,会导致发送方一直占用总线资源,其他主机即使有帧要发送也没有办法,另外,由于帧很长,可能导致接收方的缓冲区无法装下该帧而溢出。因此帧的最大长度应该有限制。

image-20210601231720786

例如上图,以太网版本2的MAC帧数据载荷字段最大为1500字节,加上首部和尾部18个字节,帧最大长度为1518字节。数据载荷字段最小长度为46字节,加上首部和尾部18字节,帧最短长度为64字节。

image-20210601231950049

上图也同样如此

退避时间的计算方法:

截断二进制指数退避算法:

image-20210602000833474

若连续发生碰撞,就表明有比较多的主机参与竞争信道,上述算法可使重传需要推迟的平均时间随着重传次数而增大,因而减少碰撞概率。

当重传次数多达16次仍不成功时,表明同时打算发送帧的主机太多,以至于连续发生碰撞,则丢弃该帧,并向高层汇报。

信道利用率:

image-20210602001440670

因此发送一个帧的平均时间为 = 多个争用期 + 一个帧的发送实验T0 + 单程端到端的传播时延t。

考虑以下的理想情况:

  • 各主机发送帧都不会发生碰撞。
  • 总线一旦空闲就有主机发送帧。

所以发送一帧所需要的时间为 T0+t,而一帧发送时延为T0,所以

image-20210602002008649

为了提高信道利用率,a的值应尽量小,则、

  • t 的值应该尽量小,说明以太网端到端的距离应该收到限制,不应太长;
  • T0的值应该尽量大,说明以太网的帧长应尽量大一些,不过上面也有说到,帧太长也是不好的。
帧发送流程:

image-20210602002525167

帧接受流程:

image-20210602002630132

练习题:

image-20210602003609977

(2)随机接入——CSMA/CA协议

总线局域网使用的协议:CSMA/CD

无线局域网使用的协议:CSMA/CA

基本概念:

载波监听多点接入/碰撞避免:

为什么在无线局域网不能使用CSMA/CD呢?

答:在无线局域网中,仍然可以使用载波监听和多址接入CSMA,但是不能使用碰撞检测,原因如下:

  • 由于无线信道的传输条件特殊,其信号强度动态范围很大,无线网卡上接受到的信号强度往往会远小于发送信号的强度(可能相差百万倍)。如果要在无线信道上实现碰撞检测,对硬件的要求非常高
  • 由于无线电波传播的特殊性,存在隐蔽站问题,进行碰撞检测的意义也不大。

因此,802.11无线局域网使用CSMA/CA协议,实现碰撞避免功能,而不再实现碰撞检测功能。

由于不可能避开所有的碰撞,并且无线信道误码率较高,802.11标准**还实现了数据链路层的确认机制(停止等待协议)**来保证数据的正确性。

802.11的MAC层标准定义了两种不同的媒体接入控制方式:

  • 分布式协调功能DCF:在DCF方式下,没有中心控制站点,每个站点使用CSMA/CA协议标准通过争用信道来获取发送权,这是802.11的默认方式。
  • 点协调功能PCF:PCF方式使用集中控制的接入算法,是802.11的可选方式,但在实际中较少使用。
帧间间隔IFS(InterFrame Space):

802.11标准规定,所有的站点必须持续检测信道空闲一段指定时间后才能发送帧,这段时间叫做帧间间隔。

帧间间隔的长短取决于要发送帧的优先级

  • 高优先级的帧需要等待的时间较短,因此可优先获得发送权。
  • 低优先级的帧需要等待的时间较长。

常用的两种帧间间隔

  • 短帧间间隔SIFS:长度为28us,是最短的时间间隔,用来分隔开属于一次对话的各帧。一个站点应该能够在这段时间从发送方式切换到接受方式。使用SIFS的帧类型有ACK帧,CTS帧、由过长而分片的数据帧、以及所有回答AP探询的帧和在PCF方式中接入点AP发送出的任何帧。
  • DCF帧间间隔DIFS:长度为128us,比短帧帧间间隔SIFS长,在DCF方式中用来发送和管理数据帧。
工作原理:

image-20210603215150279

发送方检测到信道空闲,则经过DIFS间隔时间后,发送第一帧,接收方在接受到数据后,经过SIFS间隔时间后发送ACK确认帧。

思考:为什么发送方在检测到信道空闲后,还要等待帧间间隔DIFS后才发送数据帧?

答:这是考虑到可能有其它站有高优先级的帧要发送。若有,则让高优先级的帧先发送。

思考:为什么接收方在正确接受数据帧后还要等帧间间隔SIFS后才能发送确认帧?

答:SIFS是用来分割一次对话的各帧,发送方在这段时间内从发送方式切换成接受方式。

image-20210603223810502

当信道由忙状态转换成空闲状态,并经过帧间间隔DIFS后,其他要发送数据的无线站点,需要退避一段随机时间后才能发送。

思考:信道由忙转成空闲且经过帧间间隔DIFS后,为什么还要退避一段随机事件,才能发送数据?

答:防止多个站点同时发送数据而产生碰撞。

那么什么时候使用退避算法?

  • 在发送完数据帧之前检测到信道忙
  • 在每一次重传数据帧时
  • 在每一次发送成功后要连续发送下一帧时(这是避免一个站点长时间占用一个信道)

换句话说:当一个站点检测到信道是空闲状态,且所发送的数据帧并不是发送完一帧后连续发送的数据帧,那么是不需要使用退避算法的。

退避算法:

在执行退避算法时,站点为退避计时器设置一个随机时间

  • 当退避计时器的时间减少到零后,开始发送数据
  • 当退避计时器的时间还没减少到零,此时检测到信道由空闲状态变为忙状态,则冻结退避计时器的时间,重新等待信道变为空闲状态,并且经过DIFS间隔后,重新启动退避计时器。

在进行第i次退避时,退避时间在时隙编号{0,1……,22+i-1}中随机选择一个,然后乘于基本退避时间(也就是一个时隙的长度),就可以得到随机退避时间。这样做是为了是不同站点选择相同退避时间的概率减少。达到第6次退避次数后,就不再增加了。

image-20210603225359546

信道预约和虚拟载波监听:
  1. 信道预约:

image-20210603232431476

为了尽可能减少碰撞的概率和降低碰撞的影响,802.11标准允许要发送数据的站点对信道进行预约

(1)源站在发送数据帧之前先发送一个短的控制帧,称为请求发送RTS(Request To Send),它包括源地址,目的地址,以及这次通信所需要的持续时间。

(2)若目的站正确接受了源站发送RTS帧,且媒体空闲,则发送一个响应控制帧,称为允许发送CTS(Clear To Send),它也包括了这次通信所需要的时间(从RTS帧中将此持续时间复制到CTS中)。

(3)源站收到CTS帧后,再等待一个帧间间隔SIFS后,就可以发送数据。

(4)目的站正确收到源站发送的数据帧后,再等待时间SIFS后,就向源站发送确认帧ACK。

除目的站和源站以外的其他站点,再收到CTS帧后,就推迟接入到无线局域网中,这样就保证了源站和目的站之间的通信不会收到其它站的干扰。

如果RTS帧发生碰撞,源站接收不到CTS帧,需执行退避算法重传RTS帧。

由于RTS帧和CTS帧很短,发送碰撞的概率,碰撞产生的开销,以及本身的开销都很少。

而对于一般的数据帧,其发送时延往往大于传播时延,碰撞的概率很大,且一旦碰撞后需要重传数据帧,则浪费的时间和资源更多,因此用很少的代价对信道进行预约是值得的,

802.11标准规定了3中情况供用户选择:

  • 使用RTS帧和CTS帧
  • 不适用RTS帧和CTS帧
  • 只有当数据帧的长度超过某一数值时,才使用RTS帧和CTS帧
  1. 虚拟载波监听:

除了RTS帧和CTS帧会携带通信所需要的时间,数据帧也会携带通信需要的时间,这称为802.11的虚拟载波监听机制。

由于利用虚拟载波监听机制,其他站点只需要监听RTS帧,CTS帧,或数据帧中任何一个,就能知道信道被占用的时间,而不需要真正监听到信道上的信号,因此虚拟载波监听机制能减少隐蔽站带来的碰撞问题。

image-20210603233820484 image-20210603233844487

练习题:

image-20210603234308971 image-20210603234500720

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

  • MAC地址是以太网的MAC子层所使用的地址,属于数据链路层
  • IP地址是TCP/IP体系结构网际层使用的地址,属于网际层
  • ARP协议可以通过设备分配到的IP地址获取到其MAC地址,属于网际层

MAC地址

1. 基本介绍:

image-20210604001716590 image-20210604002055581

共享信道中每个主机发送的帧必须携带标识发送主机和接受主机的地址,称为MAC地址。

MAC地址一般被固化在网卡(网络适配器)的电可擦可编程只读存储器EEPROM中,因此MAC地址也被称为硬件地址。

image-20210604002405162

一般情况下,用户主机会包含两个网络适配器:有线局域网适配器(有线网卡),无线局域网适配器(无线网卡)。

每个网络适配器都拥有一个全球唯一的MAC地址,而交换机和路由器往往拥有很多网络接口,所以拥有很多MAC地址。

所以,严格来说,MAC地址是对网络各接口的唯一标识,而不是对网络上各设备的唯一标识。

2. IEEE 802局域网的MAC地址格式:

image-20210604183029045

共有48个比特,分为6个字节。

当b0取0时,表示该地址是单播地址,取1时,表示该地址是多播地址,也称为组播地址。

当b1取0时,表示该地址是全球管理的,即全球唯一的,取1时,表示该地址是本地管理的。

image-20210604184145979

3. IEEE 802局域网的MAC地址发送顺序:

image-20210604184519178

字节发送顺序:第一字节 —> 第六字节

字节内比特发送顺序: b0 —> b7

4. 单播MAC地址、多播MAC地址和广播MAC地址:

(1)单播MAC地址:

image-20210604185425500

主机A的网卡发现该单播帧的目的MAC地址不是自己的MAC地址,丢弃。

主机C的网卡发现该单播帧的目的MAC地址和自己的MAC地址匹配,接受并交由上层处理。

(2)广播MAC地址:

image-20210604185717443

主机A和主机C发现是广播帧,都接受并交由上层处理。

(3)多播MAC地址:

image-20210604190600969

给主机配置多播组列表时不得使用共有的标准多播地址。

IP地址

1.基本介绍:

image-20201015104441580

2.数据报转发过程中IP地址和MAC地址的变化:

image-20210605000041432

数据包转发过程中源IP地址和目的IP地址不会发生变化。

数据包转发过程中源MAC地址和目的MAC地址逐个链路或者逐个网络发生变化。

image-20201015105619301

如何从IP地址找出对应的MAC地址,需要用到ARP协议。

ARP协议

地址解析协议 ARP协议

image-20201015114052206

当主机B要给主机C发送数据包时,会现在自己的ARP高速缓存表中查找是否有主机CIP地址对应的MAC地址,但没有找到,此时主机B会发送一个ARP请求报文(广播),来获取主机C的MAC地址。

image-20210605001838702

总线上的所有主机都能收到该广播帧,主机A的网卡收到该广播帧后,交由上层处理,上层的ARP进程解析ARP请求报文,发现询问的IP地址不是自己的IP地址,不予理会。

image-20201015114811501

主机C收到后交由上层处理,发现询问的IP地址是自己的IP地址,首先将请求报文中所携带的主机B的IP地址与MAC地址记录到自己的ARP高速缓存表中,然后发送ARP响应报文(单播)

这样主机B收到ARP响应报文后更新ARP高速缓存表,然后就可以发送数据了。

表中每一条记录都有其类型,分为动态类型和静态类型:

  • 动态类型:主机自动获取到的,生命周期为两分钟,当生命周期结束时,该记录自动删除。
  • 静态类型:用户或网络维护人员手工配置的。不同操作系统下的声明周期不同。

ARP协议只能在一段链路或者一个网络上使用,不能跨网络。

3.8集线器和交换机的区别

1.集线器

image-20201015144628691

  • 传统以太网使用粗同轴电缆,后来演进使用细同轴电缆,最后发展为使用双绞线。

  • 使用集线器的以太网在逻辑上仍然是总线结构,仍使用CSMA/CD协议来协调各主机,只能工作在半双工通信中,收发帧不能同时进行。

使用集线器在物理层拓展以太网:

image-20210605154643851

2.交换机

image-20210605155613930

某台主机发送单播帧时,交换机会将该单播帧发送给目的主机,而不是网络上所有主机。

交换机通常有多个接口,每个接口都可以和一台主机或另一台交换机直接相连,一般都工作在全双工方式。

交换机具有并行性,能同时连通多对接口,使多对主机能同时通信,无碰撞,不使用CSMA/CD协议。

交换机一般都具有多种速率的接口,例如:10Mb/s,100Mb/s,1Gb/s,10Gb/s接口的多种组合。

交换机收到帧后,在帧交换表中查找帧的目的MAC地址对应的接口号,然后通过该接口转发帧。

交换机是一种即插即用的设备,其内部的帧交换表是通过自学习算法自动建立起来的。

交换机对帧的两种转发方式:

  • 存储转发
  • 直通交换:采用基于硬件的交叉矩阵(交换时延非常小,但不检查帧是否有差错)

3. 对比集线器和交换机

前提条件:

  1. 忽略ARP过程
  2. 假设交换机的帧交换表已学习好了

(1)对于单播来说:

image-20210605165652623 image-20210605165720666

  • 集线器:单播帧会发送到网络上其他各主机,各主机的网卡进行辨别。
  • 交换机:交换机收到单播帧后,根据帧交换表和目的MAC地址,将单播帧转发给目的主机。
  • 总结:有区别

(2)对于广播帧来说:

image-20210605165752747 image-20210605165805394

  • 集线器:广播帧会发送到网络上的各主机,各主机的网卡检测到是广播帧后收下。
  • 交换机:交换机收到广播帧后,检测到是广播帧,于是从该帧进入的接口外的其他接口进行转发。
  • 总结:无区别

(3)多台主机同时向一台主机发送单播帧的情况:

image-20210605165853002 image-20210605165913072

  • 集线器:因为同时发送,所以会发生碰撞,遭遇碰撞的帧会传播到总线上的各主机。
  • 交换机:交换机收到多个帧时,会将它们缓存起来,然后逐个转发给目的主机,不会产生碰撞。

(4)使用集线器扩展以太网和使用交换机扩展以太网的区别:

单播:

image-20201015155408692

广播:

image-20201015155440402 image-20201015155706698
  • 集线器:广播域增加了,碰撞域也增加了
  • 交换机可以隔离碰撞域

4.总结

image-20201015160146482

工作在数据链路层的以太网交换机,其性能远远超过工作在物理层的集线器,而且价格并不贵,这就使得集线器逐渐被市场淘汰

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

1.自学习和转发帧的例子:

以下例子假设各主机知道网络中其他主机的MAC地址(无需进行ARP)

A —> B

image-20201015161458528

  1. A向B发送一帧,该帧从接口1进入交换机1

  2. 交换机1将该帧的源MAC地址写入帧交换表中,查找帧交换表是否有目的MAC地址的记录

  3. 没有查到,将该帧向除了接口1外的所有接口进行广播

  4. 主机C检测到目的MAC地址不是自身地址,丢弃。主机B检测目的MAC地址是自身地址,接受

  5. 该帧从接口4转发到交换机2的接口2,交换机2将该帧的源MAC地址A写入帧交换表中,查找帧交换表是否有目的MAC地址的记录

  6. 没有查到,将该帧向除了接口2外的所有接口进行广播

  7. 主机D,E,F检测到目的MAC地址不是自身地址,丢弃

B —> A

image-20201015162310922

  1. 主机B发出的单播帧从接口3进入交换机1

  2. 交换机1将源MAC地址B和对应接口3记录到帧交换表中,查找帧交换表是否有目的主机的记录

  3. 找到,直接从接口1转发该帧

E —> A

image-20201015162622462

  1. E发出的单播帧从接口3进入交换机2,

  2. 交换机2将源MAC地址E和对应的接口3记录到帧交换表中,查找帧交换表中是否有目的主机的记录。

  3. 找到,交换机2将该帧从接口2转发到交换机1的接口4

  4. 交换机1将源MAC地址记录E和相应的接口4到帧交换表中,查找帧交换表中是否有目的主机的记录

  5. 找到,交换机1将该帧从接口1转发

G —> A

主机A和主机G用集线器连接,共享一条总线

image-20201015163157140

  1. 主机G发送数据帧,主机A和交换机1的接口1均能收到

  2. 主机A收到后检测目的MAC地址是自身地址,接收。

  3. 数据帧从接口1进入交换机1,交换机查找帧交换表中是否有目的主机的记录

  4. 找到,但是发现转发接口是该帧进入的接口,于是丢弃该帧。

帧交换表中每条记录都有其有效时间,到期后自动删除,这是因为MAC地址和接口的对应关系并不是永久性的。例如交换机的借口更换了主机,或者主机更换了网卡,均会导致记录失效。

2.总结:

image-20201015170656500

image-20201015170739679

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

1.如何提高以太网的可靠性

image-20210605203758537

如图,当AB中间的链路发生故障时,AB之间就无法进行通信了。所以需要通过添加冗余链路来提高以太网的可靠性。

image-20201015171515481

如图,在BC之间添加了一条链路。但是,添加冗余链路会带来一些问题——形成网络环路

网络环路会带来一些问题:

  • 广播风暴:数据帧一直在网络中转发,大量消耗网络资源,使得网络无法正常转发其他数据帧。

  • 主机收到重复的广播帧:大量消耗主机资源

  • 交换机的帧交换表震荡(漂移):广播风暴过程中,交换机上的帧交换表里的数据不断刷新。

image-20210605222216758

2.生成树协议解决环路问题

为了能够在增加冗余链路提高网络可靠性的同时避免网络环路带来的影响,以太网交换机使用生成树协议。

不管交换机之间采用怎样的物理连接,交换机都能够自动计算并构建一个逻辑上没有回路的网络,即其逻辑拓扑结构是树形的。

最终的树形逻辑结构必须确保能够连通整个网络。

image-20210605223248525

3.11虚拟局域网

1.虚拟局域网VLAN的概述

随着交换式以太网规模的扩大,广播域也相应扩大,巨大的广播域会带来很多弊端:

  • 广播风暴
  • 难以管理和维护
  • 潜在的安全问题

TCP/IP协议栈中很多协议会使用广播:

  • 地址解析协议ARP
  • 路由信息协议RIP
  • 动态主机配置协议DHCP

分割广播域的方法:

  • 使用路由器可以隔离广播域

    • 路由器默认情况下不对广播数据包进行转发
    • 但是路由器很贵,使用路由器来隔离不现实
  • 虚拟局域网VALN技术:

    • 将局域网内的设备划分成与物理位置无关的逻辑组的技术,这些逻辑组有着共同的需求。

    image-20210605224720717

2.虚拟局域网VLAN的实现机制

首先需要交换机能实现以下两个功能:

  • 能够处理带有VLAN标记的帧,也叫IEEE 802.1Q帧。
  • 交换机的各端口能够支持不同的端口类型,不同的端口类型对帧的处理方式不同。

(1)IEEE 802.1Q帧 :

  • 也叫 Dot One Q帧,它对以太网的MAC帧进行了扩展,插入了4字节的VLAN标记。

  • VLAN标记的最后12个比特称为VLAN标识符VID,它唯一标志了以太网帧属于哪一个VLAN。

  • VID的取值是0-4095(0-212-1),其中0和4095不用来表示VLAN

  • 802.1 Q帧是交换机来处理的,而不是主机来处理的。

    • 当交换机收到普通的以太网帧时,会将其插入4字节的VLAN标记转换为802.1 Q帧,简称”打标签“
    • 当交换机转发802.1Q帧时,可能会删除其4字节的VALN标记转换为普通以太网帧,简称”去标签“

image-20210605225413940

(2)交换机的端口类型:

交换机的端口类型有三种:

  • Access
  • Trunk
  • Hybrid:

思科交换机没有Hybrid端口,

交换机各端口的缺省VLAN ID:

  • 在思科交换机上称为Native VLAN,即本征VALN,在默认情况下默认属于VLAN1
  • 在华为交换机上称为Port VALN ID,即端口VALN ID,简称PVID。

交换机上的每个端口有且只有一个PVID。

Access端口:

  • Access端口一般用于连接用户计算机

  • Access端口只能属于一个VLAN,也就是只能接受和发送一个同VALN的帧

  • Access端口的PVID值和端口所属的VLAN ID 值相同(默认为1)

  • Access端口接收处理方法:

    • 一般只接受”未处理“的普通以太网MAC帧,根据接受该帧的端口的PVID值,给帧打上标签,即插入4字节的VLAN标记字段,字段中的VID值和该端口的PVID值相同。
  • Access端口发送处理方法:

    • 若帧中的VID值和该端口的PVID值相等,则”去标签“并转发该帧,否则不转发。
    image-20210605232105821

    划分虚拟局域网后:

image-20210605233408625

Trunk端口:

  • Trunk端口一般用于交换机之间或交换机与路由器之间的互连。
  • Trunk端口可以属于多个VLAN,也就是会可以发送和接受多个VLAN的帧
  • 用户可以设置Trunk端口的PVID值,默认情况下PVID值为1
  • Trunk端口发送处理方法:
    • 对于VID等于PVID的帧:”去标签“再转发
    • 对于VID不等于PVID的帧:直接转发
  • Trunk端口接受处理方法:
    • 对于”未打标签“的帧,根据接受该帧的端口的PVID值给帧“打标签”
    • 对于“已打标签“的帧,接收

A发广播:

image-20210605234914957

C发广播:

image-20210605235237356

练习题:

image-20201015210417695

华为特有的Hybrid端口:

image-20210606001744495 image-20210606002636750

A ----> C:

image-20210606002623469

B —> C:

image-20210606003001758

A ----> B

image-20210606003446064

同理从B到A也是如此。

猜你喜欢

转载自blog.csdn.net/OYMNCHR/article/details/119113417