热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

《计算机网络》学习总结——数据链路层(完整理解)

本文目录第三章数据链路层3.1数据链路层的几个共同问题3.1.1数据链路和帧3.1.2三个基本问题3.2点对点协议PPP3.2.1PPP协议的特点3.2.2PPP协议的帧格式3.2

本文目录

  • 第三章 数据链路层
    • 3.1 数据链路层的几个共同问题
      • 3.1.1 数据链路和帧
      • 3.1.2 三个基本问题
    • 3.2 点对点协议PPP
      • 3.2.1 PPP协议的特点
      • 3.2.2 PPP协议的帧格式
      • 3.2.3 PPP协议的工作状态
    • 3.3 使用广播信道的数据链路层
      • 3.3.1 局域网的数据链路层
      • 3.3.2 CSMA/CD 协议
      • 3.3.3 以太网信道的利用率
      • 3.3.4 以太网的MAC层
    • 3.4 拓展的以太网
      • 3.4.1 在物理层拓展以太网
      • 3.4.2 在数据链路层拓展以太网
      • 3.4.3 虚拟局域网
    • 3.5 小结
第三章 数据链路层

数据链路层属于计算机网络的低层,主要的任务是为网络层提供服务,保证数据在链路上传输的有效、可靠(以前)。不必考虑物理层如何实现比特传输的细节。数据链路层使用的信道主要有以下两种类型:

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

两台主机通过互联网进行通信时数据链路层所处的地位,如下图所示:

《《计算机网络》学习总结——数据链路层(完整理解)》

本章最重要的内容是:

(1)数据链路层的点对点信道和广播信道的特点,以及这两种信道所使用的协议 (PPP 协议以及 CSMAlCD 协议)的特点。

(2) 数据链路层的三个基本问题:封装成帧、透明传输和差错检测。

(3) 以太网 MAC 层的硬件地址。

(4) 适配器、转发器、集线器、网桥、以太网交换机的作用以及使用场合。

3.1 数据链路层的几个共同问题

本节讨论使用点对点信道的数据链路层的一些基本问题。其中的某些概念对广播信道也是适用的。

3.1.1 数据链路和帧

链路(link),也叫物理链路:就是从一个结点到相邻结点的一段物理线路(有线或无线),而中间没有任何其他的交换结点。在进行数据通信时,两台计算机之间的通信路径往往要经过许多段这样的链路。可见链路只是一条路径的组成部分。

数据链路(data link) ,也叫逻辑链路。若把实现必要的通信协议的硬件和软件加到链路上,就构成了数据链路。也即物理链路加上必要的通信协议。这是因为当需要在一条线路上传送数据时,除了必须有一条物理线路外,还必须有一些必要的通信协议来控制这些数据的传输。

现在最常用的方法是使用网络适配器(既有硬件,也包括软件〉来实现这些协议。一般的适配器都包括了数据链路层和物理层这两层的功能。

一一数据链路层的协议数据单元,包括了首部和尾部的控制信息和中间的数据部分。

点对点信道的数据链路层在进行通信时的主要步骤如下(设节点 A 与节点 B 进行通信):
1)节点 A 的数据链路层把网络层交下来的 IP 数据报添加首部和尾部封装成帧。
2)节点 A 把封装好的帧发送给节点 B 的数据链路层。
3)若节点 B 的数据链路层收到的帧无差错,则从收到的帧中提取出 IP 数据报交给上面的网络层:否则丢弃这个帧。

3.1.2 三个基本问题

尽管数据链路层协议有许多种,但有三个基本问题则是共同的。这三个基本问题是:封装成帧透明传输差错检测

封装成帧(framing)就是在一段数据的前后分别添加首部和尾部,这样就构成了一个帧。 接收端在收到物理层上交的比特流后,就能根据首部和尾部的标记,从收到的比特流中识别每个帧的开始和结束。首部和尾部的控制信息中有个很重要的是帧定界符,即确定帧的界限,从哪开始,到哪结束。这样,接收端才能知道收到的数据是否为一个个完整的帧。

透明传输:表示无论什么样的比特组合的数据,都能够按照原样没有差错地通过数据链路层。 即数据链路层对这些数据来说是透明的。因为封装成帧时,首部和尾部加入了关键的帧定界符,如文本文件组成时的 SOH 或 EOH 都是16进制的编码,但是数据部分可能存在同样的编码,导致传输时,数据链路层会错误找到帧的边界,而导致不能透明传输。

