首页 > 其他分享 >数据链路层

数据链路层

时间:2023-06-17 23:33:34浏览次数:48  
标签:发送 MAC 分组 接收 数据 以太网 链路层

一,数据链路层概述

1.1 基础概念

  • 数据链路层使用的信道主要有以下两种类型:

    • 点对点信道:这种信道使用一对一的点对点通信方式。
    • 广播信道:这种信道使用一对多的广播通信方式,因此过程比较复杂。广播信道上连接的主机很多,因此必须使用专用的共享信道协议来协调这些主机的数据发送。
  • 早期的数据通信协议曾叫作通信规程

  • 链路:指从一个结点到相邻结点的一段物理线路(有线或无线),而中间没有任何其他的交换节点。

  • 数据链路:基于链路,当在一条链路上传输数据时,除需要链路本身,还需要一些必要的通信协议来控制这些数据的传输,把实现这些协议的硬件和软件加到链路上,就构成了数据链路。

    数据链路=实现这些协议的硬件和软件+链路

  • 计算机中的网络适配器(俗称网卡)和其他的相应软件驱动程序就实现了这些协议。一般的网络适配器都包含了物理层和数据链路层这两层的功能。

    image

  • 帧:是数据链路层对等实体之间在水平方向进行逻辑通信的协议数据单元PDU。

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

举例,主机H1结果路由器R1,R2发送信息给主机H2,则数据发送如下图所示。

image

抛开其他层,仅对数据链路层进行研究,可得到下图的逻辑图:

image

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

2.1 封装成帧

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

  • 帧头和帧尾的作用之一是帧定界,接收方的数据链路层依靠帧定界符来区分出每一个帧
  • 帧定界:接收方的数据链路层根据帧首部和尾部的标志字段来识别出帧的开始和结束。
  • 其中帧的首部包括:帧的源地址,目的地址,类型等重要信息。
  • 帧的尾部包括了:FCS字段,接收方用该字段来判断帧在传输过程中是否产生了误码

如图所示:image

  • 还有一种点对点PPP协议帧的格式:

    image

    帧首部包含了:协议,控制,地址,标志

    帧尾部包含了:标志,FCS

  • 并不是每一种数据链路层协议的帧都包含帧定界标志符的,例如以太网V2的MAC帧就不存在帧定界符。

  • 以太网V2的MAC帧解决帧定界问题的方法

    • 以太网V2的MAC帧在交付给物理层的时,物理层会给这个帧前面加上8字节的前导码

      image

    • 前导码第一个字节代表帧开始定界符,后面7个字节代表前同步码

      前同步码:让接收方的时钟同步。

    • 以太网还规定了帧间间隔时间为96比特的发送时间。

      image

2.2 透明传输

背景:接收方根据帧定界符来区别一个个帧,但是如过在帧的数据载荷部分出现了如下图情况:

image

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

透明传输的透明指:传输的数据内容、格式及编码无限。

  • 透明传输的实现方法:

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

      字节填充法

      • 帧的数据部分出现帧头或帧尾相同数据,就在这个数据后面加上转义字符。

      • 若帧数据部分出现转义字符,就再加上一个转义字符。

      image

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

      比特填充法:每5个比特1后面就加上一个比特0

      image

  • 考虑到差错控制等多种因素,每一种数据链路层协议都规定了帧的数据部分的长度上限,即最大传送单元MTU

2.3差错检测

实际的通信链路都是不理想的,比特在传输过程中可能产生差错:1可能变成0,0可能变成1。这成为比特差错(误码)

误码率BER:在一段时间内,传输错误的比特所占传输比特总数的比率。

差错检测:指在发送的码序列(码字)中加入适当的冗余度以使得接收端能够发现传输中是否发生差错的技术。

  • 差错检测的原理:

    发送方的数据链路层采用某种检错技术根据帧的内容计算出一个检错码,将检错码填入帧尾部

    接收方的数据链路层从帧尾部取出检错码,采用与发送方相同的检错技术,再次计算出检错码。

    帧检测序列FCS:帧尾部用来存放检错码的字段

  • 两种主要的检错技术:

    1. 奇偶校验
    2. 循环冗余校验CRC

2.3.1 奇偶校验法

奇偶校验:在待发送的数据后面添加1位奇偶校验位,使整个数据(包括所添加的校验位在内)中“1”的个数为奇数(奇校验)或偶数(偶校验)

  • 如果有奇数个位发生误码,则奇偶性发生变化,可以检测出误码。

  • 如果有偶数个位发生误码,则奇偶性不发生变化,不能检测出误码

    这是因为每个误码对奇偶性的影响相互抵消了,这个现象叫漏检

    如下图所示:

    image

  • 由于奇偶校验误码率较高,计算机网络不采用这种方法进行差错检测。

2.3.2 循环冗余校验CRC

循环冗余校验CRC:

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

举例:给定如下生成多项式

\[G(x)=x^4 +x^2+x+1 \]

将该生成多项式展开为完整形式:

\[G(x)=1x^4 +0x^3+1x^2+1x^1+1x^0 \]

则生成多项式各项系数构成的比特串为:10111

  • CRC算法要求生成多项式必须包含最低次项:即后面的1

  • 常用CRC算法:

    image

循环冗余校验CRC举例:

待发送的信息为:101001,生成多项式为G(x)=x3+x2+1,计算余数。

  1. 构成被除数:将待发送信息后面添加生成多项式中最高次个0

    最高次为3,故添加3个0

    被除数为:101001000

  2. 构造除数:生成多项式各系数构成的比特串

    除数为:1101

  3. 做,“除法”:

    image

    上述中,商为1的表示够除,0表示不够除,需要再给一位。

    上述采用的是异或xor的计算方法:即相同的为0,不同的为1

  4. 检查余数:余数的位数应与生成多项式最高次数相同,如果位数不够,则在余数前面补0凑

  5. 将余数添加到待发送信息的后面,就可以发送了

    此题发送信息为:101001001

检错码只能检测帧在传输过程中出现了差错,但不能定位错误,故无法纠正错误。

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

循环冗余校验CRC有很好的检错能力(漏检率非常低),虽然计算比较复杂,但非常易于用硬件实现,因此被广泛运用于数据链路层。

CRC 是一种常用的检错方法,而 FCS 是添加在数据后面的冗余码。

FCS 可以用 CRC 这种方法得出,但 CRC 并非用来获得 FCS 的唯一方法。

仅用循环冗余检验 CRC 差错检测技术只能做到无差错接受 (accept)。

无差错接受”是指:“凡是接受的帧(即不包括丢弃的帧),我们都能以非常接近于 1 的概率认为这些帧在传输过程中没有产生差错”。

也就是说:“凡是接收端数据链路层接受的帧都没有传输差错”(有差错的帧就丢弃而不接受)。

要做到“可靠传输”(即发送什么就收到什么)就必须再加上确认和重传机制。

三,可靠传输

3.1 可靠传输概念

当接收方的数据链路层检测到发送方发送的数据存在误码,那么次数接收方对这段数据的行为取决于接收方数据链路层向上层提供的服务类型:

  • 不可靠传输服务:仅仅丢弃有误码的帧,其他什么也不做。
  • 可靠传输服务:想办法实现,发送端发送什么,接收端就收到什么。

一般情况下,有线链路的误码率比较低,为了减少开销,并不要求数据链路层向上提供可靠传输服务。即使出现了误码,可靠传输的问题由其上层除了。

无线链路易收到干扰,误码率比较高,因此要求数据链路层必须向上层提供可靠传输服务

比特差错只是传输差错中的一种,从整个计算机网络体系结构来说,传输差错还包括分组丢失,分组失序,分组重复。

分组丢失,分组失序,分组重复。一般不会出现在数据链路层,而出现在其上层。

可靠传输服务不局限于数据链路层,其他各层均可选择可靠传输,例如:

  • 802.11无线局域网要求数据链路层实现可靠传输服务,以太网不要求数据链路层实现可靠传输服务。
  • IP向其上层提供无连接,不可靠传输服务。
  • TCP向其上层提供面向连接的可靠传输服务,UDP向其上层提供无连接,不可靠传输服务。

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

3.2 三种可靠传输的实现机制

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

3.2.1 停止-等待协议SW(Stop-and-Wait)

3.2.1.1 情况一,确认与否认

接收端检测到数据分组有误码时,将其丢弃并等待发送方的超时重传

但对于误码率较高的点对点链路,为让发送方尽早重传,也可给发送方发送NAK分组。

