3.1 使用点对点信道的数据链路层
- 数据链路层属于计算机网络的低层。数据链路层使用的信道有以下两种类型:
- 点对点信道。使用一对一的点对点通信方式。
- 广播信道。使用一对多的广播通信方式,过程复杂。广播信道上连接的主机很多,必须使用专用的共享信道协议来协调这些主机的数据发送。
- 本章重要的内容:
- 数据链路层的点对点信道和广播信道的特点,以及这两种信道所使用的协议 (PPP 协议以及 CSMA/CD 协议) 的特点。
- 数据链路层的三个基本问题:封装成帧、透明传输和差错检测。
- 以太网 MAC 层的硬件地址。
- 适配器、转发器、集线器、网桥、以太网交换机的作用以及使用场合。
3.1.1 数据链路和帧
- 链路是从一个结点到相邻结点的一段物理线路,中间没有其他的交换结点。在进行数据通信时,两台计算机之间的通信路径要经过许多段链路。链路只是一条路径的组成部分。
- 当需要在一条线路上传送数据时,除了必须有一条物理线路外,还必须有一些通信协议控制数据的传输。把实现这些协议的硬件和软件加到链路上,构成了数据链路。常用的方法是使用网络适配器来实现协议。一般适配器都包括了数据链路层和物理层这两层的功能。
- 数据链路层把网络层交下来的数据构成帧发送到链路上,把接收到的帧中的数据取出并上交给网络层。在互联网中,网络层协议数据单元就是 IP 数据报 (或简称为数据报、分组或包)。
- 点对点信道的数据链路层在进行通信时的主要步骤如下:
- 结点 A 的数据链路层把网络层交下来的 IP 数据报添加首部和尾部封装成帧。
- 结点 A 把封装好的帧发送给结点 B 的数据链路层。
- 若结点 B 的数据链路层收到的帧无差错,则从收到的帧中提取出 IP 数据报交给上面的网络层;否则丢弃这个帧。
3.1.2 三个基本问腿
- 数据链路层协议有多种,但有三个基本问题是共同的:封装成帧、透明传输和差错检测:
- 封装成帧
- 封装成帧是在一段数据的前后添加首部和尾部,构成了一个帧。
- 帧长等于帧的数据部分长度加上帧首部和帧尾部的长度。
- 首部和尾部的作用是进行帧定界 (即确定帧的界限)。首部和尾部还包括许多控制信息。
- 为了提高帧的传输效率,应当使帧的数据部分长度尽可能地大于首部和尾部的长度。但是,每一种链路层协议都规定了所能传送的帧的数据部分长度上限——最大传送单元(MTU)。
- 透明传输
- 由于帧的开始和结束的标记使用指明的控制字符,因此,所传输的数据中任何 8 比特的组合不允许和用作帧定界的控制字符的比特编码一样,否则会出现帧定界的错误。
- 当传送的帧是用文本文件组成的帧时 (文本文件中的字符都是从键盘上输入的),其数据部分不会出现像 SOH 或 EOT 这样的帧定界控制字符。不管从键盘上输入什么字符都可以放在这样的帧中传输过去,这样的传输就是透明传输。
- 当数据部分是非 ASCII 码的文本文件时 (如二进制代码的计算机程序或图像等)。如果数据中的某个字节的二进制代码和 SOH 或 EOT 这种控制字符一样 (见图 3-6),数据链路层会错误地找到帧的边界,把部分帧收下,而把剩下的那部分数据丢弃。
- 解决透明传输问题,必须使数据中可能出现的控制字符 SOH 和 EOT 在接收端不被解释为控制字符。方法是:发送端的数据链路层在数据中出现控制字符的前面插入一个转义字符 ESC。在接收端的数据链路层,在把数据送往网络层之前删除插入的转义字符。这被称为字节填充或字符填充。如果转义字符也出现在数据当中,那么解决方法仍然是在转义字符的前面插入一个转义字符。因此,当接收端收到连续的两个转义字符时,就删除其中前面的一个。图 3-7 表示用字节填充法解决透明传输的问题。
- 差错检测
- 现实的通信链路不是理想的。比特在传输过程中可能会产生差错:1 可能变成 0,而 0 可能变成 1。这就叫做比特差错。比特差错是传输差错中的一种。
- 一段时间内,传输错误的比特占所传输比特总数的比率称为误码率 (BER)。
- 为保证数据传输的可靠性,在数据链路层广泛使用循环冗余检验 (CRC) 的检错技术。
- 通过例子说明循环冗余检验的原理。
- 在发送端,把数据划分为组,假定每组 k 个比特。待传送的数据 M=101001 (k=6)。CRC 运算就是在数据 M 的后面添加供差错检测用的 n 位冗余码,构成一个帧发送出去,一共发送 (k + n) 位。在所要发送的数据后面增加 n 位的冗余码,虽然增大了数据传输的开销,但可以进行差错检测。
- 这 n 位冗余码可用以下方法得出。用二进制的模 2 运算进行 2n 乘 M 的运算,这相当于在 M 后面添加 n 个 0。得到的 (k+n) 位的数除以收发双方事先商定的长度为 (n+1) 位的除数 P,得出商是 Q 而余数是 R (n 位,比 P 少一位)。在图 3-8 所示的例子中,M=101001 (即 k=6)。假定除数 P=1101 (即 n=3)。经模 2 除法运算后的结果是:商 Q=110101 (这个商并没有什么用处),余数 R=001。余数 R 作为冗余码拼接在数据 M 的后面发送出去。这种为了进行检错而添加的冗余码常称为帧检验序列 (FCS)。因此加上 FCS 后发送的帧是 101001001,共有 (k+n) 位。
- 循环冗余检验 CRC 和帧检验序列 FCS 并不是同一个概念。CRC 是一种检错方法,而 FCS 是添加在数据后面的冗余码,在检错方法上可选用 CRC,也可不选用 CRC。
- 在接收端对收到的每一帧经过 CRC 检验后,有两种情况:
- 得出的余数 R=0,判定这个帧没有差错,接受。
- 余数 R≠0,这个帧有差错 (但无法确定究竟是哪一位或哪几位出现了差错),丢弃。
- 用多项式来表示循环冗余检验过程。用多项式 P(X) =X3 +X2+1表示上面的除数 P=1101 (最高位对应于 X3,最低位对应于 X0)。多项式 P(X) 称为生成多项式。现在广泛使用的生成多项式 P(X) 有以下几种:
- 在数据链路层,发送端帧检验序列 FCS 的生成和接收端的 CRC 检验都是用硬件完成的,处理很迅速,不会延误数据的传输。
- 在数据链路层若仅仅使用循环冗余检验 CRC 差错检测技术,只能做到对帧的无差错接受,即:“凡是接收端数据链路层接受的帧均无差错”。
- 传输差错分为两大类:
- 最基本的比特差错
- 收到的帧并没有出现比特差错,却出现了帧丢失、帧重复或帧失序。例如,发送方连续传送三个帧:1,2,3。假定接收端收到的每一个帧都没有比特差错,但却出现下面的几种情况:
- 帧丢失 :收到 1,3 (丢失 2)。
- 帧重复 :收到1,2,2,3 (收到两个2)。
- 帧失序 :收到1,3,2 (后发送的帧反而先到达了接收端,这与一般数据链路层的传输概念不一样)。
- 现在的通信线路的质量大大提高,由通信链路质量不好引起差错的概率大大降低。现在互联网采取了区别对待的方法:
- 对于通信质量良好的有线传输链路,数据链路层协议不使用确认和重传机制,不要求数据链路层向上提供可靠传输的服务。如果在数据链路层传输数据时出现了差错并且需要进行改正,那么改正差错的任务就由上层协议来完成。
- 对于通信质量较差的无线传输链路,数据链路层协议使用确认和重传机制,数据链路层向上提供可靠传输的服务。
- 封装成帧
3.2 点对点协议 PPP
- 在通信线路质量较差的年代,使用可靠传输协议是种好办法,能实现可靠传输的高级数据链路控制 (HDLC) 成为流行的数据链路层协议。对于点对点的链路,简单的点对点协议 (PPP) 是目前使用得最广泛的数据链路层协议。
3.2.1 PPP 协议的特点
- PPP 协议是用户计算机和 ISP 进行通信时使用的数据链路层协议。
- PPP 协议应满足的需求
- 简单 在设计互联网体系结构时复杂的部分在 TCP 协议中,而网际协议 IP 比较简单,它提供的是不可靠的数据报服务。在这种情况下,数据链路层没有必要提供比 IP 协议更多的功能。因此,对数据链路层的帧,不需要纠错,不需要序号,也不需要流量控制。
- 封装成帧 PPP 协议规定特殊的字符作为帧定界符,以便使接收端从收到的比特流中能准确地找出帧的开始和结束位置。
- 透明性 PPP 协议保证数据传输的透明性。如果数据中碰巧出现了和帧定界符一样的比特组合时,要采取有效的措施来解决问题。
- 多种网络层协议 PPP 协议能够在在同一条物理链路上同时支持多种网络层协议 (如 IP 和 IPX 等) 的运行。当点对点链路所连接的是局域网或路由器时,PPP 协议必须同时支持在链路所连接的局域网或路由器上运行的各种网络层协议。
- 多种类型链路 除了要支持多种网络层的协议外,PPP 还必须能够在多种类型的链路上运行。
- 差错检测 PPP 协议必须能够对接收端收到的帧进行检测,并立即丢弃有差错的帧。若在数据链路层不进行差错检测,那么出现差错的无用帧还要在网络中继续向前转发,白白浪费许多的网络资源。
- 检测连接状态 PPP 协议必须具有一种能够及时自动检测出链路是否处于正常工作状态的机制。当出现故障的链路隔了一段时间后又重新恢复正常工作时,就需要这种及时检测功能。
- 最大传送单元 PPP 协议必须对每种类型的点对点链路设置最大传送单元 MTU 的标准默认值,目的是为了促进各种实现之间的互操作性。如果高层协议发送的分组过长并超过 MTU 的数值,PPP 就要丢弃这样的帧,并返回差错。MTU 是数据链路层的帧可以载荷的数据部分的最大长度,不是帧的总长度。
- 网络层地址协商 PPP 协议必须提供一种机制使通信的两个网络层的实体能够通过协商知道或能够配置彼此的网络层地址。协商的算法应尽可能简单,并且能够在所有的情况下得出协商结果。
- 数据压缩协商 PPP 协议必须提供一种方法来协商使用数据压缩算法。但 PPP 协议并不要求将数据压缩算法进行标准化。
- PPP 协议的组成
- 一个将 IP 数据报封装到串行链路的方法。PPP 既支持异步链路,也支持面向比特的同步链路。IP 数据报在 PPP 帧中就是其信息部分。这个信息部分的长度受最大传送单元 MTU 的限制。
- 一个用来建立、配置和测试数据链路连接的链路控制协议 (LCP)。
- 一套网络控制协议 (NCP),其中的每一个协议支持不同的网络层协议。
3.2.2 PPP 协议的帧格式
- 各字段的意义
- PPP 的帧格式如图 3-10 所示。PPP 帧的首部和尾部分别为四个字段和两个字段。
- 首部的第一个字段和尾部的第二个字段都是标志字段 F (Flag),规定为 0x7E (符号“0x”表示它后面的字符是用十六进制表示的。十六进制的 7E 的二进制表示是 01111110)。标志字段表示一个帧的开始或结束。因此标志字段就是 PPP 帧的定界符。连续两帧之间只需要用一个标志字段。如果出现连续两个标志字段,就表示这是一个空帧,应当丢弃;首部中的地址字段 A 规定为 0xFF (即 11111111),控制字段 C 规定为 0x03 (即 00000011)。这两个字段并没有携带 PPP 帧的信息;PPP 首部的第四个字段是 2 字节的协议字段。当协议字段为 0x0021 时,PPP 帧的信息字段就是 IP 数据报。若为 0xC021,则信息字段是 PPP 链路控制协议 LCP 的数据,而 0x8021 表示这是网络层的控制数据;信息字段的长度是可变的,不超过 1500 字节;尾部中的第一个字段 (2 字节) 是使用 CRC 的帧检验序列 FCS。
- 字节填充
- PPP 使用异步传输时,把转义符定义为 0x7D (即 01111101),并使用字节填充,RFC 1662 规定了如下所述的填充方法:
- 把信息字段中出现的每一个 0x7E 字节转变成为 2 字节序列 (0x7D,0x5E)。
- 若信息字段中出现一个 0x7D 的字节 (即出现了和转义字符一样的比特组合),则把 0x7D 转变成为 2 字节序列 (0x7D,0x5D)。
- PPP 使用异步传输时,把转义符定义为 0x7D (即 01111101),并使用字节填充,RFC 1662 规定了如下所述的填充方法:
- 零比特填充
- PPP 协议用在 SONET/SDH 链路时,使用同步传输 (一连串的比特连续传送) 而不是异步传输 (逐个字符地传送)。在这种情况下,PPP 协议采用零比特填充方法来实现透明传输。
- 零比特填充的做法是:在发送端,扫描整个信息字段。只要发现有 5 个连续 1,则立即填入一个 0。因此经过这种零比特填充后的数据,可以保证在信息字段中不会出现 6 个连续 1。接收端在收到一个帧时,先找到标志字段 F 以确定一个帧的边界,接着再用硬件对其中的比特流进行扫描。每当发现 5 个连续 1 时,就把这 5 个连续 1 后的一个 0 删除,以还原成原来的信息比特流 (图 3-11)。这样就保证了透明传输:在所传送的数据比特流中可以传送任意组合的比特流,而不会引起对帧边界的错误判断。
3.2.3 PPP 协议的工作状态
- 当用户拨号接入 ISP 后,建立了一条从用户个人电脑到 ISP 的物理连接。这时,用户个人电脑向 ISP 发送一系列的链路控制协议 LCP 分组 (封装成多个 PPP 帧),以便建立 LCP 连接。这些分组及其响应选择了将要使用的一些 PPP 参数。接着进行网络层配置,网络控制协议 NCP 为新接入的用户个人电脑分配一个临时的 IP 地址。用户个人电脑成为互联网上的一个有 IP 地址的主机;当用户通信完毕时,NCP 释放网络层连接,收回原来分配出去的 IP 地址。接着,LCP 释放数据链路层连接。最后释放物理层的连接。
- PPP 链路的起始和终止状态永远是图 3-12 中的“链路静止”状态,这时在用户个人电脑和 ISP 的路由器之间并不存在物理层的连接。
- 当用户个人电脑通过调制解调器呼叫路由器时,路由器能够检测到调制解调器发出的载波信号。在双方建立了物理层连接后,PPP 进入“链路建立”状态,目的是建立链路层的 LCP 连接。
- 这时 LCP 开始协商配置选项,即发送 LCP 的配置请求帧。这是个 PPP 帧,其协议字段置为 LCP 对应的代码,而信息字段包含特定的配置请求。链路的另一端可以发送以下几种响应中的一种:
- 配置确认帧 所有选项都接受
- 配置否认帧 所有选项都理解但不能接受。
- 配置拒绝帧 选项有的无法识别或不能接受,需要协商。
- LCP 配置选项包括链路上的最大帧长、所使用的鉴别协议的规约,以及不使用 PPP 帧中的地址和控制字段。
- 协商结束后双方就建立了 LCP 链路,接着就进入“鉴别”状态。在这一状态,只允许传送 LCP 协议的分组、鉴别协议的分组以及监测链路质量的分组。若使用口令鉴别协议 (PAP),发起通信的一方需要发送身份标识符和口令。系统允许用户重试若干次。如果需要有更好的安全性,可使用更加复杂的口令握手鉴别协议 (CHAP)。若鉴别身份失败,则转到“链路终止”状态。若鉴别成功,则进入“网络层协议”状态。
- 在“网络层协议”状态,PPP 链路两端的网络控制协议 NCP 根据网络层的不同协议互相交换网络层特定的网络控制分组。现在的路由器能同时支持多种网络层协议。PPP 协议两端的网络层可以运行不同的网络层协议,但仍然可使用同一个 PPP 协议进行通信。
- 如果在 PPP 链路上运行的是 IP 协议,则对 PPP 链路的每一端配置 IP 协议模块时要使用 NCP 中支持 IP 的协议——IP 控制协议 (IPCP)。IPCP 分组也封装成 PPP 帧 (其中的协议字段为 0x8021) 在 PPP 链路上传送。在低速链路上运行时,双方可以协商使用压缩的 TCP 和 IP 首部,以减少在链路上发送的比特数。
- 网络层配置完毕后,链路进入可进行数据通信的“链路打开”状态。链路的两个 PPP 端点可以彼此向对方发送分组。两个 PPP 端点还可发送回送请求 LCP 分组和回送回答 LCP 分组,以检查链路的状态。
- 数据传输结束后,可以由链路的一端发出终止请求 LCP 分组请求终止链路连接,在收到对方发来的终止确认 LCP 分组后,转到“链路终止”状态。如果链路出现故障,会从“链路打开”状态转到“链路终止”状态。当调制解调器的载波停止后,则回到“链路静止”状态。
3.3 使用广播信道的数据链路层
3.3.1 局域网的数据链路层
- 局域网按网络拓扑进行分类。图 3-13(a) 是星形网 。由于集线器的出现和双绞线大量用于局域网中,星形以太网以及多级星形结构的以太网获得了广泛的应用。图 3-13(b) 是环形网 ,图 3-13(c) 为总线网,各站直接连在总线上。总线两端的匹配电阻吸收在总线上传播的电磁波信号的能量,避免在总线上产生有害的电磁波反射。总线网以传统以太网最为著名。局域网经过了四十年的发展,以太网已经在局域网市场中占据了绝对优势。
- 共享信道要着重考虑的一个问题是如何使众多用户能够合理而方便地共享通信媒体资源。在技术上有两种方法:
- 静态划分信道,如频分复用、时分复用、波分复用和码分复用等。用户只要分配到了信道就不会和其他用户发生冲突。但这种划分信道的方法代价高,不适合局域网使用。
- 动态媒体接入控制 ,又称多点接入,特点是信道并非在用户通信时固定分配给用户。分为两类:
- 随机接入 特点是所有的用户可随机地发送信息。但如果恰巧有两个或更多的用户在同一时刻发送信息,在共享媒体上会产生碰撞 (即发生了冲突),使得这些用户的发送都失败。因此,必须有解决碰撞的网络协议。
- 受控接入 特点是用户不能随机地发送信息,必须服从控制。典型代表有分散控制的令牌环局域网和集中控制的多点线路探询,或称为轮询。
- 以太网的两个标准
- 为了使数据链路层能更好地适应多种局域网标准,局域网的数据链路层又拆成两个子层,即逻辑链路控制 (LLC) 子层和媒体接入控制 (MAC) 子层。
- 适配器的作用
- 适配器的一个功能是:进行数据串行传输和并行传输的转换。
- 适配器所实现的功能包含了数据链路层及物理层这两个层次的功能。
- 计算机的硬件地址在适配器的 ROM 中,而软件地址——IP 地址,在计算机的存储器中。
3.3.2 CSMA/CD 协议
- 局域网上的计算机被称为“主机”、“工作站”、“站点”或“站”。
- 为了通信的简便,以太网采取两种措施:
- 采用灵活的无连接的工作方式,不必先建立连接,可以直接发送数据。适配器对发送的数据帧不进行编号,也不要求对方发回确。以太网提供的服务是尽最大努力的交付,即不可靠的交付。当目的站收到有差错的数据帧时,就把帧丢弃,其他什么也不做。对有差错帧是否需要重传则由高层来决定。例如,如果高层使用 TCP 协议,那么 TCP 就会发现丢失了一些数据。于是经过一定的时间后,TCP 就把这些数据重新传递给以太网进行重传。但以太网并不知道这是重传帧,而是当作新的数据帧来发送。
- 以太网发送的数据使用曼彻斯特编码的信号。二进制基带数字信号通常是高、低电压交替出现的信号。使用这种信号的问题是当出现一长串的连 1 或连 0 时,接收端就无法从收到的比特流中提取位同步 (即比特同步) 信号。如图 3-16 所示,曼彻斯特编码的编码方法是把每一个码元分成两个相等的间隔。码元 1 是前一个间隔为低电压而后一个间隔为高电压。码元 0 则正好相反,从高电压变到低电压 (也可采用相反的约定,即 1 是“前高后低”而 0 是“前低后高”),保证了在每一个码元的正中间出现一次电压的转换,接收端利用这种电压的转换很方便地把位同步信号提取出来。缺点是它所占的频带宽度比原始的基带信号增加了一倍 (因为每秒传送的码元数加倍了)。
- CSMA/CD 协议的要点:
- 多点接入 总线型网络,计算机以多点接入的方式连接在一根总线上。实质是”载波监听”和”碰撞检测”。
- 载波监听 用电子技术检测总线上有没有其他计算机也在发送。载波监听是检测信道。不管在发送前,还是在发送中,每个站都必须不停地检测信道。在发送前检测信道,是为了获得发送权。如果检测出已经有其他站在发送,则暂时不发送数据,等到信道变为空闲时才发送。在发送中检测信道,是为了及时发现有没有其他站的发送和本站发送的碰撞。
- 碰撞检测 边发送边监听,即适配器边发送数据边检测信道上的信号电压的变化情况,以判断自己在发送数据时其他站是否也在发送数据。当几个站同时在总线上发送数据时,总线上的信号电压变化幅度会增大 (互相叠加)。当适配器检测到信号电压变化幅度超过门限值时,就认为总线上至少有两个站同时在发送数据,表明产生了碰撞,总线上传输的信号严重失真,无法从中恢复出有用的信息来。任何一个正在发送数据的站,一旦发现总线上出现了碰撞,其适配器要停止发送。“碰撞检测”也称为“冲突检测”。
- 因为电磁波在总线上以有限的速率传播,所以即使每个站在发送数据之前已经监听到信道为“空闲”,还会出现数据在总线上的碰撞。这和开会相似,一听见会场安静,我们就立即发言,但偶尔也会发生几个人同时抢着发言而产生冲突的情况。
- 图 3-17 所示的例子可以说明这种情况。设图中的局域网两端的站 A 和 B 相距 1km,用同轴电缆相连。电磁波在 1km 电缆的传播时延约为 5µs。因此,A 向 B 发出的数据,在约 5µs 后才能传送到 B。 若在 A 发送的数据到达 B 前,B 也发送,则在某个时间和 A 发送的帧会发生碰撞。碰撞的结果是两个帧都变得无用。在局域网的分析中,常把总线上的单程端到端传播时延记为 τ。A 发送数据后,最迟要两倍的总线端到端的传播时延 (2τ),或总线的端到端往返传播时延才能知道自己发送的数据和其他站发送的数据有没有发生碰撞。由于局域网上任意两个站之间的传播时延有长有短,因此局域网必须按最坏情况设计,即取总线两端的两个站之间的传播时延 (这两个站之间的距离最大) 为端到端传播时延。
- 下面是图 3-17 中的一些重要的时刻。
在 t=0 时,A 发送数据。B 检测到信道为空闲。
在 t=τ−δ 时,A 发送的数据还没有到达 B 时,由于 B 检测到信道是空闲的,因此 B 发送数据。
经过时间 δ/2 后,即在 t=τ−δ/2 时,A 发送的数据和 B 发送的数据发生了碰撞。但这时 A 和 B 都不知道发生了碰撞。
在 t=τ 时,B 检测到发生了碰撞,于是停止发送数据。
在 t=2τ−δ 时,A 也检测到发生了碰撞,因而也停止发送数据。
A 和 B 发送数据均失败,它们都要推迟一段时间再重新发送。 - 每一个站在自己发送数据之后的一小段时间内,存在着遭遇碰撞的可能性。这一小段时间是不确定的,它取决于另一个发送数据的站到本站的距离。因此,以太网不能保证某一时间之内一定能够把自己的数据帧成功地发送出去。这一特点称为发送的不确定性。如果希望在以太网上发生碰撞的机会很小,必须使整个以太网的平均通信量远小于以太网的最高数据率。
- 从图 3-17 可看出,最先发送数据帧的 A 站,在发送数据帧后至多经过时间 2τ 就可知道所发送的数据帧是否遭受了碰撞。这就是 δ→0 的情况。因此以太网的端到端往返时间 2τ 称为争用期。争用期又称为碰撞窗口。因为一个站在发送完数据后,只有通过争用期的“考验”,即经过争用期这段时间还没有检测到碰撞,才能肯定这次发送不会发生碰撞。这时,就可以放心把这一帧数据顺利发送完毕。
- 下面是图 3-17 中的一些重要的时刻。
- 在使用 CSMA/CD 协议时,一个站不能同时进行发送和接收 (但必须边发送边监听信道),以太网不能进行全双工通信而只能进行**双向交替通信 (半双工通信)**。
- 以太网使用截断二进制指数退避算法确定碰撞后重传的时机。这种算法让发生碰撞的站在停止发送数据后,不是等待信道变为空闲后立即再发送数据,而是推迟 (即退避 ) 一个随机的时间。因为如果几个发生碰撞的站都在监听信道,那么都会同时发现信道变成了空闲。如果大家都同时再重新发送,那么肯定又会发生碰撞。为了使各站进行重传时再次发生冲突的概率减小,具体的退避算法如下:
- 协议规定了基本退避时间为争用期 2τ,具体的争用期时间是 51.2µs。对于 10Mbit/s 以太网,在争用期内可发送 512bit,即 64 字节。也可以直接使用比特作为争用期的单位,争用期是 512bit,即发送 512bit 所需的时间。
- 从离散的整数集合[0,1,…,(2k −1)]中随机取出一个数,记为 r。重传应推后的时间就是 r 倍的争用期。参数 k 按下面的公式 (3-1) 计算:
- 可见当重传次数不超过 10 时,参数 k 等于重传次数;但当重传次数超过 10 时,k 就等于 10。
- 当重传达 16 次仍不能成功时,则丢弃该帧,并向高层报告。
- 以太网在发送数据时,如果在争用期 (共发送了 64 字节) 没有发生碰撞,那么后续发送的数据就一定不会发生冲突。如果发生碰撞,一定是在发送的前 64 字节之内。由于一检测到冲突就立即中止发送,这时已经发送出去的数据一定小于 64 字节,因此凡长度小于 64 字节的帧都是由于冲突而异常中止的无效帧。只要收到了这种无效帧,就应当立即将其丢弃。
- 强化碰撞是当发送数据的站一旦发现发生了碰撞时,除了立即停止发送数据外,还要再继续发送 32 比特或 48 比特的人为干扰信号,以便让所有用户都知道现在已经发生了碰撞。
- A 站从发送数据开始到发现碰撞并停止发送的时间间隔是 *TB*。A 站得知碰撞已经发生时所发送的强化碰撞的干扰信号的持续时间是 TJ 。图中的 B 站在得知发生碰撞后,也要发送人为干扰信号。发生碰撞使 A浪费时间 TB + TJ。可是整个信道被占用的时间还要增加一个单程端到端的传播时延 t。因此总线被占用的时间是 TB +TJ +τ。
- CSMA/CD 协议的要点如下:
- 准备发送:适配器从网络层获得一个分组,加上以太网的首部和尾部,组成以太网帧,放入适配器的缓存中。但在发送之前,必须先检测信道。
- 检测信道:若检测到信道忙,则应不停地检测,一直等待信道转为空闲。若检测到信道空闲,并在 96 比特时间内信道保持空闲 (保证了帧间最小间隔),就发送这个帧。
- 在发送过程中仍不停地检测信道,即网络适配器要边发送边监听。有两种可能性:
- 发送成功:在争用期内一直未检测到碰撞。这个帧肯定能够发送成功。发送完毕后,其他什么也不做。然后回到 (1)。
- 发送失败:在争用期内检测到碰撞。这时立即停止发送数据,并按规定发送人为干扰信号。适配器接着就执行指数退避算法,等待 r 倍 512 比特时间后,返回到步骤(2),继续检测信道。但若重传达 16 次仍不能成功,则停止重传而向上报错。
3.3.3 使用集线器的星形拓扑
- 10BASE-T 双绞线以太网的出现,是局域网发展史上的一个重要的里程碑,从此以太网的拓扑就从总线型变为更加方便的星形网络,而以太网也就在局域网中占据了统治地位。双绞线比无源电缆可靠、价格便宜且使用方便。
- 使双绞线能够传送高速数据的措施是把双绞线的绞合度做得非常精确。这样不仅可使特性阻抗均匀以减少失真,而且减少了电磁波辐射和无线电频率的干扰。
- 集线器的特点如下:
- 从表面上看,使用集线器的局域网在物理上是一个星形网,但由于集线器使用电子器件来模拟实际电缆线的工作,因此整个系统仍像一个传统以太网那样运行。使用集线器的以太网在逻辑上仍是一个总线网,各站共享逻辑上的总线,使用的还是 CSMA/CD 协议。网络中的各站必须竞争对传输媒体的控制,并且在同一时刻至多只允许一个站发送数据。
- 一个集线器有许多接口,用两对双绞线与一台计算机上的适配器相连,很像一个多接口的转发器。
- 集线器工作在物理层,它的每个接口仅仅简单地转发比特——收到 1 就转发 1,收到 0 就转发 0,不进行碰撞检测。若两个接口同时有信号输入 (即发生碰撞),那么所有的接口都将收不到正确的帧。图 3-20 是具有三个接口的集线器的示意图。
- 集线器采用专门的芯片,进行自适应串音回波抵消。可使接口转发出去的较强信号不致对该接口接收到的较弱信号产生干扰 (这种干扰即近端串音)。每个比特在转发之前还要进行再生整形并重新定时。
3.3.4 以太网的信道利用率
- 一个站在发送帧时出现了碰撞。经过一个争用期 2τ 后,可能又出现了碰撞,经过若干个争用期后发送成功。假定发送帧需要的时间是 *T0*。它等于帧长 (bit) 除以发送速率 (10Mbit/s)。
- 成功发送一个帧需要占用信道的时间是 T0+τ,比这个帧的发送时间要多一个单程端到端时延 τ。这是因为当一个站发送完最后一个比特时,这个比特还要在以太网上传播。在极端的情况下,发送站在传输媒体的一端,而比特在媒体上传输到另一端所需的时间是 τ。因此,必须在经过时间 T0+τ 后以太网的媒体才完全进入空闲状态,才能允许其他站发送数据。
- 要提高以太网的信道利用率,就必须减小 τ 与 T0 之比。在以太网中定义了参数 a,它是以太网单程端到端时延 τ 与帧的发送时间 T0 之比:
- 当 a→0 时,表示只要发生碰撞,就立即可以检测出来,并立即停止发送,因而信道资源被浪费的时间非常少。反之,表明争用期所占的比例越大,使得每发生一次碰撞就浪费了不少的信道资源,信道利用率明显降低。因此,以太网的参数 a 的值应当尽可能小些 。这就要求分子 τ 的数值要小些,分母 T0 的数值要大些。当数据率一定时,以太网的连线的长度受到限制,同时以太网的帧长不能太短。
- 考虑一种理想化的情况。假定以太网上的各站发送数据都不会产生碰撞,并且能够有效地利用网络的传输资源,即总线一旦空闲就有某一个站立即发送数据。这样,发送一帧占用线路的时间是 T0 +τ,而帧本身的发送时间是 *T0*。于是我们可计算出极限信道利用率 Smax 为:
- 虽然实际的以太网不可能有这样高的极限信道利用率,只有当参数 a 远小于 1 才能得到尽可能高的极限信道利用率。若参数 a 远大于1,则极限信道利用率就远小于 1,实际的信道利用率就更小了。据统计,当以太网的利用率达到 30% 时就已经处于重载的情况。很多的网络容量被网上的碰撞消耗掉了。
3.3.5 以太网的 MAC 层
- MAC 层的硬件地址
- 在局域网中,硬件地址又称物理地址或 MAC 地址 (因为这种地址用在 MAC 帧中)。
- 在所有计算机系统的设计中,标识系统都是一个核心问题。在标识系统中,地址是识别某个系统的标识符。
- 名字指出我们所要寻找的那个资源,地址指出那个资源在何处,路由告诉我们如何到达该处。
- 严格地讲,名字与系统的所在地无关。就像我们每一个人的名字一样,不随我们所处的地点而改变。但是 IEEE 802 标准为局域网规定了一种 48 位的全球地址,是指局域网上的每一台计算机中固化在适配器的 ROM 中的地址。
- 假定连接在局域网上的一台计算机的适配器坏了,我们更换了一个新的适配器,那么这台计算机的局域网的“地址”就改变了。
- 假定我们把位于南京的某局域网上的一台笔记本电脑携带到北京,并连接在北京的某局域网上。虽然这台电脑的地理位置改变了,但只要电脑中的适配器不变,那么该电脑在北京的局域网中的“地址”仍然和它在南京的局域网中的“地址”一样。
- 在生产适配器时,6 字节的 MAC 地址已被固化在适配器的 ROM 中。因此,MAC 地址也叫做硬件地址或物理地址,实际上就是适配器地址或适配器标识符 EUI-48。当这块适配器插入(或嵌入) 到某台计算机后,适配器上的标识符 EUI-48 就成为这台计算机的 MAC 地址了。
- 地址记法中有两种标准:
- 第一种记法是把每一字节的最低位写在最左边 (最左边的最低位是第一位)。
- 第二种记法是把每一字节的最高位写在最左边 (最左边的最高位是第一位)。
- 在发送数据时,两种记法都是按照字节的顺序发送,但每一个字节中先发送哪一位则不同:第一种记法先发送最低位,第二种记法先发送最高位。
- 适配器有过滤功能。但适配器从网络上每收到一个 MAC 帧就先用硬件检查 MAC 帧中的目的地址。如果是发往本站的帧,则收下,然后再进行其他的处理。否则就将此帧丢弃,不再进行其他的处理。这样做就不浪费主机的处理机和内存资源。这里“发往本站的帧”包括以下三种帧:
- 单播帧 (一对一),即收到的帧的 MAC 地址与本站的硬件地址相同。
- 广播帧 (一对全体),即发送给本局域网上所有站点的帧 (全 1 地址)。
- 多播帧 (一对多),即发送给本局域网上一部分站点的帧。
- MAC 帧的格式
- 常用的以太网 MAC 帧格式有两种标准,一种是 DIX Ethernet V2 标准 (即以太网 V2 标准),另一种是 IEEE 的 802.3 标准。
- 以太网 V2 的 MAC 帧较为简单,由五个字段组成。前两个字段分别为 6 字节长的目的地址和源地址字段。第三个字段是 2 字节的类型字段,用来标志上一层使用的是什么协议,以便把收到的 MAC 帧的数据上交给上一层的这个协议。第四个字段是数据字段,其长度在 46 到 1500 字节之间 (46 字节是这样得出的:最小长度 64 字节减去 18 字节的首部和尾部就得出数据字段的最小长度)。最后一个字段是 4 字节的帧检验序列 FCS (使用 CRC 检验)。当传输媒体的误码率为 1×10−8 时,MAC 子层可使未检测到的差错小于 1×10−14。
- 为了接收端实现位同步,从 MAC 子层向下传到物理层时要在帧的前面插入 8 字节 (由硬件生成),它由两个字段构成:
- 7 个字节的前同步码 (1 和 0 交替码),作用是使接收端的适配器在接收 MAC 帧时能够迅速调整其时钟频率,使它和发送端的时钟同步,也就是“实现位同步”。
- 帧开始定界符,定义为 10101011。它的前六位的作用和前同步码一样,最后的两个连续的 1 就是告诉接收端适配器:“MAC 帧的信息马上就要来了,请适配器注意接收”。
- IEEE 802.3 标准规定凡出现下列情况之一的即为无效的 MAC 帧:
- 帧的长度不是整数个字节;
- 用收到的帧检验序列 FCS 查出有差错;
- 收到的帧的 MAC 客户数据字段的长度不在 46~1500 字节之间。考虑到 MAC 帧首部和尾部的长度共有 18 字节,可以得出有效的 MAC 帧长度为 64~1518 字节之间。
- 常用的以太网 MAC 帧格式有两种标准,一种是 DIX Ethernet V2 标准 (即以太网 V2 标准),另一种是 IEEE 的 802.3 标准。
3.4 扩展的以太网
3.4.1 在物理层扩展以太网
- 扩展主机和集线器之间距离的一种方法是使用一对光纤和一对光纤调制解调器,如图 3-23 所示:
- 光纤调制解调器的作用是进行电信号和光信号的转换。光纤的时延小,带宽宽,使用这种方法可以使主机和几公里以外的集线器相连接。
- 如果使用多个集线器,可以连接成覆盖更大范围的多级星形结构的以太网。例如,一个学院的三个系各有一个 10BASE-T 以太网 (a),可通过一个主干集线器把各系的以太网连接起来,成为一个更大的以太网 (b)。
- 有以下好处:
- 使这个学院不同系的以太网上的计算机能够进行跨系的通信。
- 扩大了以太网覆盖的地理范围。
- 但这种多级结构的集线器以太网也带来了一些缺点:
- 如图 (a) 所示的例子,在三个系的以太网互连起来之前,每一个系的以太网是一个独立的碰撞域 (冲突域),在任一时刻,在每一个碰撞域中只能有一个站在发送数据。每一个系的以太网的最大吞吐量是 10Mbit/s,因此三个系总的最大吞吐量共有 30Mbit/s。在三个系的以太网通过集线器互连起来后就把三个碰撞域变成一个碰撞域 (范围扩大到三个系),如图 (b) 所示,而这时的最大吞吐量仍然是一个系的吞吐量 10Mbit/s。这就是说,当某个系的两个站在通信时所传送的数据会通过所有的集线器进行转发,使得其他系的内部在这时都不能通信 (一发送数据就会碰撞)。
- 如果不同的系使用不同的以太网技术 (如数据率不同),那么就不可能用集线器将它们互连起来。如果在图 3-24 中,一个系使用 10Mbit/s 的适配器,而另外两个系使用10/100Mbit/s 的适配器,那么用集线器连接起来后,大家都只能工作在 10Mbit/s 的速率。集线器基本上是个多接口的转发器,不能把帧进行缓存。
3.4.2 在数据链路层扩展以太网
- 使用网桥扩展以太网的方法在数据链路层进行。网桥对收到的帧根据其 MAC 帧的目的地址进行转发和过滤。当网桥收到一个帧时,并不是向所有的接口转发此帧,而是根据此帧的目的 MAC 地址,查找网桥中的地址表,然后确定将该帧转发到哪一个接口,或者是把它丢弃。
- 交换式集线器淘汰了网桥。交换式集线器称为以太网交换机或第二层交换机,强调这种交换机工作在数据链路层。
- 以太网交换机的特点:
- 以太网交换机实质上是一个多接口的网桥,通常都有十几个或更多的接口,和工作在物理层的转发器、集线器有很大的差别。以太网交换机的每个接口都直接与一个单台主机或另一个以太网交换机相连,一般都在全双工方式。以太网交换机还具有并行性,能同时连通多对接口,使多对主机能同时通信 (而网桥只能一次分析和转发一个帧)。相互通信的主机都是独占传输媒体,无碰撞地传输数据。
- 以太网交换机的接口有存储器,能在输出端口繁忙时把到来的帧进行缓存。如果连接在以太网交换机上的两台主机,同时向另一台主机发送帧,那么当这台主机的接口繁忙时,发送帧的这两台主机的接口会把收到的帧暂存一下,以后再发送出去。
- 以太网交换机是一种即插即用设备,其内部的帧交换表 (地址表) 是通过自学习算法自动地逐渐建立起来的。以太网交换机由于使用了专用的交换结构芯片,用硬件转发,其转发速率要比使用软件转发的网桥快很多。
- 以太网交换机的性能远超普通的集线器,而且价格不贵。
- 以太网交换机都具有多种速率的接口,方便了各种不同情况的用户。
- 以太网交换机的自学习功能
- 假定在图 3-25 中的以太网交换机有 4 个接口,各连接一台计算机,其 MAC 地址分别是 A,B,C 和 D。在一开始,以太网交换机里面的交换表是空的 (a)。
- A 先向 B 发送一帧,从接口 1 进入到交换机。交换机收到帧后,先查找交换表,没有查到应从哪个接口转发这个帧 (在 MAC 地址这一列中,找不到目的地址为 B 的项目)。接着,交换机把这个帧的源地址 A 和接口 1 写入交换表中,并向除接口 1 以外的所有接口广播这个帧。
- C 和 D 丢弃这个帧,因为目的地址不对。B 收下这个帧。也称过滤。
- 从新写入交换表的项目 (A,1) 可以看出,以后不管从哪一个接口收到帧,只要其目的地址是 A,就应当把收到的帧从接口 1 转发出去。依据是:既然 A 发出的帧是从接口 1 进入到交换机的,那么从交换机的接口 1 转发出的帧也应可以到达 A。
- 假定接下来 B 通过接口 3 向 A 发送一帧。交换机查找交换表,发现交换表中的 MAC 地址有 A。表明要发送给 A 的帧 (即目的地址为 A 的帧) 应从接口 1 转发。于是就把这个帧传送到接口 1 转发给 A。显然,现在已经没有必要再广播收到的帧。交换表这时新增加的项目 (B,3),表明今后如有发送给 B 的帧,就应当从接口 3 转发出去。
- 经过一段时间后,只要主机 C 和 D 也向其他主机发送帧,以太网交换机中的交换表就会把转发到 C 或 D 应当经过的接口号 (2 或 4) 写入到交换表中。这样,交换表中的项目就齐全了。要转发给任何一台主机的帧,都能够很快地在交换表中找到相应的转发接口。
- 考虑到有时可能要在交换机的接口更换主机,或者主机要更换其网络适配器,这就需要更改交换表中的项目。为此,在交换表中每个项目都设有一定的有效时间。过期的项目就自动被删除。用这样的方法保证交换表中的数据符合当前网络的实际状况。
- 以太网交换机的这种自学习方法使得以太网交换机能够即插即用,非常方便。
- 为了增加网络的可靠性,在使用以太网交换机组网时,会增加一些冗余的链路。在这种情况下,自学习的过程就可能导致以太网帧在网络的某个环路中无限制地兜圈子。用图 3-26 的例子来说明这个问题。
- 在图3-26 中,假定一开始主机 A 通过接口交换机 #1 向主机 B 发送一帧。交换机 #1 收到这个帧后就向所有其他接口进行广播发送。现观察其中一个帧的走向:离开交换机 #1 的接口 3→ 交换机 #2 的接口 1→ 接口 2→ 交换机 #1 的接口 4→ 接口 3→ 交换机 #2 的接口 1→……。无限制地循环兜圈子下去,消耗网络资源。
- 为了解决这种兜圈子问题,制定了一个生成树协议 STP。要点是不改变网络的实际拓扑,但在逻辑上则切断某些链路,使得从一台主机到所有其他主机的路径是无环路的树状结构,从而消除了兜圈子现象。
- 假定在图 3-25 中的以太网交换机有 4 个接口,各连接一台计算机,其 MAC 地址分别是 A,B,C 和 D。在一开始,以太网交换机里面的交换表是空的 (a)。
- 从总线以太网到星形以太网
- 随着以太网上站点数目的增多,总线结构以太网的可靠性下降。与此同时,大规模集成电路以及专用芯片的发展,使得星形结构的以太网交换机既便宜又可靠。在这种情况下,采用以太网交换机的星形结构成为首选拓扑,而传统的总线以太网也很快从市场上消失了。
- 总线以太网使用 CSMA/CD 协议,以半双工方式工作。但以太网交换机不使用共享总线,没有碰撞问题,因此不使用 CSMA/CD 协议,而是以全双工方式工作。以太网交换机的帧结构未改变,仍然采用以太网的帧结构。
3.4.3 虚拟局域网
- 虚拟局域网 VLAN 这样定义:虚拟局域网 VLAN 是由一些局域网网段构成的与物理位置无关的逻辑组,这些网段具有某些共同的需求。每一个 VLAN 的帧都有明确的标识符,指明发送这个帧的计算机属于哪一个 VLAN。
- 虚拟局域网其实是局域网给用户提供的一种服务,并不是新型局域网。
- 图 3-27 画的是使用了四个交换机的网络拓扑。设有 10 台计算机分配在三个楼层中,构成了三个局域网,即: LAN1: (A1,A2,B1,C1),LAN2: (A3,B2,C2),LAN3: (A4,B3,C3);这 10 个用户划分为三个工作组,也就是说划分为三个虚拟局域网 VLAN。即: VLAN1: (A1,A2,A3,A4),VLAN2: (B1,B2,B3);VLAN3:(C1,C2,C3)。
- 从图 3-27 可看出,每一个 VLAN 的计算机可处在不同的局域网中,也可以不在同一层楼中。
3.5 高速以太网
3.5.1 100BASE-T 以太网
- 100BASE-T 是在双绞线上传送 100Mbit/s 基带信号的星形拓扑以太网,CSMA/CD 协议,它又称为快速以太网。
- 100BASE-T 可使用以太网交换机提供很好的服务质量,可在全双工方式下工作而无冲突发生。因此,CSMA/CD 协议对全双工方式工作的快速以太网是不起作用的 (但在半双工方式工作时则一定要使用 CSMA/CD 协议)。快速以太网使用的 MAC 帧格式仍然是 IEEE 802.3标准规定的帧格式。
- 从细缆以太网升级到快速以太网的用户必须重新布线。
3.5.2 吉比特以太网
- 吉比特以太网的标准 IEEE 802.3z 有以下特点:
- 允许在 1Gbit/s 下以全双工和半双工两种方式工作。
- 使用 IEEE 802.3 协议规定的帧格式。
- 在半双工方式下使用 CSMA/CD 协议,而在全双工方式不使用 CSMA/CD 协议。
- 与 10BASE-T 和 100BASE-T 技术向后兼容。
- 吉比特以太网的物理层使用两种成熟的技术:
- 来自现有的以太网。
- 美国国家标准协会 ANSI 制定的光纤通道,采用成熟技术就能大大缩短吉比特以太网标准的开发时间。
- 吉比特以太网工作在半双工方式时,必须进行碰撞检测。由于数据率提高了,因此只有减小最大电缆长度或增大帧的最小长度,才能使参数 a 保持为较小的数值。若将吉比特以太网最大电缆长度减小到 10m,网络的实际价值就大大减小。而若将最短帧长提高到 640 字节,则在发送短数据时开销太大。因此,吉比特以太网仍然保持一个网段的最大长度为 100m,采用了载波延伸的办法,使最短帧长仍为 64 字节,同时将争用期增大为 512 字节。凡发送的 MAC 帧长不足 512 字节时,就用一些特殊字符填充在帧的后面,使 MAC 帧的发送长度增大到 512 字节,这对有效载荷并无影响。接收端在收到以太网的 MAC 帧后,要把所填充的特殊字符删除后才向高层交付。当原来仅 64 字节长的短帧填充到 512 字节时,所填充的 448 字节就造成了很大的开销。为此,吉比特以太网还增加了一种功能称为分组突发。这就是当很多短帧要发送时,第一个短帧要采用上面所说的载波延伸的方法进行填充。但随后的一些短帧则可一个接一个地发送,它们之间只需留有必要的帧间最小间隔即可。这样就形成一串分组的突发,直到达到 1500 字节或稍多一些为止。当吉比特以太网工作在全双工方式时 (即通信双方可同时进行发送和接收数据),不使用载波延伸和分组突发。
3.5.3 10 吉比特以太网
- 10GE 的帧格式与 10Mbit/s,100Mbit/s 和 1Gbit/s 以太网的帧格式完全相同,并保留了 802.3 标准规定的以太网最小帧长和最大帧长。使用户在将其已有的以太网进行升级时,仍能和较低速率的以太网很方便地通信。
- 10GE 只工作在全双工方式,不存在争用问题,也不使用 CSMA/CD 协议。使得 10GE 的传输距离大大提高了 (因为不再受必须进行碰撞检测的限制)。
- 现在以太网的工作范围已经从局域网 (校园网、企业网) 扩大到城域网和广域网,从而实现了端到端的以太网传输。这种工作方式的好处是:
- 以太网是一种经过实践证明的成熟技术,无论是互联网服务提供者 ISP 还是端用户都愿意使用以太网。对 ISP 来说,使用以太网还需要在更大的范围进行试验。
- 以太网的互操作性很好,不同厂商生产的以太网都能可靠地进行互操作。
- 在广域网中使用以太网时,价格大约只有同步光纤网 SONET 的五分之一和异步传递方式 ATM 的十分之一。以太网还能够适应多种传输媒体,如铜缆、双绞线以及各种光缆。使具有不同传输媒体的用户在进行通信时不必重新布线。
- 端到端的以太网连接使帧的格式全都是以太网的格式,而不需要再进行帧的格式转换,简化了操作和管理。但是,以太网和现有的其他网络,如帧中继或 ATM 网络,仍然需要有相应的接口才能进行互连。
- 以太网从 10Mbit/s 到 10Gbit/s 甚至到 100Gbit/s 的演进,证明了以太网是:
- 可扩展的 (速率从 10Mbit/s 到 100Gbit/s)。
- 灵活的 (多种媒体、全/半双工、共享/交换)。
- 易于安装。
- 稳健性好。
3.5.4 使用以太网进行宽带接入
- 以太网接入的一个重要特点是它可以提供双向的宽带通信,并且可以根据用户对带宽的需求灵活地进行带宽升级。当城域网和广域网都采用吉比特以太网或 10 吉比特以太网时,采用以太网接入可以实现端到端的以太网传输,中间不需要再进行帧格式的转换。提高了数据的传输效率且降低了传输的成本。
本章的重要概念
链路是从一个结点到相邻结点的一段物理线路,数据链路则是在链路的基础上增加了一些必要的硬件 (如网络适配器) 和软件 (如协议的实现)。
数据链路层使用的信道有点对点信道和广播信道两种。
数据链路层传送的协议数据单元是帧。数据链路层的三个基本问题则是:封装成帧、透明传输和差错检测。
循环冗余检验 CRC 是一种检错方法,而帧检验序列 FCS 是添加在数据后面的冗余码。
点对点协议 PPP 是数据链路层使用最多的一种协议,它的特点是:
- 简单;
- 只检测差错,而不是纠正差错;
- 不使用序号,也不进行流量控制;
- 可同时支持多种网络层协议。
PPPoE 是为宽带上网的主机使用的链路层协议。
局域网的优点是:
- 具有广播功能,从一个站点可很方便地访问全网;
- 便于系统的扩展和逐渐演变;提高了系统的可靠性、可用性和生存性。
共享通信媒体资源的方法有两种:
- 静态划分信道 (各种复用技术);
- 动态媒体接入控制,又称为多点接入 (随机接入或受控接入)。
IEEE 802 委员会曾把局域网的数据链路层拆成两个子层,即逻辑链路控制 (LLC) 子层 (与传输媒体无关) 和媒体接入控制 (MAC) 子层 (与传输媒体有关) 。但现在 LLC 子层已成为历史。
计算机与外界局域网的通信要通过通信适配器 (网络适配器),它又称为网络接口卡或网卡。计算机的硬件地址就在适配器的 ROM 中。
以太网采用无连接的工作方式,对发送的数据帧不进行编号,也不要求对方发回确认。目的站收到有差错帧就把它丢弃,其他什么也不做。
以太网采用的协议是具有冲突检测的载波监听多点接入 CSMA/CD。协议的要点是:发送前先监听,边发送边监听,一旦发现总线上出现了碰撞,就立即停止发送。然后按照退避算法等待一段随机时间后再次发送。因此,每一个站在自己发送数据之后的一小段时间内,存在着遭遇碰撞的可能性。以太网上各站点都平等地争用以太网信道。
传统的总线以太网基本上都是使用集线器的双绞线以太网。这种以太网在物理上是星形网,但在逻辑上则是总线形网。集线器工作在物理层,它的每个接口仅仅简单地转发比特,不进行碰撞检测。
以太网的硬件地址,即 MAC 地址实际上就是适配器地址或适配器标识符,与主机所在的地点无关。源地址和目的地址都是 48 位长。
以太网的适配器有过滤功能,它只接收单播帧、广播帧或多播帧。
使用集线器可以在物理层扩展以太网 (扩展后的以太网仍然是一个网络)。
交换式集线器常称为以太网交换机或第二层交换机 (工作在数据链路层),是一个多接口的网桥,每个接口都直接与某台单主机或另一个集线器相连,且工作在全双工方式。以太网交换机能同时连通许多对的接口,使每一对相互通信的主机都能像独占通信媒体那样,无碰撞地传输数据。
高速以太网有 100Mbit/s 的快速以太网、吉比特以太网和 10Gbit/s 的 10 吉比特以太网。最近还发展到 100 吉比特以太网。在宽带接入技术中,也常使用高速以太网进行接入。
数据链路层的三个基本问题 (封装成帧、透明传输和差错检测) 为什么都必须加以解决?
封装成帧就是在一段数据的前后分别添加首部和尾(在首部和尾部里面有许多必要的控制信息),这样就构成了一个帧。接收端在收到物理层上交的比特流后,就能根据首部和尾部的标记,从收到的比特流中识别帧的开始和结束。
所谓“透明传输”就是上层交下来的数据,不管是什么形式的比特组合,都必须能够正确传送。由于帧的开始和结束的标记是使用专门指明的控制字符,因此,所传输的数据中的任何比特组合一定不允许和用作帧定界的控制字符的比特编码一样,否则就会出现帧定界的错误。数据链路层不应当对要传送的数据提出限制,即不应当规定某种形式的比特组合不能够传送。
如果数据链路层没有差错检测,那么当目的主机收到其他主机发送来的数据时,在交给高层后,如果应用程序要求收到的数据必须正确无误,那么目的主机的高层软件可以对收到的数据进行差错检测。如果发现数据中有差错,就可以请求源主机重传这些数据。这样做就可以达到正确接收数据的目的。但这种工作方式有一个很大的缺点,就是一些在传输过程中出现了错误的数据 (请注意,这些已经是没有用处的数据) 还会继续在网络中传送,这样就浪费了网络的资源。例如,源主机到目的主机的路径中共有 20 个结点。在传送数据时,第一个结点就检测出了差错。如果数据链路层有差错检测的功能,就可以把这个有差错的帧丢弃以后就不再传送了。否则这个没有用处的帧还要在网络上继续传送,还要陆续通过后面的 19 个结点,这就造成了网络资源的浪费。局域网的主要特点是什么?为什么局域网采用广播通信方式而广域网不采用呢?
局域网最主要的特点是: 网络为一个单位所拥有,且地理范围和站点数目均有限在局域网刚刚出现时,局域网比广域网具有更高的数据率、更低的时延和更小的误码率。但随着光纤技术在广域网中普遍使用,现在广域网也具有很高的数据率和很低的误码率局域网的地理范围较小,且为一个单位所拥有,采用广播通信方式十分简单方便。但广域网的地理范围很大,如果采用广播通信方式势必造成通信资源的极大浪费,因此广域网不采用广播通信方式。
说明 10BASE-T中的“10”“BASE”和“T”所代表的意思。
“10”代表这种以太网具有 10 Mbit/s 的数据率,BASE 表示连接线上的信号是基带信号,T 代表双绞线 (Twisted-pair)。