解决方法:发送端的数据链路层在数据中出现控制字符 如”SOH” “EOT” 的前面插入一个转义字符 “ESC” (同样为十六进制编码)。而在接收端的数据链路层在把数据送往网络层之前删除这个插入的转义字符。这种方法称为字节填充(byte stuffing)或字符填充(character stuffing) 。如果转义字符也出现在数据当中,那么解决方法仍然是在转义字符的前面插入一个转义字符。因此,当接收端收到连续的两个转义字符时,就删除其中前面的一个。

“透明”:某一个实际存在的事物看起来却 好像不存在一样

差错检验:在发送的码序列(码字)中加入适当的冗余度以使得接收端能够发现传输中是否发生差错的技术。由于现实的通信链路是非理想的,比特流在传输中可能出现差错,例如1变成0,0变成1的比特差错。目前在数据链路层广泛使用循环冗余检验CRC的检错技术。

CRC(Cyclic Redundancy Check) :(由硬件完成)发送端为每个分组数据计算出冗余码,并加在数据后面,即尾部处,然后再封装成帧。在接收端经过差错检验,若发生比特差错,即放弃接收该帧,凡是接收端接收的帧均是无差错的。使用CRC能实现无比特差错的传输,但还不是可靠传输,因为还有帧重复、帧丢失和帧失序等情况。

3.2 点对点协议PPP

经过多年的通信线路的发展,数据链路层常用的协议由能实现可靠传输的高级数据链路控制 HDLC (High-level Data Link Control)变成了更简单的点对点协议 PPP (Point-to-Point Protocol) 。PPP 协议只支持点对点的链路通信,且只支持全双工链路。

3.2.1 PPP协议的特点

PPP 协议就是用户计算机和 ISP(如移动、联通等运营商) 进行通信时所使用的数据链路层协议。如下图所示:

《《计算机网络》学习总结——数据链路层(完整理解)》

PPP协议设计的需求:

(1) 简单:对数据链路层的帧,不需要纠错,不理会顺序,也不需要流量控制。(在TCP/IP 协议族中,可靠传输由运输层的 TCP 负责)

(2) 封装成帧:须规定特殊的字符作为帧定界符(即标志一个帧的开始和结束的字符),以便使接收端从收到的比特流中能准确地找出帧的开始和结束位置。

(3) 透明性:须保证数据传输的透明性。如果数据中碰巧出现了和帧定界符一样的比特组合时,就要采取有效的措施来解决这个问题。

(4) 多种网络层协议:须能够在在同一条物理链路上同时支持多种网络层协议(如 IP 和 IPX 等)的运行。

(5) 多种类型链路:须能够在多种类型的链路上运行。如,串行的(一次只发送一个比特)或并行的(一次并行地发送多个比特),同步的或异步的,低速的或高速的,电的或光的,交换的(动态的)或非交换的(静态的)点对点链路。

PPPoE(PPP over Ethernet)是为宽带上网的主机使用的链路层协议。这个协议把 ppp 帧再封装在以太网帧中(当然增加了一些能够识别各用户的功能)。宽带上网时由于数据传输速率较高,因此可以让多个连接在以太网上的用户共享一条到 ISP 的宽带链路。

(6) 差错检测:须能够对接收端收到的帧进行检测(CRC),并立即丢弃有差错的帧。

(7) 检测连接状态:须具有一种机制能够及时(不超过几分钟)自动检测出链路是否处于正常工作状态。当出现故障的链路隔了一段时间后又重新恢复正常工作时,就特别需要有这种及时检测功能。

(8) 最大传送单元:须对每一种类型的点对点链路设置最大传送单元 MTU 的标准默认,超过则丢弃该帧。但 MTU 是数据链路层的帧数据部分的最大长度,而不是帧的总长度。

(9) 网络层地址协商:须提供一种机制使通信的两个网络层 (如两个 IP 层) 的实体能够通过协商知道或能够配置彼此的网络层地址。

(10) 数据压缩协商:须提供一种方法来协商使用数据压缩算法。但 PPP 协议并不要求将数据压缩算法进行标准化。

PPP 协议的组成:

(1) 一个将 IP 数据报封装到串行链路的方法。IP 数据报在 PPP 帧中就是其信息部分。信息部分的长度受最大传送单元 MTU 的限制。

(2) 一个用来建立、配置和测试数据链路连接的链路控制协议 LCP (Link Control Protocol) 。通信的双方可协商一些选项。

(3) 一套网络控制协议 NCP (Network Control Protocol),其中的每一个协议支持不同的网络层协议,如 IP、OSI 的网络层、 DECnet ,以及 AppleTalk 等。