image
  • DATA:发送的分组
  • ACK:接收方返回给发送方的确认分组。发送方只有接收到这个分组才能继续发送下一个分组。
  • NAK:接收方返回给发送方的否定分组。发送方接收到这个分组,代表需要再次发送上一次发送的分组。

3.2.1.2 情况二,超时等待

发送方在发送分组的时候,分组丢失了。

image

解决办法:在发送方发送完一个分组时,启动一个超时计时器。若到了超时计时器所设置的重传时间而发送方仍然收不到接收方的任何ACK或者NAK,则重传原来的数据分组,这就叫超时重传

一般可将重传时间选为稍大于从发送方到接收方的平均往返时间。

3.2.1.3 情况三,确认丢失

接收方在发送ACK的时候,ACK数据丢失,等到过了超时重传时间后,发送方再次发送分组,会导致分组重复

image

解决办法:为了让接收方能够判断所收到的数据分组是否重复,需要给数据分组编号。给每个分组加上序号,对于SW协议,由于发送一个数据分组就停止等待,只要保证每发送一个新数据,其发送序号和上次发送的分组序号不同即可因此只需要一个比特来编号就够了

3.2.1.4 情况四,确认迟到

接收方在反馈ACK分组的时候,超时了,导致触发了发送方的超时重传,从而让接收方发送了两次ACK。

如果不解决就会导致发送方误认为第二次返回的ACK是对第三次发送分组数据的确认。

image

解决方法:为了让发送方能够判断收到的ACK分组是否重复,需要给ACK分组编号,所用比特数量和数据编号所用比特数量一致。

数据链路层一般不会出现这种情况,因此在SW协议可以不用给ACK分组编号。

为了让接收方能够判断所收到的数据分组是否重复,需要给数据分组编号。

3.2.2 回退N帧协议GBN(Go-Back-N)

  • 流水线传输:连续发送多个数据段,而不需要先等待之前发送的数据段被确认

    如下图所示:

    image

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

  • 在协议的工作过程中,发送窗口和接收窗口不断滑动,因此这类协议又叫滑动窗口协议。

    • 假设WT=5,WR=1

      image

3.2.2.1 无差错的发送情况

假设WT=5,WR=1

  1. 发送方发送窗口内所有分组给接收方

image

image

  1. 接收方按序接收分组,每接收一个分组,接收窗口就向前滑动一个位置,并给发送方发送,针对所接受分组的ACK

image

  1. 发送方每接收一个ACK,发送窗口就向前滑动一个位置。

image

image

  1. 发送方可以将收到ACK的分组从缓存中删除,接收方在这个时候将已接受分组交付上层处理。

3.2.2.2 累积确认

累积确认:使用回退N帧协议的接收方不一定要对收到的数据分组逐个发送ACK,而是可以在收到几个分组后(具体由实现决定),对按序到达的最后一个数据分组发送确认。ACKn表示序号为n和n以前的所有数据分组已被接收。

  1. 发送方将落在窗口0~4号数据分组依此连续发送出去

    image

  2. 接收方按序接收它们

    当接受完0号和1号分组后,给发送方发送一个累计确认ACK1

    当接收完2到4号分组后,给发送方发送一个累计确认ACK4

    image

  3. 假设ACK1在传输过程中丢失了,发送方接收ACK4就知道了序号为4和4之前的分组已被接收方接收成功了。

    image-20230613182913871

累积确认的优点:即使确认分组丢失,发送方也可能不需要重传。

3.2.2.3 有差错的发送情况

  1. 发送方将落在窗口内的数据分组依此连续发送出去

    image

  2. 在传输过程中,5号数据分组出现误码。

    接收方发现了错误,丢弃了5号分组。

    image

  3. 后续到达的四个分组的序号和接收窗口中的序号不匹配

    image

  4. 接收方就将他们全部丢弃,对之前按序接收的最后一个确认分组进行确认,即发送ACK4

    每丢弃一个数据分组,就发送一个ACK4

    image

  5. 当发送方收到这些重复的ACK时,就知道了之前所发送的数据分组出现了差错,于是可以不等超时计时器超时,立即发送分组。

    至于收到几个重复ACK就立刻出传,根据具体实现决定。

在本例中,尽管序号为6,7,0,1的数据分组正确到达了接收方,但由于5号分组数据误码不被接收,他们也受到牵连而不被接收。

发送方还要重传这些数据,这就是所谓的Go-back-N(回退N帧)。可见,由于回退N帧协议的特性,当通信线路质量不好时,信道利用率不比SW协议高

3.2.2.4 WT取值超过范围上限

举例:当采用3个比特给分组编号,WT的范围是1<WT<=7,假设取WT=8

  1. 发送方将窗口内的数据连续发送给接收方。

image

  1. 接收方按序正确接收他们后,给发送方发回累计确认ACK7

image

  1. 假设ACK7在传输过程中丢失了,一段时间后触发,发送方的超时重传。

    重传的分组到达接收方后,接收方根据当前接收窗口的序号,对重传数据分组按序接收。

    但是接收方之前已经接受过这些数据分组了,此时接收方无法分别新旧数据分组。这样会导致分组重复。

image

3.2.2.5 总结

回退N帧协议的发送方

  • 发送窗口尺寸WT的取值范围是:1<WT<= 2n-1

    其中,n是构成分组序号的比特数量

    • WT=1,停止等待协议
    • WT>2n-1,接收方无法辨别新旧数据分组
  • 发送方可在未收到接收方确认分组的情况下,将序号落在发送窗口内的多个数据分组全部发送出去。

  • 发送方只有接收到对应已发送分组的确认时,发送窗口才能向前相应滑动

  • 发送方收到多个重复确认时,可在重传计时器超时前,尽早开始重传

  • 发送方发送窗口内某个已发送的数据分组产生超时重发时其后续发送窗口内已经发送的数据分组也必须全部重传,这就是回退N帧协议名称的由来。

回退N帧协议的接收方

  • 接收方的接收窗口尺寸WR的取值只能是WR=1

    因此,接收方只能按序接收数据分组。

  • 接收方只能接收序号落在接收窗口内,无误码的数据分组。并且将接收窗口向前滑动一个位置,与此同时给发送方回应相应的确认分组。

  • 为了减少开销,接收方不一定每收到一个按序到达且无误码的数据分组就给发送方回一个确认分组。

    • 而是可以在连续收到好几个按序到达且无误码的数据分组后,才针对最后一个数据分组发送确认分组,这叫累积确认。
    • 或者可以在自己有数据分组要发送时才对之前按序接收无误码的数据分组进行捎带确认。
  • 接收方收到未按序到达的数据分组,除丢弃外,还要对最近按序接收的数据分组进行确认

3.2.3 选择重传协议SR(Selective Request)

  • 一个数据分组的误码就会导致其后多个数据分组不能被接收方按序接收从而被丢弃,这导致了发送方对这些数据分组的超时重传,这是对通信资源的极大浪费。
  • 选择重传协议:为了进一步提高性能,可设法只能重传出现误码的数据分组。因此,接收窗口的尺寸WR不应该等于1(应该大于1),以便接收方先收下失序到达但无误码且序号落在接收窗口内的那些数据分组,等到所缺分组收齐后再一并送到上层。

3.2.3.1 选择重传协议传输原理

假设:WT=4,WR=4

  1. 发送方将落入分组内的4个分组发送出去

    image

  2. 分组经过传输到达接收方,但其中2号数据分组丢失

    image

  3. 接收方接收0,1号数据分组,并发送0,1号确认分组ACK

    接收窗口向前滑动2个位置

    接收方接收3号数据分组,并发送3号确认分组ACK

    此时接收窗口不能向前滑动!因为3号数据分组是未按序到达的数据分组。

    image

  4. 确认分组经过传输到达发送方

    发送方每按序收到一个ACK窗口就向前滑动一个位置

    发送方接收的0,1号ACK,发送窗口向前滑动2个位置。

    4,5号落入新发送窗口。

    image

  5. 发送方将序号落入4,5的分组发送出去,此时可以将已经收到确认的0,1号数据分组从发送缓存中删除。

    接收方择机将已按序接收的分组交给上一层

    image

  6. 发送方接收3号确认ACK,此时窗口不能向前滑动!因为这是未按序到达的确认分组。

    发送方还没有收到2号确认分组,此时需要记录3号数据分组已收到确认。这样该数据分组就不会超时重发。

    image

  7. 当4,5号数据分组到达接收方。

    接收方接收数据分组,向发送方发送4,5号确认分组。

    此时接收窗口不能向前滑动,因为他们是未按序到达的数据分组。接收方还未收到2号数据分组

    image

  8. 假设4,5号确认分组传输过程中,发送方针对2号数据分组的重传计时器超时了。

    发送方重传2号数据分组。

    4,5号确认分组陆续到达发送方,此时发送方接收他们,但发送窗口不能向前滑动!

    因为他们是未按序到达的确认分组,发送方此时还未收到2号确认分组。

    此时记录4,5号确认分组已经收到确认,防止4,5号分组超时重传。

    image

  9. 发送方之前重传的2号数据分组,到达接收方。

    接收方接收该数据分组,发送2号数据确认分组。

    此时接收窗口向前滑动4个位置。

    image

  10. 发送方接收到2号数据确认分组,发送窗口向前滑动4位

    image

3.2.2.2 总结

选择重传协议的发送方:

  • 发送窗口的尺寸WT取值范围是:1<WT<=2n-1

    其中n是构成分组序号的比特数量

    • WT=1,与停止等待协议相同
    • WT>2n-1,接收方无法分辨新旧数据分组
  • 发送方可在未收到接收方确认分组的情况下,将序号落在发送窗口内多个数据分组全部发送出去

  • 发送方只有按序收到对已发送数据分组的确认时,发送窗口才能向前相应的滑动。

    如果收到未按序到达的确认分组时,对其进行记录,以防止相应数据分组的超时重传,但发送窗口不能向前滑动。

选择重传协议的接收方:

  • 接收窗口的尺寸WR的取值范围是:1<WR<=WT
    • WR=1,与回退N帧协议相同
    • WR><WT,无意义。
  • 接收方可接收未按序到达但没有误码并序号落在接收窗口内的数据分组。
    • 为了使发送方仅重传出现差错的分组,接收方不能再采用累积确认,而需对每个正确收到的数据分组再逐一进行确认。
  • 接收方只有在按序接收数据分组后,接收窗口才能向前滑动

四,点对点协议PPP

4.1 PPP协议介绍

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

  • 用户和ISP连接采用的就是PPP协议

    image

  • 点对点PPP协议也广泛应用于广域网链路。

  • PPP协议为在点对点的链路传输各种协议数据报提供了一个标志方法,主要由以下三个部分构造:

    • 对各种协议数据包的封装方法(封装成帧)
    • 链路控制协议LCP,用于建立,配置和测试数据链路的连接
    • 一套网络控制协议NCP,其中的每一个协议支持不同的网络协议。
  • PPP协议能够在多种类型的点对点链路上运行,例如:

    • 面向字节的异步链路
    • 面向比特的同步链路
  • PPP协议帧格式:

    image

    帧首部:

    • 标志字段(Flag):PPP帧的定界符,取值为0x7E
    • 地址字段(Address):取值为0xFF,目前没什么作用
    • 控制字段(Control):取值为0x03,目前每什么作用
    • 协议字段(Protocol):指明帧的数据部分送交给哪个协议处理
      • 取值0x0021表示:帧的数据部分为IP数据报
      • 取值0xC021表示:帧的数据部分为LCP分组
      • 取值0x8021表示:帧的数据部分为NCP分组

    帧尾部:

    • 帧检测序列字段(Frame Check Sequence):CRC计算出的校验位。
    • 标志字段(Flag):PPP帧的定界符,取值为0x7E
  • PPP协议实现透明传输的方法取决于使用那种数据链路:

    • 使用面向字节的异步链路:采用字节填充法。
    • 使用面向比特的同步链路:采用比特填充法。
  • PPP协议的差错检测法:

    • 字符填充:

      image

    • 零比特填充:

      • 在发送端,只要发现有 5 个连续 1,则立即填入一个 0。
      • 接收端对帧中的比特流进行扫描。每当发现 5 个连续1时,就把这 5 个连续 1 后的一个 0 删除

4.2 PPP协议工作状态

以拨号接入为例:

  • ppp链路的开始和结束状态都是静止状态,此时不存在物理层的连接。

image

五,共享式以太网

5.1 以太网发展历史:

  • 1975年:以太网诞生

    • 以太网(Ethernet)以曾经被假想的电磁波传播介质--以太(Ether)来命名

    • 以太网最初采用无源电缆(不包含电源线)作为共享总线来传输帧,属于基带总线局域网,传输速率为2.94Mb/s

  • 1976年:以太网里程碑论文

    • Robert Metcalfe和助手David Bogggs发布论文《以太网:局域计算机网络的分布式包交换技术》
  • 1979年:3Com公司成立

    • Robert Metcalfe离开Xero公司成立3Com公司
    • 3Com游说DEC,Intel和Xerox公司希望一起将以太网标准化。
  • 1980年:以太网标准V1(DIX Ethernet V1)出台,传输速率为:10Mb/s

  • 1982年:以太网标准V2(DIX Ethernet V2)世界上第一个局域网产品的标准这个标准被广泛使用

  • 1983年:IEEE 802委员会的802.3工作组在DIX EThernet V2的基础上制定出了IEE 802.3以太网标准

    IEE 802.3对DIX Ethernet V2的帧格式做了很小的改动,但相关硬件回兼容。

    但是这个标准没有被广泛使用。

以太网目前已从传统的共享式以太网发展到了交换式以太网,传输速率也从10Mb/s提高到了10Gb/s。

以太网的两个主要标准:

  • IEEE 802.3
  • DIX Ethernet V2

5.2 网络适配器

  • 要将计算机连接到以太网,需要使用相应的网络适配器(Adapter) ,网络适配器一般简称网卡

  • 在计算机内部,网卡与CPU之间通信,一般是通过计算机主板上的I/O总线并行传输方式进行。

  • 网卡与外部以太网(局域网)之间的通信,一般通过传输媒体以串行传输方式进行的。

    image

  • 网卡除了要实现物理层和数据链路层功能,其另外一个重要功能就是要进行并行传输和串行传输的转换

    由于网络的传输速率和计算机内部总线上的传输速率不同,因此在网卡的核心芯片中都会包含用于缓存数据的存储器。

  • 在确保网卡硬件正确的情况下,为了使网卡正常工作,还必须要在计算机的操作系统中为网卡安装相应的设备驱动程序。

    驱动程序负责驱动网卡发送和接收帧。

5.3 MAC地址

image

  • 当多个主机连接在同一个广播信道上,要想实现两主机之间的通信,则每个主机都必须有一个唯一标识,即一个数据链路层地址

  • 在每个主机发送的帧的首部,都携带有发送主机(源主机)和接收主机(目的主机)的数据链路层地址

    由于这类地址是用于媒体接入控制(Medium Access Control)的,因此被成为MAC地址。

    image

  • MAC地址一般被固化在网卡的电可擦可编程只读存储器EEPROM中,因此MAC地址也叫硬件地址

  • MAC地址也是也被称为物理地址

  • 一般情况下,普通用户计算机中存在两张网卡:每块网卡都有一个全球唯一的MAC地址

    • 用于接入有线局域网的以太网卡

    • 用于接入无线局域网的Wi-Fi网卡

  • 交换机和路由器往往具有更多的网络接口,所有有更多的MAC地址。

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

5.3.1 IEEE 802局域网的MAC地址格式

5.3.1.1 IEEE 802局域网MAC地址介绍

IEEE 802局域网的MAC地址由6个字节组成:

  • 前三个字节:代表组织唯一标识符OUI,由IEEE的注册管理机构分配,也叫公司标识符。
  • 后三个字节:代表网络接口标识符,由获得OUI的厂商自行分配

如图所示:

image

5.3.1.2 IEEE 802局域网MAC地址表示方法

将每4个比特写成1个16进制的字符,共12个字符,将每2个字符分为1组,共6组

  • MAC地址标准表示方法:每组之间用短线连接,例如:XX-XX-XX-XX-XX-XX

    Windows采用的就是这种表示方法

  • MAC地址的其他表示方法:每组之间用冒号连接,例如:XX:XX:XX:XX:XX:XX

    Linux,Android,IOS系统都采用这种表示方法

  • 将每4个字符用小数点连接,例如:XXXX.XXXX.XXXX

    Packet Tracer仿真软件就采用这种方法。

5.3.1.3 MAC地址的分类:

image

根据G/L位和I/G位的不同组合可将MAC地址分为四种,如下图所示:

image

注:

  • 如果将本地多播地址,除第1字节的b0和b1之外剩下的46比特改为全1时,代表广播地址,数值为:FF-FF-FF-FF-FF-FF
  • 本地就是那些不愿意到IEEE注册MAC地址的,自己自定义MAC地址。

5.3.1.4 IEEE 802局域网的MAC地址发送顺序

  • 字节发送顺序:第1字节到第6字节
  • 字节内比特发送顺序:b0位到b7位

如图所示:

image