3.2.2 PPP协议的帧格式

PPP 帧的格式如下所示:

《《计算机网络》学习总结——数据链路层(完整理解)》

各字段的意义

ppp 帧的首部和尾部分别为四个字段和两个字段。

首部的第一个字段和尾部的第二个字段都是标志宇段 (Flag),即PPP 帧的定界符,标志宇段表示一个帧的开始或结束。规定为 0x7E (符号” 0x “表示它后面的字符是用十六进制表示的。十六进制的 7E 的二进制表示是 01111110) 。连续两帧之间只需要用一个标志宇段。

首部中的地址字段 A 和控制字段 C 目前并没有携带 PPP 帧的信息。

PPP 首部的第四个字段是2字节的协议字段。当协议字段为 0x0021 时,PPP 帧的信息字段就是 IP 数据报。若为 0xC021,则信息字段是 PPP 链路控制协议 LCP 的数据,而 0x8021 表示这是网络层的控制数据。

信息部分即信息字段,他的长度是可变的,但不超过 1500 字节。

尾部中的第一个字段(2字节)是使用 CRC 的帧检验序列 FCS(即冗余码)

字节填充

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

当PPP使用异步传输(逐个字符地传送)时,采用字节填充。如把某些字节转换为2字节序列,如 0x7E 转为 (0x7D,0x5E)。由于在发送端进行了字节填充,因此在链路上传送的信息字节数就超过了原来的信息字节数。但接收端在收到数据后再进行与发送端字节填充相反的变换,就可以正确地恢复出原来的信息。

零比特填充:

PPP 协议用在 SONET/SDH 链路时,使用同步传输(一连串的比特连续传送)时,采用零比特填充方法来实现透明传输。做法是:在发送端先扫描整个信息字段,只要发现有5个连续1,则立即填入一个0 。因为标志字段为 01111110,故只要不出现连续6个1即不会对帧边界作错误的判断。在接收端再扫描比特流,删掉增加的0,即可还原回原来的比特流。

3.2.3 PPP协议的工作状态

PPP 链路的工作流程状态图:

《《计算机网络》学习总结——数据链路层(完整理解)》

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

当用户通信完毕时, NCP 释放网络层连接,收回原来分配出去的 IP 地址。接着, LCP 释放数据链路层连接。最后释放的是物理层的连接。

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

广播信道可以进行一对多的通信,在计算机网络中占有非常重要的地位的局域网使用的就是广播信道。

3.3.1 局域网的数据链路层

局域网就是将一定区域内的各种计算机、外部设备和数据库连接起来形成的计算机通信网,可以实现文件管理、应用软件共享等功能。最主要的特点是:网络为一个单位所拥有,且地理范围和站点数目均有限

局域网的一些主要优点:

  1. 具有广播功能,从一个站点可很方便地访问全网。
  2. 便于系统的扩展和逐渐演变,各设备的位置可灵活调整和改变。
  3. 提高了系统的可靠 (reliability) 、可用性(availability)和生存性(survivability) 。

计算机与外界局域网的连接是通过适配器(adapter)进行的。适配器本来是在主机箱内插入的一块网络接口板(又称为网络接口卡 NIC (Network Interface Card)或网卡)。适配器装有处理器和存储器(包括 RAM 和 ROM(存有MAC地址))适配器和局域网之间的通信是通过电缆或双绞线以串行传输方式进行的, 而适配器和计算机之间的通信则是通过计算机主板上的 I/0 总线以并行传输方式进行的。 适配器能进行数据串行传输和并行传输的转换,有对数据进行缓存的存储芯片,还要能够实现以太网协议。计算机通过驱动程序指挥适配器工作。

须知,局域网工作的层次跨越了数据链路层和物理层。并且,随着以太网(Ethernet)的发展,几乎所有局域网都使用以太网协议,故现在以太网和局域网已成了同义词。

以太网的主要标准,一个是由IEEE802委员会制定的802.3等,主要把局域网的数据链路层拆成两个子层,即逻辑链路控制 LLC (Logical Link Control) 子层和媒体接入控制 MAC (Medium Access Control)子层。与接入到传输媒体有关的内容都放在 MAC 子层,不管采用何种传输媒体和 MAC 子层的局域网对 LLC 子层来说都是透明的;但目前,使用的最多的局域网只剩下DIX Ethemet V2标准,故后面只考虑MAC子层了。

最初的以太网的网络拓扑以总线网最为传统,即各站直接连接到总线上,如下图(b)©所示,通信时共享总线这个信道,即网络中的各站必须竞争对传输媒体的控制,并且在同一时刻至多只允许一个站发送数据。