5.3.1.5 几种MAC地址的作用

  • 单播MAC地址:给网络适配器来识别数据是否发送给自己。

image

  • 广播MAC地址:给局域网内所有主机发送数据,让他们都能够接收。

image

  • 多播MAC地址

如图:

  • 四个交换机形成环路,目的是提高网络的可靠性,但环路回造成广播帧在环路中无限循环的问题。

  • 为解决这个问题,交换机会交互一种特殊的帧BPDU(网桥协议数据单元)

    各交换机根据BPDU中的一些参数,按照生成树协议使用的生成树算法,某些交换机会阻塞自己的某些网络接口

    这样就破除了环路。

  • BPDU首部中的目的地址是生成树协议STP专用组播地址:01-80-C2-00-00-00

image

5.3.2 IEEE的MAC地址总结

网卡从网络中每收到一个无误码的帧,就检查帧首部中的目的MAC地址,按照以下情况处理:

  1. 如果目的MAC地址是广播地址(FF-FF-FF-FF-FF-FF),就接收帧
  2. 如果目的MAC地址与网卡上的固化的全球MAC地址相同,就接收地址
  3. 如果目的MAC地址是网卡支持的多播地址,就接收地址
  4. 除上述情况外,全部丢弃帧

网卡还可被设置为一种特殊各种方式:混杂方式。工作在混杂方式的网卡,只要收到共享媒体上传来的帧就会收下,而不管帧的目的MAC地址是什么。

  • 对于网络维护和管理人员,这种方式可以监视和分析局域网上的浏览,以便找出提高网络性能的具体方法
  • 嗅探器(Sniffer)就是一种工作在混杂方式的网卡,再配合相应的工具软件(WireShark),就可以作为一种很有用的网络工具来学习和分析网络。
  • 混杂方式会被黑里利用来非法获取网络用户的口令。

全球单播MAC地址具有唯一性,为了避免用户设备连接Wi-Fi热点时MAC地址泄露的安全问题,目前大多数移动设备已采用随机MAC地址技术。

5.4,CSMA/CD协议

5.4.1 协议背景

在以太网发展初期,人们普遍认为“无源的电缆线比有源器件靠谱”,因此将多个站点连接在一条总线上来构建共享以太网

共享以太网具有天然的广播特性,即使总线上某个站点给另一个站点发送单播帧,表示帧的信号也会沿着总线传播到总线上的其他各站点。

共享以太网如图所示:

image

信号碰撞:当某个站点在总线上发送帧时,总线资源会被该站点独占。如果此时总线上的其他站点也要在总线上发送帧,就会产生信号碰撞。

当两个及以上站点同时使用总线发送帧时,就会产生信号碰撞。

共享总线以太网的一个重要问题:如何协调总线上各站点争用总线。

解决方法:CSMA/CS,即载波监听多址接入/碰撞检测(Carrier Sense Multiple Access Collision Detection)

5.4.2 基本原理

CSMA/CS分为:

  • 多址接入MA

    • 多个站点连接在一条总线上,竞争使用总线。
  • 载波监听CS

    • 每个站点在发送帧之前,先要检测一下总线上是否有其他站点在发送帧(先听后说
      • 若检测到总线空闲96比特时间(发送96比特所用时间,也叫帧间最小间隔),则发送这个帧。
      • 若检测到总线忙,则继续检测并等待总线转为空闲96比特时间,然后发送这个帧。
  • 碰撞检测CD

    • 每个正在发送帧的站点一边发送一遍检测碰撞(边说边听)

      一旦发现总线上出现碰撞,立即停止发送,退避一段随机时间后再次从载波监听开始进行发送。

强化碰撞:发送帧的站点一旦检测到碰撞,除了立即停止发送帧,还要继续发送32比特或48比特的人为干扰信号以便有足够碰撞信号使得所有站点都能检测出碰撞。

注意:

  • 载波监听检测到总线空闲,但总线不一定空闲。
  • 使用CSMA/CD协议的共享总线以太网上的各站点,只是尽可能避免碰撞并在出现碰撞时做出退避后重发的处理,但不能完全避免碰撞。
  • 在使用CSMA/CD协议时,由于正在发送帧的站点必须边发送帧边检测碰撞,因此站点不可能同时进行发送和接收,故只能进行半双工通信。

5.5 共享式以太网的争用期

使用CSMA/CD协议的共享式以太网上任意站点发送帧的过程中都可能遭遇碰撞。

假设站点A发送数据给站点D,则如图所示:

image

可得到如下结果:

image

image

对于非10Mb/s的共享式以太网:

\[争用期=\frac{信道长度}{信号传播速度}\times2 \]

5.6 共享式以太网的最小帧长和最大帧长

5.6.1 最小帧长

假设站点A给站点C发送很小的帧,当帧发送完毕后站点A不再检测碰撞。

此时站点C检测到线路处于空闲,发送帧,然后A和C的帧产生碰撞。

结果:站点A不知道已经发送完毕的帧遭遇了碰撞,故不会重发该帧。

如图所示:

image

为了确保共享总线以太网上的每一个站点在发送完一个完整的帧之前,能够检测出是否产生了碰撞,帧的发送时延就不能够小于共享总线以太网的一个争用期。

对于10Mb/s的共享以太网总线,其争用期为:51.2us,故最小帧长为:512.2 x 10-5 x 106=512b即64B

最小帧长(bit)=帧的发送速率(bps)x争用期(往返时间)(s)

  • 当某个站点在发送帧时,如果帧的前64个字节没有遭遇到碰撞,那么帧的后续部分也不会遭遇碰撞。

    即如果遭遇碰撞,一定是在帧的前64个比特之内。

  • 由于发送帧的站点边发送帧边检测碰撞,一旦检测到碰撞就立刻终止帧发送,此时已发送的数据量一定小于64B。

    因此,接收站点收到长度小于64B的帧,就可判定这是一个遭遇碰撞而异常终止的无效帧,将其丢弃即可。

5.6.2 最大帧长

一般来说,帧的数据载荷部分长度应该远大于帧首部和尾部,这样可以提高帧的传输效率

但如果不限制帧的数据载荷部分长度上限,就可能导致帧长度过长带来的问题。

如下图:

image

以太网V2的MAC帧最大载荷长度被限制为1500字节

image

最小载荷为46是为了满足最小帧长64字节。

5.7 共享式以太网的退避算法

  • 在使用CSMA/CD协议的共享总线以太网中,正在发送帧的站点一边发送帧一遍检测碰撞,当检测到碰撞时就立即停止发送,退避一段随机时间后再重新发送。
  • 共享总线以太网的各站点采用截断二进制指数退避算法来选择退避时间。

具体算法如下图:

image

k=min[重传次数,10]是截断二进制指数名字的由来。

举例:

image

  • 如果连续多次发生碰撞,就表明可能有较多的站点参与竞争信道。

    使用上述退避算法可使重传需要推迟的平均时间随重传次数而增大(即动态退避),从而减少产生碰撞的概率。

  • 当重传次数达到16次时还不能成功,就表面同时打算发送的帧的站点过多,以至于连续产生碰撞,此时应该放弃重传并向高层报告。

5.8 共享式以太网的信道利用率

如下图:

image

考虑到以下这种理想情况:

  • 总线一旦空闲就有某个站点立即发送帧。
  • 各站点发送帧都不会产生碰撞。

则此时不用考虑碰撞产生的退避时间,此时可得:

\[极限信道利用率S_{max}=\frac{T_0}{T_0+t}=\frac{1}{1+\frac{t}{T_0}}=\frac{1}{1+a} \]

为了提高信道利用率,a的值应该尽可能的小,即:

  • 共享总线以太网端到端之间的距离不应该太长,
  • 帧长度要尽可能的大。

5.9 使用集线器的共享式以太网

  • 早期传统以太网采用粗同轴电缆的共享总线以太网,后来发展到使用价格相对便宜的细同轴电缆。

  • 当成认为这种连接方法既简单又可靠,因为在那个时代普遍认为有源器件不可靠无源的电缆线才是最可靠的。

    • 实践证明,使用无源电缆线和大量机械接口的总线型以太网不像人们想像的那么可靠。

      image
  • 在使用细同轴电缆的共享总线以太网之后,以太网发展出来一种使用大规模集成电路来代替总线,并且可靠性非常高的设备:集线器(Hub)

  • 站点连接到集线器的传输媒体也转而使用更便宜,灵活的双绞线电缆。

    如图所示:

    image
  • 集线器的主要特点:

    • 使用集线器的以太网虽然物理拓扑是星型的,但在逻辑上是一个总线网

      总线上各站点共享总线资源,使用的还是CSMA/CD协议。

    • 集线器只工作在物理层,它的每个接口仅简单地转发比特,并不进行碰撞检测。

      碰撞检测的任务由各站点中的网卡负责。

    • 集线器一般都有少量的容错能力和网卡管理功能。

      例如:若网络中的某个站点的网卡出现了故障而不停发帧,集线器就可以检测出来并在内部断开与这个故障网卡的连接。

      从而保证了整个以太网能够正常工作。

10BASE-T

  • IEEE于1990年指定了10BASE-T星型以太网的标准802.3i,这种以太网是局域网发展史上的一座非常重要的里程碑,它为以太网在局域网中统治地位奠定了牢固的基础。
  • 10BASE-T以太网的通信距离较短,每个站点到集线器的距离不能超过100m
  • IEEE 802.3以太网还可使用光纤作为传输媒体,相应的标准为:10BASE-F,F表示光纤。光纤的主要用在集线器之间的远程连接。
  • 10BASE-T中:
    • 10表示传输速率为10 Mb/s
    • BASE表示采用基带信号传输
    • T表示采用双绞线作为传输媒体

5.10 在物理层扩展以太网

5.10.1 扩展站点和集线器之间的距离

早期没有使用集线器之前:

  • 共享总线以太网中两个站点之间的距离不能太远,否则它们之间所传输的信号就会衰减到使用CSMA/CD协议无法正常使用。

  • 在早期广泛使用粗同轴电缆或细同轴电缆共享总线以太网时,为了提高网络的地理覆盖范围,常用的是工作在物理层的转发器

  • IEEE 802.3标准规定,两个网段可用一个转发器连接起来,任意两个站点之间最多可以结果三个网段。

    image

开始使用集线器时:

  • 随着使用双绞线和集线器的10BASE-T星型以太网成为主流类型,扩展网络覆盖范围就很少使用转发器了。

  • 在10BASE-T星以太网中,可使用光纤一对光纤调制解调器扩展站点与集线器之间的距离

    • 这种扩展方式比较简单,代价是:为站点和集线器各增加一个用于电信号和光信号转换的光纤调制解调器,因及它们之间的一堆通信光纤。

    • 信号在光纤中的衰减和失真很小,因此使用这种方法可以很简单的将站点和集线器之间的距离扩展到1000m以上。

      如图所示:

      image

5.10.2 扩展共享式以太网的覆盖范围和站点数量

  • 以太网集线器一般具有8~32个接口,如果要连接的站点数量超过了单个集线器所能提供的接口数量,就需要使用多个集线器,这样就可以连接成覆盖范围更大,连接更多站点的多级星型以太网。

    如图所示:

    image
  • 采用多个集线器连接而成的多级星型以太网,在扩展了网络覆盖范围的同时,也带来了一些负面因素

    在物理层扩展的共享式以太网还是一个碰撞域,不能连接太多的站点,否则可能出现大量碰撞,导致平均吞吐量太低。

5.11 在数据链路层扩展以太网

5.11.1 使用网桥在数据链路层扩展以太网

在物理层扩展以太网时,会将多个碰撞域合并为一个大的碰撞域,可能出现大量碰撞,导致平均吞吐量过低。

解决办法:使用网桥扩展,如图所示:

image

使用网桥在数据链路层来扩展以太网就不会出现这种情况,原因是:

  • 网桥工作在数据链路层(包含其下的物理层),因此网桥具有数据链路层范围的相关能力
    • 网桥可以识别帧的结构
    • 网桥可以根据帧首部中目标MAC地址和网桥自身帧转发表来转发或丢弃所收到的帧。

5.11.2 网桥的主要结构和工作原理

如图所示:

image

网桥的结构如图所示:

image
  • 转发表:网桥转发帧的依据,记录网桥所知道的网络中各主机的MAC地址和自己各接口对应关系。

网桥收到帧后,会在自己的转发表中查找帧的目的MAC地址,根据查找结果来转发或丢弃帧。

网桥转发过程如图所示:

image

注:

  • 网桥接收广播帧时,不用查找转发表,而是通过除接收该帧接口之外的其他接口转发该广播帧。

  • 网桥的接口在向其连接的网段转发帧时,会执行相应的媒体接入控制协议,对于共享式以太网就是CSMA/CD协议。

5.11.3 透明网桥的自学习和转发帧的流程

  • 透明网桥通过自学习算法建立转发表

  • 透明网桥中的透明,指以太网中的各站点并不知道自己所发的帧将会经过哪些网桥的转发,最终到达目的的站点。

    即,以太网中的各网桥对于各站点而言是看不见的

  • 透明网桥的标准是IEEE 802.1D,它通过一种自学习算法基于以太网中各站点间相互通信逐步建立自己的转发表。


透明网桥的自学习过程:

举例:如下图所示

image

假设,A给B发送单播帧,对于和A处于同一接口的B,C结果如下:

image

当单播帧传到网桥时,网桥会进行自学习,简称登记

登记内容为:帧的源MAC地址,该帧进入网桥的接口。此处登记A,1

然后网桥对该单播帧进行转发,分两种情况:

  1. 网桥在自己的转发表中查找该帧的目的MAC地址,但没有找到

    此时进行盲目转发:网桥通过除接收这个帧的接口之外的其他全部接口都转发一遍。

  2. 在转发表找到了该帧的MAC地址:

    如果这个MAC地址对应的接口和接收该帧的接口一样,网桥就丢弃该帧。

    不一样就根据查找到对应帧所处的接口进行转发。

注:

  • 如果网桥收到误码的帧,直接丢弃

  • 如果网桥收到广播帧FF-FF-FF-FF-FF-FF,不用查表,直接从除接收该帧之外全部接口转发该帧。

  • 转发表中每条记录存在时效性,到期自动删除。

    因为各栈的MAC地址与网桥接口对应关系不是永久的。


5.11.2 透明网桥的生成树协议STP

  • 为了提高以太网的可靠性,有时需要在两个以太网之间使用多个透明网桥来提供冗余链路。

  • 问题举例:

    image

  • 在增加冗余链路提高以太网可靠性的同时,却给网络引入了环路。

  • 网络中的广播帧将在环路中永久循环,造成广播帧充斥整个网络,网络资源被白白浪费,而网络中的主机之间无法正常通信。

  • 为了避免广播帧在环路中无限循环,透明网桥使用生成树协议STP(Spaning Tree Protocol),可以在增加冗余链路提高网络可靠性的同时,避免环路带来的问题。

    • 不管网络之间连接成了怎样复杂的带环拓扑,网桥之间通过交互网桥协议的单元BPDUBridge Protocol,Data Util),找出原网络拓扑的一个连通子集(生成树),在这个子集里整个连通的网络中不存在环路。

    • 当首次连接网桥或网络拓扑发送变化时,网桥都会重新构造生成树,以确保网络的连通。

      image

六,交互式以太网

  • 网桥的接口数量很少,通常只有2~4个,一般只用来连接不同网段
  • 1990年面世的交换式集线器,实质上是具有多个接口的网桥,常称为以太网交换机或二层交换机。
    • 二层指以太网交换机工作在数据链路层(包括物理层)
    • 与网桥相同,交换机内部的转发表采用自学习算法,基于网络中各主机的通信,自动地逐步建立起来。
    • 交换机也使用生成树协议STP,来产生能够连通全球但不产生环路的通信路径。
  • 仅使用交换机而不使用集线器的以太网就是交换式以太网。

6.1 以太网交换机

以太网交换机本质上就是一个多接口的网桥。每一个连接接口就是一个网桥

交换机的每个接口可以连接计算机,也可也连接集线器或另外一个交换机

  • 当交换机的接口与计算机或交换机连接时,可以工作在全双工方式,并能够在自身内部同时连通多对接口,使每一对相互通信的计算机都能够像独占传输媒体那样,无碰撞地传输数据,这样就不需要使用CSMA/CD协议了。

  • 当交换机的接口连接的是集线器时,该接口就只能使用CSMA/CD协议,并且只能在半双工的方式。

当前的计算机和交换机中网卡都能自动识别上述两种清空,并自动切换到相应的工作方式之中。

交换机一般具有多种速率的接口,例如10Mb/s,1Gb/s,甚至10Gb/的接口,大部分接口支持多速率自适应。


一般交换机都采用存储转发方式,为了减小交换机的转发时延,某些交换机采用了直通交换方式。

采用直通交换方式的交换机,在接收帧的同时就立即按帧的目的MAC地址决定该帧的转发接口,然后通过其内部基于硬件的交叉矩阵进行转发,而不必吧整个帧先缓存再进行处理。

  • 直通交换的时延非常小
  • 直通交换不检查差错就直接将帧转发出去,有可能会将一些无效帧转发给其他主机。