《《计算机网络》学习总结——数据链路层(完整理解)》

后来经过发展,采用星形拓展的以太网采用了集线器。从表面上看,使用集线器的局域网在物理上是一个星形网,但由于集线器使用电子 器件来模拟实际电缆线的工作(如下图所示),所以在逻辑上仍是一个总线网,各站共享逻辑上的总线,使用的还是 CSMA/CD 协议(实质是各站中的适配器执行 CSMA/CD 协议)。

《《计算机网络》学习总结——数据链路层(完整理解)》

集线器采用了专门的芯片,进行自适应串音回波抵消,避免信号干扰。有许多接口,很像一个多接口的转发器工作在物理层,它的每个接口仅仅简单地转发比特一一收到0 就转发0,收到1就转发1,不进行碰撞检测

3.3.2 CSMA/CD 协议

因为以太网逻辑上的网络拓扑大都是总线型,而总线的特点是:当一台计算机发送数据时,总线上的所有计算机都能检测到这个数据。属于广播通信方式,但我们有时需要借助适配器ROM中的MAC地址来实现一对一通信。

以太网在通信时,采用了以下两种措施:

第一,以太网发送的数据都使用曼彻斯特(Manchester)编码的信号,虽使得频带宽度多一倍,但可防止连续多个1和0,展示如下图:

《《计算机网络》学习总结——数据链路层(完整理解)》

第二,采用较为灵活的无连接的工作方式,即不必先建立连接就可以直接发送数据。 适配器对发送的数据帧不进行编号,也不要求对方发回确认。 而局域网信道的质量很好,因通信质量不好产生差错的概率是很小的。因此,以太网提供的服务是尽最大努力的交付,即不可靠的交付。 当目的站收到有差错的数据帧时(用 CRC ),就把帧丢弃,其他什么也不做,对有差错帧是否需要重传由高层(如TCP)来决定。但以太网井不知道这是重传帧,而是当作新的数据帧来发送。

因为,总线上只要有一台计算机在发送数据,总线的传输资源就被占用。因此,在同一时间只能允许一台计算机发送数据,否则各计算机之间就会互相干扰,使得所发送数据被破坏。因此,如何协调总线上各计算机的工作就是以太网要解决的一个重要问题。其实就是信道的共享问题,技术上有两种方法:(1)静态划分信道,如FDM,TDM,CDM和WDM等,但代价过高不适用于局域网。(2)动态媒体接入控制,特点是信道并非在用户通信时固定分配的。其又分为受控接入和随机接入。

以太网采用最简单的随机接入,但有很好的协议用来减少冲突发生的概率。这好比有一屋子的人在开讨论会,想发言的随时可发言,不需要举手示意。为了防止互相之间的发言干扰,有个规定就是:如果你听见有人在发言,那么你就必须等别人讲完了才能发言。但有时碰巧两个或更多的人同时发言了,那么所有人都必须立即停止发言,等听到没有人发言了才能再发言。以太网采用的协调方法和上面的规定非常像,它使用的协议是 CSMA/CD ,意思是载波监听多点接入/碰撞检测(Carrier Sense Multiple Access with Collision Detection)

载波监听,就是用电子技术检测总线上有没有其他计算机也在发送。就是检测信道,不管在发送前,还是在发送中,每个站都必须不停地检测信道。 ** 碰撞检测也就是边发送边监听**,即适配器边发送数据边检测信道上的信号电压的变化情况,当有站点在总线上发送数据时,总线上的信号电压增大。

因为电磁波在1 km 电缆的传播时延约为 5μs ,故站点在发送数据之前监听到信道为空闲后再发送,也可能发生碰撞。就好比一听见会场安静,我们就立即发言,但偶尔也会发生几个人同时抢着发言而产生冲突的情况。传播时延对载波监昕的影响展示如下图:

《《计算机网络》学习总结——数据链路层(完整理解)》

由上面分析可知,每一个站在自己发送数据之后的一小段时间内,都存在着遭遇碰撞的可能性。这一小段时间是不确定的,它取决于另一个发送数据的站到本站的距离。以太网的这一特点称为发送的不确定性。在局域网的分析中,常把总线上的单程端到端传播时延记为 t,发送数据的站发送数据后,最迟要经过(也叫争用期)两倍的总线端到端的传播时延(2t) ,才能肯定这次发送不会发生碰撞。