6.2 以太网的MAC帧格式

以太网的MAC帧格式分为:

  • DIX Ethernet V2的帧格式(流行)
  • IEE 802.3的帧格式

两种MAC帧格式差别很小,仅类型字段有差别。


DIX Ethernet V2的MAC帧格式:

image

  • 目的地址:填入目的MAC地址

  • 源地址:填入源MAC地址

  • 类型:指明数据载荷部分的内容由上层的哪个协议封装的,以便将来收到的MAC帧数据载荷部分上交给上一层的这个协议。

    • 0x0800:TCP/IP网际层IP协议封装的PDU
    • 0x8137:Novell网际层IPX协议封装的PDU
  • FCS:使用CRC生成的帧检验序列,接收方网卡通过FCS字段内容检测出传输过程中是否产生误码。

    CRC的范围是:除FCS字段之外所有字段。

  • 数据载荷部分最小长度是根据10Mb/s的最小帧长度为64B决定的。

当数据链路层的以太网MAC帧交付给数据链路层时,物理层会给这个帧前面加上8字节的前导码

  • 前导码第一个字节代表帧开始定界符,后面7个字节代表前同步码

    前同步码:让接收方的时钟同步。

  • 以太网还规定了帧间间隔时间为96比特的发送时间。

    image

  • 接收方可能收到的无效MAC帧包括以下几种:

    1. MAC帧长度不是整数个字节
    2. 通过MAC帧的FCS字段值检测出帧有误码。
    3. MAC帧长度不在64~1518字节之间。

    接收方收到无效MAC帧时,就简单的丢弃,以太网数据链路层不存在重传机制。

七,虚拟局域网VLAN

7.1 技术背景与概述

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

使用一个或多个以太网交换机互联起来的交换式以太网,其站点都属于同一个广播域

随着交换式以太网规模的扩大,广播域相应扩大。

巨大的广播域会带来很多弊端:

  • 广播风暴。

    指当广播数据充斥网络无法处理,并占用大量网络带宽,导致正常业务不能运行,甚至彻底瘫痪,这就发生了“广播风暴”。

  • 难以管理和维护。

  • 潜在的安全问题。


网络中会频繁的出现广播信息:

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

将较大广播域分割为多个小的广播域方法:

  • 使用路由器可以隔离广播域,但路由器成本较高。
  • 使用虚拟局域网技术分割广播域

虚拟局域网VLAN概述:虚拟局域网VLAN(Virtual Local Network)是一种将局域网内的设备划分成与物理位置无关的逻辑组的技术,这些逻辑组具有共同的需求。

如图所示:

image

7.2 虚拟局域网实现机制

虚拟局域网VLAN技术是在交换机上实现的,需要交换机能够实现以下两大功能:

7.2.1 IEEE 802.1Q帧

IEEE 802.1Q帧:也叫Dot One Q帧,对以太网MAC帧格式进行了扩展,插入了4字节的VLAN标记。

  • 如图所示:image
  • VLAN标记的最后12比特也称为VLAN标识符VID,它唯一的标志了以太网帧属于哪一个VLAN
    • VID的取值范围是:0~4095或0到212-1
    • 0和4095都不用来表示VLAN,因此用于表示VLAN的VID的有效取值范围是1~4094
  • 802.1Q帧是由交换机来处理的,而不是用户主机处理的。
    • 当交换机收到普通的以太网帧时,会将其插入4字节的VLAN标记转变为802.1Q帧,简称打标签。
    • 当交换机转发8021.Q帧时,可能会删除其4字节VLAN标记转变为普通以太网帧,简称去标签。

7.2.2 交换机端口类型

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

  • 在思科交换机上叫Native VLAN即本征VLAN
  • 在华为交换机上叫Port VLAN ID,即端口VLAN ID,简称PVID
  • 交换机的每个端口有且只有一个省却VLAN ID

7.2.2.2 Access端口

Access端口特点:

  • 思科交换机没有这个端口
  • Access端口一般用于连接用户计算机
  • Access端口只能属于一个VLAN
  • Access端口的PVID值于端口所属VLAN的ID相同(默认为1)

Access端口接收帧处理方法:一般只接收未打标签的普通以太网MAC帧,根据接收帧的端口的PVID给帧打标签,即插入4字节VLAN标记字段,字段中的VID取值与端口的PVID取值相同。

Access端口发送帧处理方法:若帧中VID与端口的PVID相等,则去标签,并转发该帧,否则不转发。

Access端口主要在一个转发器或路由器之内划分局域网。

7.2.2.3 Trunk端口

Trunk端口特点:

  • Trunk端口一般用于交换机之间交换机与路由器之间的互联。
  • Trunk端口可以属于多个VLAN
  • 用户可以设置Trunk端口的PVID值。默认情况下,Trunk端口的PVID值为1

Trunk端口发送帧处理方法:对VID等于PVID的帧,去标签再转发。

Trunk端口接收帧处理方法:

  • 接收未打标签的帧,根据接收帧的端口PVID给帧打标签,即插入4字节VLAN标记字段,字段中VID的取值与端口的PVID取值相同。
  • 接收已打标签的帧,并转发。

Trunk主要将多个路由器或交换机之间划分局域网

image

7.2.2.4 Hybrid端口

Hybrid端口特点:

  • 华为交换机特有端口
  • Hybrid端口即可用于交换机之间或交换机与路由器之间的互联(同Trunk端口),也可用于交换机与用户计算机之间的互联(同Access端口)
  • Hybrid端口可以属于多个VLAN(同TrunK端口)
  • 用户可以设置Hybrid端口的PVID值,默认为1

Hybrid端口发送帧的处理方法:查看帧的VID是否在端口的去标签列表中

  • 若存在,则去标签后再转发。
  • 若不存在,则直接转发。

Hybrid端口的接收帧的处理方法(同Trunk端口)

  • 接收未打标签的帧,根据接收帧的端口PVID给帧打标签,即插入4字节VLAN标记字段,字段中VID的取值与端口的PVID取值相同。
  • 接收已打标签的帧,并转发。

八,以太网的发展

以太网的发展图:

image

8.1 100BASE-T以太网

100BASE-T以太网是指在双绞线上传输基带信号的速率为100Mb/s的以太网,也叫快速以太网。

100BASE-T以太网与10Mb/s标准以太网(传统以太网)一样,使用IEEE 802.3的帧格式和CSMA/CD协议

100BASE-T以太网为了与10Mb/s标准以太网兼容,需要以太网最小帧长保持不变,即还是为64字节。

解决方法:

  • 网段的最大电缆长度冲1000m减小到100m
  • 争用期缩短为5.12us
  • 帧间最小间隔距离缩短为0.96us

100BASE-T以太网还可以使用以太网交换机来提供比集线器更好的服务质量,即在全双工方式下无碰撞工作。

因此,使用交换机的100BASE-T以太网,工作在全双工下,不使用CSMA/CD协议。

  • 1995年,IEEE 802委员会正式批准100BASE-T以太网的标准为802.3u,实际上,IEEE 802.3u只是对原有的IEEE 802.3标准进行补充。

  • 除100BASE-T以太网外,白兆以太网有多种不同的物理层标准

    image

8.2 G比特以太网

吉比特以太网也叫千兆以太网,1998年,千兆以太网的标准802.3z成为正式标准。

IEEE 80.23千兆以太网主要特点有:

  1. 速率为1000 Mb/s
  2. 使用IEEE 802.3帧格式
  3. 支持半双工(使用CSMA/CD协议)和全双工(不使用CSMA/CD协议)
  4. 兼容10BASE-T和100BASE-T

当千兆以太网工作在半双工方式时,需要使用CSMA/CD协议,由于速率已经提高到了1000Mb/s,因此只有减小网段最大长度增加最小帧长,才能使得以太网参数a(t/T0)保持为较小数值。

  • 若将网段最大长度减少到10m,则网络基本失去应用价值。
  • 若将最小帧长增大到640字节,则当上层交付的待封装的协议数据单元PDU很短,开销就很大。

千兆以太网的网段最大长度仍然保持100m,最小帧长仍然保持64字节(与10BASE-T和100BASE-T兼容)

解决方法:

  • 使用,载波延伸方法,将争用期增大五512字节的发送时间而保持最小帧长仍然为64字节。

    • 只要发送的MAC帧长度不足512字节时,就在MAC帧尾部填充一些特殊字符,使MAC帧长度增大到512字节。

    在使用载波延伸的机制下,如果原本发送的是大量64字节长的短帧,则每一个短帧都会被填充448字节的特殊字符,这样会造成很大开销。

    因此,千兆以太网还使用了分组突发功能,即当有很多短帧要连续发送时只将第一个短帧用载波延伸的方式进行填充,而后面一系列短帧不用填充就可一个接一个连续发送,它们之间只需要空开必要的帧间最小间隔即可。

    这样就形成了一连串分组的突发,当累积发送1500字节或稍多一些位置。

  • 当千兆以太网工作在双工方式时,不使用CSMA/CD协议,也不会使用载波延伸和分组突发。

千兆以太网的物理层标准:

image

8.3 10G比特以太网

2002年6月,IEEE 802.3ae委员会通过10吉比特以太网的正式标准,10GE也叫万兆以太网。

万兆以太网并不是将千兆以太网的速率简单的提高了10倍。万兆以太网的目标是将以太网从局域网范围(校园网或企业网)扩展到城域网与广域网,成为城域网和广域网的主干网的主流技术之一。

IEEE 802.3ae万兆以太网的主要特点有:

  • 速率为10Gb/s
  • 使用IEEE 802.3标准帧格式
  • 保留IEEE 802.3标准对以太网最小帧长和最大帧长的规定。为了用户升级以太网时,仍能和较低速率的以太网方便的进行通信。
  • 只工作在全双工方式而不存在争用媒体的问题,因此不需要CSMA/CD协议,这样传输距离就不受碰撞检测的限制。
  • 增加了支持城域网和广域网的物理层标准。

万兆以太网交换机常作为千兆以太网交换机的汇聚层交换机,与千兆以太网交换机相连,还可以连接对传输速率要求极高的视频服务器,文件服务器等设备。

万兆以太网物理层标准

image

8.4 40G或100G比特以太网

2010年,IEEE发布了40吉比特/100吉比特以太网的IEEE 802.3ba标准,40GE/100GE也叫四万兆/十万兆以太网。

为了使以太网能够更加高效,更加经济地满足局域网,城域网和广域网的不同应用需求,IEEE 802.3ba标准定义了两种速率类型:

  • 40Gb/s主要用于计算应用
  • 100Gb/s主要用于汇聚应用

IEEE 802.3ba标准只工作在全双工方式,但仍然使用IEEE 802.3标准的帧格式遵守最小帧长和最大帧长规定。

IEEE 802.3ba标准的两种速率各有4种不同的传输媒体:

image

九,802.11无线局域网

  • 随着移动通信技术的发展,无线局域网WLAN(Wireless Local Area Network)自20世界80年代末依赖逐步进入市场。

  • IEEE于1997年指定出了无线局域网的协议标准IEEE 802.11,802.11无线局域网是目前应用最广泛的无线局域网之一,

    人们更多的将其简称为Wi-Fi(Wireless Wildelity,无线保真度)

  • 802.11无线局域网可分为以下两类:

    • 有固定基础设施的
    • 无固定基础设施的
  • 固定基础设施是指预先建立的,能够覆盖一定地理范围的,多个固定的通信基站

  • 802.11无线局域网使用最多的是它的固定基础设施的组网方式。


9.1 有固定基础设施的802.11无线局域网

有固定基础设施的802.11无线局域网采用星型拓扑,如下图所示:
image

相关定义:

  • 接入点AP:位于中心的基站

    网络管理员需要为AP分配一个最大32字节的服务集标识符SSID一个无线通信信道SSID实际上就是使用该AP的802.11无线局域网的名字。

  • 基本服务集BSS:802.11无线局域网的最小构件

    在一个BSS中包含1个AP和若干个移动站。

    BSS内各站点间通信以及与本BSS外的站点之间的通信,都必须经过本BSS内的AP进行转发。

    一个BSS可以是孤立的,也可通过DS分配系统与其他BSS建立连接,DS最常用以太网,也可使用点对点链路或其他无线链路。

  • 基本服务区BSA:一个BSS覆盖的范围(直径100m之内)

  • 扩展的服务集ESS:多个BSS系统通过DB分配系统建立连接组成的

    ESS可以为无线用户提供其他非802.11无线局域网的接入


802.11标准没有定义实现漫游的具体方法,仅定义了以下一些基本服务。

  1. 关联(Association)服务

    移动站点与接入点AP建立关联的方法有两种:

    • 被动扫描:AP周期性发出信标帧,移动站被动接收信标帧。

      信标帧包含:服务集标识符SSID,AP的MAC地址,所支持的速率,加密算法和安全配置等参数。

    • 主动扫描:移动站主动发出探测请求帧,然后等待来自AP的探测响应帧

  2. 重建关联服务和分离服务

    如果一个移动站要把某个接入点AP的关联转移到另外一个AP,就可以使用重建关联服务。

    若要终止关联服务,就使用分离服务。

9.2 无固定基础设施的802.11无线局域网

这种网络也叫自组织网络(ad hoc Network)

自组织网络并没有预先建立的固定基础设施,它是由一些对等的移动站点构成的临时网络。

数据在自组织网络被多跳存储转发

如图所示:

image

转发至需要具备路由功能

自组织网络有其特定的路由选择协议,需要通过网关gateway(协议转换器)连接到因特网。

自组织网络组网方便,不需要基站,具备非常好的生存性,这使得自组织网络在军用和民用领域有很好的发展前景。

802.11无线局域网的ad hoc模式运行网络中的各站点在其通信范围内直接通信,也就支持站点间的单跳通信,而标准中没有包括多级跳路由功能。因此802.11无线局域网的ad hoc模式应用较少。

9.3 802.11无线局域网的物理层

802.11无线局域网的物理层非常复杂,依据工作频段,调制方式,传输速率等,可将其分为多种物理层标准。

如下图所示:

image

802.11无线网卡一般会被做成多模的,以便能够适应多种不同的物理层标准,例如支持802.11b/g/n

image

无线局域网最初还使用红外技术IR(Infrared),和跳频扩频FGSS(Frequency Hopping Spread Spectrum)技术,但目前已经很少使用。

跳频技术的发明人,是好莱坞黄金时代的著名女性海蒂拉玛,跳频技术为CDMA和Wi-Fi等无线通信技术奠定了基础。因此海蒂拉玛被誉为“Wi-Fi之母”

最近几年,802.11无线局域网的新物理层标准如下如:

image

9.4 802.11无线局域网的数据链路层

9.4.1 802.11无线局域网使用CSMA/CA协议的原因

  • 对于802.11无线局域网,其使用无线信道传输数据,这与共享总线以太网使用有线传输介质不同。因此802.11无线局域网不能简单照搬共享总线以太网使用CSMA/CD协议。

  • 802.11无线局域网采用另一种叫CSMA/CA协议,也就是载波监听多址接入/碰撞避免

  • CSMA/CA协议仍然采用CSMA/CD协议中的CSMA,以先听再说的方式来减少碰撞的发送,但将碰撞检测CD改为了碰撞避免CA

    尽管CA表示碰撞避免,但不能避免所有的碰撞,而是尽可能减少碰撞发送的概率。

  • 802.11无线局域网不采用碰撞检测CD的原因:

    1. 由于无线信道的传输环境复杂且信号强度动态范围非常大,在802.11无线网卡上接收到的信号强度一般远远小于发送信号的强度,信号强度甚至相差百万倍。因此,如果要在802.11无线网卡上实现碰撞检测,对硬件的要求非常高。

    2. 即使能够在硬件上实现碰撞检测功能,但由于无线电波的特殊性(存在隐蔽站问题),还会出现无法检测到碰撞的情况,因此实现碰撞检测没有意义。

      无线局域网的隐蔽站问题:碰撞信号很弱,导致双方无法接收到该碰撞信号。

      image

9.4.2 CSMA/CA协议基本工作原理