以太网使用截断二进制指数退避(truncated binary exponential backoff)算法来确定碰撞后重传的时机。这种算法让发生碰撞的站在停止发送数据后,等待信道变为空闲后推迟(这叫做退避)一个随机的时间再重新发送。

这个算法(1)首先规定了争用期时间是 51.2us。对于 10 Mbit/s 以太网,在争用期内可发送 512 bit,即争用期是发送 512 bit 所需的时间。(2)然后,每次重传都设{ [0,1,…(2^k-1)],k=Min[重传次数,10] }中随机一个数为 r ,重传时间为 r 倍争用期。(3)最后,当重传达 16 次仍不能成功时,则丢弃该帧,并向高层报告。

以太网规定了最短帧长为64字节,即512比特,因此凡长度小于 64 字节的帧都是由于冲突而异常中止的无效帧。还规定了帧间最小间隔为 96比特时间

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

3.3.3 以太网信道的利用率

因为以太网上有多个站点在工作,碰撞就避免不了,则信道利用率并不能达到100%。以太网的信道被占用的情况如下图所示:

《《计算机网络》学习总结——数据链路层(完整理解)》

首先设定发送帧需要的时间是T0,它等于帧长除以发送速率。然后考虑无碰撞的理想状态,可以计算出极限信道利用率SMax= T0/T0+t = 1 / 1+a。而 参数a = t / T0。可以看到,只有当参数a远小于1才能得到尽可能高的极限信道利用率,则以太网的帧长不能太短。据统计,当以太网的利用率达到 30%时就己经处于重载的情况。很多的网络容量被网上的碰撞消耗掉了。

3.3.4 以太网的MAC层

“名字指出我们所要寻找的那个资源,地址指出那个资源在何处,路由告诉我们如何到达该处。”

关于以上的论述,名字应当与所在系统无关,而是与我们的身份证号一样,独一无二的标识。在局域网中,就被称为硬件地址、物理地址或MAC地址。固化在适配器的ROM中,作为标识计算机全球唯一的标记(实际上标记的是适配器的地址),无关它处在什么系统、什么位置之内。

MAC地址长度为6字节(48位),由RA组织分配,目前使得所有有MAC地址的适配器的地址都不一样,可作为适配器独一无二的标识。当路由器通过适配器连接到局域网时,适配器上的硬件地址就用来标志路由器的某个接口。路由器如果同时连接到两个网络上,那么它就需要两个适配器和两个硬件地址。

适配器有过滤功能。适配器从网络上每收到一个 MAC 帧就先用硬件检查 MAC 帧中的目的地址。如果是发往本站的帧则收下,然后再进行其他的处理。否则就将此帧丢弃,不再进行其他的处理。这里”发往本站 的帧”包括以下三种帧:

  1. 单播(unicast) 帧(一对一),即收到的帧的 MAC 地址与本站的硬件地址相同。
  2. 广播(broadcast) 帧(一对全体),即发送给本局域网上所有站点的帧(全 地址)。
  3. 多播(multicast) 帧(一对多),即发送给本局域网上一部分站点的帧。

所有的适配器都至少能够识别单播和广播地址,多播需要另外设置。以太网适配器还可设置为一种特殊的工作方式,即混杂方式,只要”听到”有帧在以太网上传输就都悄悄地接收下来,而不管这些帧是发往哪个站。有一种很有用的网络工具叫做嗅探 (Sniffer) 就使用了设置为混杂方式的网络适配器。可帮助学习网络的人员更好地理解各种网络协议的工作原理,但也有很多黑客利用这个漏洞。

常用的以太网 MAC 帧格式有两种标准,这里只介绍使用得最多的以太网 V2 MAC 帧格式。下图中假定网络层使用的是 IP 协议。实际上使用其他的协议也是可以的。

《《计算机网络》学习总结——数据链路层(完整理解)》

以太网 V2 MAC 帧较为简单,由五个字段组成。前两个字段分别为6字节长的目的地址和源地址宇段。第三个字段是2宇节的类型字段,用来标志上一层使用的是什么协议, 以便把收到的 MAC 帧的数据上交给上一层的这个协议。第四个字段是数据字段,其长度在 46~1500 字节之间 (当数据字段少于46字节会自动填充整数字段)。最后一个字段是字节的帧检验序列 FCS (使用 CRC 检验〉。

通过上图可以看到,在传输媒体上实际传送的要比 MAC 帧还多8个字节。第一个字段是7个字节的前同步码(1和0交替码),它的作用是使接收端的适配器在接收 MAC 帧时能够迅速调整其时钟频率,使它和发送端的时钟同步, 也就是”实现位同步” (位同步就是比特同步的意思)。第二个字段是帧开始定界符,定义为 10101011 。

还需注意,在以太网上传送数据时是以帧为单位传送的。以太网在传送帧时,各帧之间还必须有一定的间隙。故以太网不需要使用帧结束定界符,也不需要使用字节插入来保证透明传输。

3.4 拓展的以太网

在许多情况下,我们希望对以太网的覆盖范围进行扩展。

3.4.1 在物理层拓展以太网

以前的以太网上的主机之间的距离不能太远(如200米),否则主机发送的信号经过铜线的传输就会衰减到使 CSMA/CD 协议无法正常工作,故常使用工作在物理层的转发器来扩展以太网 的地理覆盖范围。

现在,扩展主机和集线器之间的距离的一种简单方法就是使用光纤(通常是一对光 纤)和一对光纤调制解调器,如下图所示

《《计算机网络》学习总结——数据链路层(完整理解)》

这里光纤调制解调器的作用就是进行电信号和光信号的转换。由于光纤带来的时延很小,并且带宽很宽,因此使用这种方法可以很容易地使主机和几公里以外的集线器相连接。如果使用多个集线器,就可以连接成覆盖更大范围的多级星形结构的以太网

《《计算机网络》学习总结——数据链路层(完整理解)》

这样做的优点是扩大了以太网覆盖的地理范围,缺点是就把三个碰撞域变成一个碰撞域(范围扩大到三个系),即其中一个通信时,对另外两个都可能发生碰撞,并且由于集线器无缓存功能,拓展后的以太网的数据率由最低的数据率决定。

3.4.2 在数据链路层拓展以太网

最初人们使用的是网桥(bridge) 。网桥对收到的帧根据其 MAC 帧的目的地址进行转发和过滤。当网桥收到一个帧时,并不是向所有的接口转发此帧,而是根据此帧的目的 MAC 地址,查找网桥中的地址表,然后确定将该帧转发到哪一个接口,或者是把它丢弃(即过滤)。但后来,交换式集线器替代了网桥,其又称为以太网交换机。

以太网交换机的特点

  1. 实质上就是一个多接口的网桥,每个接口都以全双工方式直接与主机或以太网交换机相连,还具有并行性,即使多对主机能同时通信(而网桥只能一次分析和转发一个帧)。相互通信的主机都是独占传输媒体,无碰撞地传输数据。
  2. 接口处还有存储器,能在输出端口繁忙时把到来的帧进行暂时缓存。
  3. 以太网交换机是一种即插即用设备,其内部的帧交换表(又称为地址表)是通过自学习算法自动地逐渐建立起来的。
  4. 有直通(不检查)和存储转发两种方式,使用硬件转发,速度更快。

以太网交换机的自学习功能:

  1. 首先,交换表是空的。举个例子如下图,A向B发送一帧,当该帧从1接口进入到交换机内,查转发表,查不到。
  2. 然后交换机写入A和接口1,再把该帧从接口1以外的接口广播出去。当B收到时,向A发送回应帧,经过接口3到达交换机内,查表,查到A在接口1,就从接口1转发该帧。然后,写入B和接口3。
  3. 只要C、D向其他发送数据经过交换机,交换机就会记录下来。
  4. 而且,交换机每隔一段时间,都会删除过期的转发表项目。

《《计算机网络》学习总结——数据链路层(完整理解)》

但有时在两台以上交换机连接时,可能会发生兜圈子现象,因为物理上链路成环了,但IEEE802.1D又制定了生成树协议 STP (Spanning Tree Protocol) 。就是不改变网络的实际拓扑,但在逻辑上则切断某些链路,使得从一台主机到所有其他主机的路径是无环路的树状结构,从而消除了兜圈子现象。

以太网逻辑拓扑从总线到星形

因为大规模集成电路以及专用芯片的发展,使得星形结构的以太网交换机可以做得既便直又可靠。采用以太网交换机的星形结构又成为以太网的首选拓扑,因为以太网交换机不使用共享总线,没有碰撞问题,因此不使用 CSMA/CD 协议,而是以全双工方式工作。但因为它的帧结构未改变,仍然采用以太网的帧结构,故仍叫以太网。

3.4.3 虚拟局域网

在主机数量过大的局域网中广播,会耗费较多的资源,当网络配置错误的时候,还可能造成无限兜圈子,造成广播风暴。所以,利用以太网交换机建立虚拟局域网(VLAN),就可以把一个较大局域网分割成一些较小的局域网,也即广播域。

虚拟局域网 VLAN 是由一些局域网网段构成的与物理位置无关的逻辑组,而这些网段具有某些共同的需求。每一个 VLAN 的帧都有一个明确的标识符,指明发送这个帧的计算机属于哪一个 VLAN。虚拟局域网其实只是局域网给用户提供的一种服务,而并不是一种新型局域网

虚拟局域网协议允许在以太网的帧格式中插入一个4字节的标识符(见下图) ,称为 VLAN 标记(tag) ,用来指明发送该帧的计算机属于哪一个虚拟局域网。插入 VLAN标记得出的帧称为 802 .1Q 帧。VLAN标识符为12位的VID。

《《计算机网络》学习总结——数据链路层(完整理解)》

如下图假设,交换机#1连接了7台主机,交换机#2连接了5台,分别处在VLAN-10与VLAN-20中,两台交换机通过汇聚链路链接。

《《计算机网络》学习总结——数据链路层(完整理解)》

当A向B发送帧时,交换机#1能识别目的B同属VLAN-10内,故像在普通以太网中进行帧的转发。

当A向E发送帧时,交换机#1查到E不在本交换机内,故在给以太网帧加上VLAN标识转成802.1Q再转发给交换机#2,然后交换机知道转发给VLAN-10后,然后转回标准的以太网帧再转发给E。

A发送给C或F都不是数据链路层的交换机可以解决得了了。需要网络层的路由器,或直接给当前交换机实现第三层功能。

3.5 小结

  • 链路是从一个结点到相邻结点的一段物理线路,数据链路则是在链路的基础上增加了一些必要的硬件(如网络适配器)和软件(如协议的实现)。
  • 数据链路层使用的信道主要有点对点信道和广播信道两种。
  • 数据链路层传送的协议数据单元是帧。数据链路层的三个基本问题则是:封装成帧、透明传输和差错检测。
  • 循环冗余检验 CRC 是一种检错方法,而帧检验序列 FCS 是添加在数据后面的冗余码。
  • 点对点协议 PPP 是数据链路层使用最多的一种协议,它的特点是:简单;只检测差错,而不是纠正差错;不使用序号,也不进行流量控制;可同时支持多种网络层协议。
  • PPPoE 是为宽带上网的主机使用的链路层协议。
  • 局域网的优点是:具有广播功能,从一个站点可很方便地访问全网;便于系统的扩展和逐渐演变;提高了系统的可靠性、可用性和生存性。
  • 共享通信媒体资源的方法有二:一是静态划分信道(各种复用技术),二是动态媒体接入控制,又称为多点接入(随机接入或受控接入)。
  • IEEE 802 委员会曾把局域网的数据链路层拆成两个子层,即逻辑链路控制(LLC)子层(与传输媒体无关)和媒体接入控制(MAC)子层(与传输媒体有关)。但现在 LLC 子层己成为历史。
  • 计算机与外界局域网的通信要通过通信适配器(或网络适配器),它又称为网络接口卡或网卡。计算机的硬件地址就在适配器的 ROM 中。
  • 以太网采用无连接的工作方式,对发送的数据帧不进行编号,也不要求对方发回确认。目的站收到有差错帧就把它丢弃,其他什么也不做。
  • 以太网采用的协议是具有冲突检测的载波监昕多点接入 CSMA/CD 。协议的要点 是:发送前先监听,边发送边监听,一旦发现总线上出现了碰撞,就立即停止发送。然后按照退避算法等待一段随机时间后再次发送。因此,每一个站在自己发送数据之后的一小段时间内,存在着遭遇碰撞的可能性。以太网上各站点都平等地争用以太网信道。
  • 传统的总线以太网基本上都是使用集线器的双绞线以太网。这种以太网在物理上是星形网,但在逻辑上则是总线形网。集线器工作在物理层,它的每个接口仅仅简单地转发比特,不进行碰撞检测。
  • 以太网的硬件地址,即 MAC 地址实际上就是适配器地址或适配器标识符,与主机所在的地点无关。源地址和目的地址都是 48 位长。
  • 以太网的适配器有过滤功能,它只接收单播帧、广播帧或多播帧。
  • 使用集线器可以在物理层扩展以太网(扩展后的以太网仍然是一个网络)。
  • 交换式集线器常称为以太网交换机或第二层交换机(工作在数据链路层)。它就是 一个多接口的网桥,而每个接口都直接与某台单主机或另一个集线器相连,且工作在全双工方式。以太网交换机能同时连通许多对的接口,使每一对相互通信的主机都能像独占通信媒体那样,无碰撞地传输数据。
  • 高速以太网有 100 Mbitls 的快速以太网、吉比特以太网和 10 Gbitls 10 吉比特以 太网。最近还发展到 100 吉比特以太网。在宽带接入技术中,也常使用高速以太网 进行接入。

本文参考 计算机网络(第8版) / 谢希仁编著. —-北京:电子工业出版社,2021.6

若对你有所帮助,请点个赞,欢迎交流。


推荐阅读
  • 汇总了2023年7月7日最新的网络安全新闻和技术更新,包括最新的漏洞披露、工具发布及安全事件。 ... [详细]
  • 【MySQL】frm文件解析
    官网说明:http:dev.mysql.comdocinternalsenfrm-file-format.htmlfrm是MySQL表结构定义文件,通常frm文件是不会损坏的,但是如果 ... [详细]
  • 使用Matlab创建动态GIF动画
    动态GIF图可以有效增强数据表达的直观性和吸引力。本文将详细介绍如何利用Matlab软件生成动态GIF图,涵盖基本代码实现与高级应用技巧。 ... [详细]
  • 本文提供了一种有效的方法来解决当Android Studio因电脑意外重启而导致的所有import语句出现错误的问题。通过清除缓存和重建项目结构,可以快速恢复开发环境。 ... [详细]
  • 本文提供了一个关于AC自动机(Aho-Corasick Algorithm)的详细解析与实现方法,特别针对P3796题目进行了深入探讨。文章不仅涵盖了AC自动机的基本概念,还重点讲解了如何通过构建失败指针(fail pointer)来提高字符串匹配效率。 ... [详细]
  • 本文分享了作者在使用LaTeX过程中的几点心得,涵盖了从文档编辑、代码高亮、图形绘制到3D模型展示等多个方面的内容。适合希望深入了解LaTeX高级功能的用户。 ... [详细]
  • 本文详细介绍如何在SSM(Spring + Spring MVC + MyBatis)框架中实现分页功能。包括分页的基本概念、数据准备、前端分页栏的设计与实现、后端分页逻辑的编写以及最终的测试步骤。 ... [详细]
  • SSE图像算法优化系列三:超高速导向滤波实现过程纪要(欢迎挑战)
    自从何凯明提出导向滤波后,因为其算法的简单性和有效性,该算法得到了广泛的应用,以至于新版的matlab都将其作为标准自带的函数之一了&#x ... [详细]
  • 解读基因集富集分析(GSEA)结果及应用
    本文详细介绍了基因集富集分析(Gene Set Enrichment Analysis, GSEA)的基本原理,以及如何通过GSEA分析结果来解析基因表达数据。此外,还提供了使用R语言进行GSEA分析的具体方法。 ... [详细]
  • 编码unicode解决了语言不通的问题.但是.unicode又有一个新问题.由于unicode是万国码.把所有国家的文字都编进去了.这就导致一个unicode占用的空间会很大.原来 ... [详细]
  • 春季职场跃迁指南:如何高效利用金三银四跳槽季
    随着每年的‘金三银四’跳槽高峰期的到来,许多职场人士都开始考虑是否应该寻找新的职业机会。本文将探讨如何制定有效的职业规划、撰写吸引人的简历以及掌握面试技巧,助您在这关键时期成功实现职场跃迁。 ... [详细]
  • 服务器虚拟化存储设计,完美规划储存与资源,部署高性能虚拟化桌面
    规划部署虚拟桌面环境前,必须先估算目前所使用实体桌面环境的工作负载与IOPS性能,并慎选储存设备。唯有谨慎估算贴近实际的IOPS性能,才能 ... [详细]
  • 网络流24题——试题库问题
    题目描述:假设一个试题库中有n道试题。每道试题都标明了所属类别。同一道题可能有多个类别属性。现要从题库中抽取m道题组成试卷。并要求试卷包含指定类型的试题。试设计一个满足要求的组卷算 ... [详细]
  • 本文介绍了如何利用OpenCV库进行图像的边缘检测,并通过Canny算法提取图像中的边缘。随后,文章详细说明了如何识别图像中的特定形状(如矩形),并应用四点变换技术对目标区域进行透视校正。 ... [详细]
  • 深入解析C语言中的关键字及其分类
    本文将全面介绍C语言中的关键字,并按照功能将其分为数据类型关键字、控制结构关键字、存储类别关键字和其他关键字四大类,旨在帮助读者更好地理解和运用这些基本元素。C语言中共有32个关键字。 ... [详细]
author-avatar
区小靜
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有