基础概念:

  • DCF:分布式协调功能,在DCF方式下,没有中心控制站点,每个站点使用CSMA/CA协议通过争用信道来获取发送权。
    DCF的方式是802.11定义的默认方式(必须实现)

  • DIFS:DCF的帧间间隔,长度为128us,在DCF方式中,DIFS用来发送数据帧和管理帧
    等待DIFS间隔是考虑要有可能其他的站有高优先级的帧要发

  • SIFS:短帧帧间间隔长度为28us,他是最短的帧间间隔,用来分隔开属于一次对话帧的各帧
    一个站点应当能够在这段时间内从发送方式切换到接收方式,使用SIFS的帧类型有ACK帧,RTS帧,CTS帧等。

  • NAV:网络分配向量NAV。

    当某个信道检测到正在信道中的帧首部中的“持续时间”字段时,就调整自己的网络分配向量NAV。

    NVA指出了完成这次帧的传送且信道转入空闲状态所需的时间。这就是虚拟载波监听机制

  • RTS帧:RTS帧是短的控制帧,它包含源地址目的地址本次通信(包含目的站发回确认帧所需时间)所需的持续时间。

  • CTS帧:CTS帧是短的响应控制帧,它也包含本次通信所需的持续时间(从RTS帧中将此持续时间复制到CTS帧中)

  • 由于无线信道的误码率较高,CSMA/CA协议还需要使用停止-等待的确认机制来实现可靠传输,这与CSMA/CD协议不同。

  • 当某个站要发送数据帧时,仅在这种情况下不使用退避算法:

    检测到信道空闲,并且该数据帧不是成功发送完上一次数据帧之后立即连续发送的数据帧

    除此之外的以下情况都需要使用退避算法。:

    1. 在发送帧之前检测到信道处于忙状态
    2. 在每一次重传一个帧时
    3. 在每一次成功发送帧后要连续发送下一个帧时。
  • 无线局域网发送数据帧情况举例image

  • 随机退避时间:当某个站在发送帧时,很可能有多个站都在监听信道并等待发送帧,一旦信号空闲,这些站几乎同时发送帧而产生碰撞。为了避免上述情况,所有要发送帧的站点检测到信道从忙转为空闲时,都要执行退避算法。这样不仅可以减少碰撞发送率,还可避免某个站点长时间占用无线信道。

  • 第1个数据中首部存在:持续时间字段值指出了源站要占用信道的时间(包括目的在发回确认中所需的时间)

    当某个信道检测到正在信道中的帧首部中的“持续时间”字段时,就调整自己的网络分配向量NAV。

  • CSMA/CA协议的退避算法举例

    image

    核心:

    1. 站点检测到帧发送完毕后,都要等待DIFS+随机退避时间
    2. 若在退避时间内检测到信道处于忙状态,就会冻结退避时间,直到再次检测到信道处于空闲状态时,等待DIFS时间才解冻。
  • 为了进一步降低发送碰撞的概率,802.11无线局域网允许源站对信道进行预约,如图所示:

    image

    • 除源站和目的站的其他各站。在收到CTS帧或数据帧后就推出访问信道。这样就确保了源站和目的站之间的通信不会收到其他站的影响。

    • 若RTS帧发送碰撞,源站就不可能收到CTS帧,源站回执行退避算法重传RTS帧。

    • 使用RTS帧和CTS帧进行信道预约回带来额外的开销。但由于RTS帧和CTS帧都很短,发生碰撞的概率,碰撞产生的开销以及本身的开销都很小。对于一般的数据帧,其发送时延往往大于传播时延(因为是局域网),碰撞发生的概率很大,且一旦发生碰撞而导致数据重发,则浪费的时间就很多,因此用很小的代价对信道进行预约往往是值得的。

    • 尽管如此,802.11无线局域网为用户提供了三种选择:

      1. 使用RTS帧和CTS帧
      2. 只有当数据帧长度超过某个数值时才使用RTS帧和CTS帧
      3. 不使用RTS帧和CTS帧
    • 由于RTS帧和CTS帧都携带通信所需时间,这与之前介绍的数据帧可以携带通信所需持续时间的虚拟载波监听机制是一样的,因此使用RTS帧和CTS帧进行信道预约,也属于虚拟载波监听机制。

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

9.5 802.11无线局域网的MAC帧

802.11无线局域网帧分为三种类型:

  • 数据帧:
    • 用于在站点间传输数据
  • 控制帧
    • 通常与数据帧搭配使用
    • 负责区域的清空,虚拟载波监听的维护以及信道的接入,并于收到数据帧时予确认。
    • ACK帧,RTS帧以及CTS帧都属于控制帧
  • 管理帧
    • 用于加入或推出无线网络以及处理AP之间连接的转移事项。
    • 信标帧,关联请求以及身份认证帧等都属于管理帧。

802.11无线局域网数据帧格式:

image

帧头中的帧控制字段有:

image

  • WEP:有线等效保密控制位,用于指示是否使用了WEP加密算法。

    WEP表面使用在无线信道上的这种加密算法在效果上可以和在有线信道上进行通信一样保密

帧头中的持续期字段:用于实现CSMA/CA的虚拟载波监听和信道预约机制。在数据帧,RTS帧和CTS帧中都用该字段指出要持续占用信道的时常。

帧头中的序号控制字段:用来实现802.11的可靠传输,对数据帧进行编号。

帧头中的地址1到地址4:取决于帧控制字段中的去往DS(到分配系统)和来自DS(分配系统)这两个字段的值。

如图所示:

image

image

标签:发送,MAC,分组,接收,数据,以太网,链路层
From: https://www.cnblogs.com/wdadwa/p/17488476.html

相关文章

  • 数据分析流程
    一、数据分析流程1.业务理解数据分析的起点,最为重要的环节2.数据收集多渠道获取结构化与非结构化数据3.数据处理数据清洗、数据整理、数据加工4.数据分析现状、原因分析、多维度分析、可视化分析5.数据展现可视化图表展现6.制作报告商业智能报表 二、数据分......
  • windows下mysql使用mysqldump定时备份数据库,删除过期备份
    windows下mysql使用mysqldump定时备份数据库,删除过期备份创建备份脚本:@echooffforfiles/p"d:\mysql_backup"/mbackup_*.sql-d-7/c"cmd/cdel/f@path"set"Ymd=%date:~0,4%%date:~5,2%%date:~8,2%"cdD:\Mysql\mysql-8.0.18\binmysqldump--opt......
  • Python-练脑系列-03数据结构
    练脑不断,快乐不止;本次是第三期练脑。1、给定一个列表,其中每个元素都是一个由数字和运算符组成的字符串,例如['2+3','4*5','6/3'],计算列表中所有元素的值,并返回结果的列表。2、给定一个列表和一个整数k,返回列表中所有长度为k的连续子序列中的最大值。3、给定一个字典,其中键和值......
  • 数据验证序列自动去重(Excel技巧集团)
    数据验证》序列》来源,输入一行或一列数据,就可以从下拉选项中选取需要输入的数据。当数据源是一列带有重复值的数据时,下拉选项里也会忠实地显示所有内容,包括重复的内容。如果想要去重,就必须添加辅助列。但那都是过去子,现在,就只要直接…… ......
  • 数据结构-枚举
    在Java中,枚举(Enumeration)是一种特殊的数据类型,用于定义一组具名的常量。枚举常量是一组预定义的值,它们在枚举类型中被列出,每个常量都有一个名称和一个关联的值。枚举类型在Java中是通过关键字enum来定义的。定义枚举类型后,可以使用枚举常量来表示具体的取值。enumSeason{......
  • 数据结构
    Java提供了许多常见的数据结构,包括但不限于以下几种:数组(Array):用于存储固定大小的元素序列。动态数据(ArrayList)链表(LinkedList):通过节点之间的链接关系来存储元素的线性数据结构。栈(Stack):遵循后进先出(LIFO)原则的数据结构,可以用于存储和检索元素。队列(Queue):遵循先进先出(FIFO)原......
  • 大数据管理平台哪家好?“的修”不仅仅是报修系统
    随着科技的不断发展,报修系统已经成为了企业提高售后服务效率、降低成本的重要工具。在这个竞争激烈的市场环境下,企业需要选择一款操作便捷、自动化程度高、数据可视化、行业解决方案优质、自定义审批以及移动透明化管理的报修系统。而“的修”报修系统正是一款符合这些要求的优秀系......
  • 实验三 嵌入式SQL与数据库连接
    一、数据库连接技术简介本实验在Java程序中采用JDBC连接openGauss。Java数据库连接是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。我们通常说的JDBC是面向关系型数据库的。JDBC有五种连接方式,分别是直接实例化Driver,......
  • 什么工具可以综合查SEO数据?可以查网站收录情况的工具?
    有网友问,有没有什么工具可以在批量查seo数据的同时,还可以统计出查询的数据。这个可以看看iis7站长工具,这是一款强大的seo查询工具,它可以为你提供全面的网站统计数据,帮助你分析网站的优化情况。iis7站长工具可以监控网站的流量、访问量、域名信息、页面收录情况等各种数据,为你提供详......
  • C语言-数据存储详解
     C语言类型内置类型整型家族char//字符数据类型1个字节unsignedcharsignedcharshort//短整型4个字节unsignedshort[int]signedshort[int]int//整型4个字节 unsignedint  signedint long//长整型8个字节unsignedlong[int] signedlong[int]longlong//更长......