计算机网络学习总结 [2]

本篇包含

  • 网络层
  • 数据链路层
  • 物理层

思维导图如下:

思维导图

网络层

网络层概述

在当今我们是使用无连接的方式的。网络提供数据报服务,无连接的、尽最大努力交付的数据报服务。网络层不提供服务质量的承诺。即所传送的分组可能出错、丢失、重复和失序(不按序到达终点),当然也不保证分组传送的时限。

IP 协议

IP 的概述

IP 协议对应的是 IP 地址,那么什么是 IP 地址呢? 维基百科上是这样解释的:

IP 地址(英语:IP Address, 全称:Internet Protocol Address),又译为网际协议地址、互联网协议地址。当设备连接网络,设备将被分配一个 IP 地址,用作标识。通过 IP 地址,设备间可以互相通讯,如果没有 IP 地址,我们将无法知道哪个设备是发送方,无法知道哪个是接收方。[2] IP 地址有两个主要功能:标识设备或网络 和 寻址(英语:location addressing)。

上面的一堆文字其实无非解释了两个点,总结如下:

  • IP 地址是用来标记主机的地址,没有 IP 地址就无法识别主机。(标志主机)
  • 因为唯一标记主机,所以可以用来在网络中查找主机。(寻址)

现在想一下前面我们说到的 MAC 地址,MAC 地址是一台主机的身份象征。一台主机从出厂以后,MAC 地址就唯一确定了,无法更改(当然也可以通过软件修改,但是必须得确保同一局域网下不能有两台 MAC 地址相同的主机)。

那么,为什么有了 MAC 地址,还需要 IP 地址?或者说是有了 IP 地址,还需要 MAC 地址? 看完上面两篇文章,我总结如下:

  • 历史原因: 以太网诞生于因特网之前,在 IP 地址之前 MAC 地址就已经在使用了。两者结合使用,是为了不影响已存在的协议
  • 分层实现: 对网路协议进行分层以后,数据链路层的实现不需要考虑数据之间的转发,网络层的实现不需要考数据链路层的影响。
  • 分工合作: IP 地址是会随着主机接入网络的不同而发生改变的,而 MAC 一般不会改变。这样的话,我们可以使用 IP 地址进行寻址,当数据报和目的主机处于同一网络时,就使用 MAC 地址进行数据交付。

IP 数据报

IP 数据的样子是这样的: 有几个重要的东西必须得进行说明一下:

  • 版本号:占用 4 位二进制数,表示该 IP 数据报使用的 IP 协议版本。目前 Internet 中使用的主要是 TCP/IP 协议族中版本号为 4 的 IP 协议。
  • 头长度:占用 4 位二进制位,此域指出整个报头的长度(包括选项),该长度是以 32 位二进制数为一个计数单位的,接收端通过此域可以计算出报头在何处结束及从何处开始读数据。普通 IP 数据报(没有任何选项)该字段的值是 5(即 20 个字节的长度)。
  • 服务类型:服务类型(TOS、type of service):占用 8 位二进制位,用于规定本数据报的处理方式。
  • 生存时间(TTL,Time To Live):占用 8 位二进制位,它指定了数据报可以在网络中传输的最长时间。实际应用中把生存时间字段设置成了数据报可以经过的最大路由器数。TTL 的初始值由源主机设置(通常为 32、64、128 或 256),一旦经过一个处理它的路由器,它的值就减 1。当该字段为 0 时,数据报就丢弃,并发送 ICMP 报文通知源主机,因此可以防止进入一个循环回路时,数据报无休止地传输下去。
  • 上层协议标识:占用 8 位二进制位,IP 协议可以封装多种上层协议 PDU,目标端根据协议标识就可以把收到的 IP 数据报送到 TCP 或 UDP 等处理此报文的上层协议了。

首部的前一部分是固定长度,共 20 字节,是所有 IP 数据报必须具有的。IP 数据报首部的可变部分,从 1 个字节到 40 个字节不等,取决于所选择的项目。有了可变部分可以增加 IP 数据报的功能,但是往往不常用。

IP 数据报分组转发流程

  • IP 数据报的首部中没有地方可以用来指明“下一跳路由器的 IP 地址”。
  • 当路由器收到待转发的数据报,不是将下一跳路由器的 IP 地址填入 IP 数据报,而是送交下层的网络接口软件。
  • 网络接口软件使用 ARP 负责将下一跳路由器的 IP 地址转换成硬件地址,并将此硬件地址放在链路层的 MAC 帧的首部,然后根据这个硬件地址找到下一跳路由器

在路由表中,对每一条路由,最主要的是(目的网络地址,下一跳地址)

  • IP 数据报最终一定可以找到目的主机所在目的网络上的路由器(可能要通过多次的间接交付)。
  • 只有到达最后一个路由器时,才试图向目的主机进行直接交付。

虽然互联网所有的分组转发都是基于目的主机所在的网络,但在大多数情况下都允许有这样的特例,即为特定的目的主机指明一个路由。

采用特定主机路由可使网络管理人员能更方便地控制网络和测试网络,同时也可在需要考虑某种安全问题时采用这种特定主机路由。 默认路由:

路由器分组转发算法: (1) 从数据报的首部提取目的主机的 IP 地址 D, 得出目的网络地址为 N。 (2) 若网络 N 与此路由器直接相连,则把数据报直接交付目的主机 D;否则是间接交付,执行(3)。 (3) 若路由表中有目的地址为 D 的特定主机路由,则把数据报传送给路由表中所指明的下一跳路由器;否则,执行(4)。 (4) 若路由表中有到达网络 N 的路由,则把数据报传送给路由表指明的下一跳路由器;否则,执行(5)。 (5) 若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器;否则,执行(6)。 (6) 报告转发分组出错。

IP 数据报分片

为什么要对 IP 数据报进行分片? IP 协议理论上允许的最大 IP 数据报为 65535 字节(16 位来表示包总长)。但是因为协议栈网络层下面的数据链路层一般允许的帧长远远小于这个值,例如以太网的 MTU(即 Maximum Transmission Unit,最大传输单元)通常在 1500 字节左右。所以较大的 IP 数据包会被分片传递给数据链路层发送,分片的 IP 数据报可能会以不同的路径传输到接收主机,接收主机通过一系列的重组,将其还原为一个完整的 IP 数据报,再提交给上层协议处理。 怎样对 IP 数据报进行分片? 过程:

  1. 一数据报的总长度为 3820 字节,其数据部分的长度为 3800 字节(使用固定首部),需要分片为长度不超过 1420 字节的数据报片。
  2. 因固定首部长度为 20 字节,因此每个数据报片的数据部分长度不能超过 1400 字节。
  3. 于是分为 3 个数据报片,其数据部分的长度分别为 1400、1400 和 1000 字节。
  4. 原始数据报首部被复制为各数据报片的首部,但必须修改有关字段的值。(片偏移字段)

片偏移是以 8 个字节为单位来进行偏移的,因此要除以 8

IP 地址的划分与分类

分类编址的 IP 地址

网络号和主机号取特殊值时代表的含义

划分子网的 IPv4 地址

无分类的 IPv4 地址 CIDR 与路由聚合

无分类 CIDR 提出的背景

划分子网在一定程度上缓解了互联网在发展中遇到的困难。然而在 1992 年互联网仍然面临三个必须尽早解决的问题:

  • B 类地址在 1992 年已分配了近一半,眼看就要在 1994 年 3 月全部分配完毕!
  • 互联网主干网上的路由表中的项目数急剧增长(从几千个增长到几万个)。
  • 整个 IPv4 的地址空间最终将全部耗尽

CIDR 干了什么

  • CIDR消除了传统的 A 类、B 类和 C 类地址以及划分子网的概念,因而可以更加有效地分配 IPv4 的地址空间。
  • CIDR 使用各种长度的“网络前缀”(network-prefix)来代替分类地址中的网络号和子网号。
  • IP 地址从三级编址(使用子网掩码)又回到了两级编址。

CIDR 使用“斜线记法”(slash notation),它又称为 CIDR 记法,即在 IP 地址面加上一个斜线“/”,然后写上网络前缀所占的位数(这个数值对应于三级编址中子网掩码中 1 的个数)。例如: 220.78.168.0/24

  1. CIDR 虽然不使用子网了,但仍然使用“掩码”这一名词(但不叫子网掩码)。

  2. 对于 /20 地址块,它的掩码是 20 个连续的 1。 斜线记法中的数字就是掩码中 1 的个数。

    128.14.32.0/20 表示的地址块共有 212 个地址(因为斜线后面的 20 是网络前缀的位数,所以这个地址的主机号是 12 位)。

  • 在不需要指出地址块的起始地址时,也可将这样的地址块简称为“/20 地址块”。
  • 128.14.32.0/20 地址块的最小地址:128.14.32.0
  • 128.14.32.0/20 地址块的最大地址:128.14.47.255
  • 全 0 和全 1 的主机号地址一般不使用。

路由聚合

  • 一个 CIDR 地址块可以表示很多地址,这种地址的聚合常称为路由聚合,它使得路由表中的一个项目可以表示很多个(例如上千个)原来传统分类地址的路由。
  • 路由聚合有利于减少路由器之间的路由选择信息的交换,从而提高了整个互联网的性能。
  • 前缀长度不超过 23 位的 CIDR 地址块都包含了多个 C 类地址。
  • 这些 C 类地址合起来就构成了超网
  • CIDR 的一个好处是:可以更加有效地分配 IPv4 的地址空间,可根据客户的需要分配适当大小的 CIDR 地址块。

通过一个网络号就可以查找 ISP 了,非常方便。

最长匹配

  1. 使用 CIDR 时,路由表中的每个项目由“网络前缀”和“下一跳地址”组成。在查找路由表时可能会得到不止一个匹配结果

  2. 应当从匹配结果中选择具有最长网络前缀的路由:最长前缀匹配 (longest-prefix matching)。

  3. 网络前缀越长,其地址块就越小,因而路由就越具体 (more specific) 。

NAT 协议

NAT 技术其非常简单,那么 NAT 它的作用是什么呢?使在专用网上使用专用地址的主机与互联网上的主机通信

这种方法需要在专用网连接到因特网的路由器上安装 NAT 软件。装有 NAT 软件的路由器叫做NAT 路由器,它至少有一个有效的外部全球 IP 地址。这样,所有使用本地地址的主机在和外界通信时,都要在 NAT 路由器上将其本地地址转换成全球 IP 地址,才能和因特网连接。另外,这种通过使用少量的公有 IP 地址代表较多的私有 IP 地址的方式,将有助于减缓可用的 IP 地址空间的枯竭。

转换过程:

  1. 内部主机 A 用本地地址 IPA 和互联网上主机 B 通信所发送的数据报必须经过 NAT 路由器。
  2. NAT 路由器将数据报的源地址 IPA 转换成全球地址 IPG,并把转换结果记录到 NAT 地址转换表中,目的地址 IPB 保持不变,然后发送到互联网。
  3. NAT 路由器收到主机 B 发回的数据报时,知道数据报中的源地址是 IPB 而目的地址是 IPG。
  4. 根据 NAT 转换表,NAT 路由器将目的地址IPG 转换为 IPA,转发给最终的内部主机 A。

简单来说,NAT 技术就是实现局域网与互联网通信的一项协议。 NAT 又可以分为三种不同的类型:

  • 静态 NAT(Static NAT): 静态 NAT 设置起来最为简单和最容易实现的一种,内部网络中的每个主机都被永久映射成外部网络中的某个合法的地址。当一个内部主机必须被作为一个固定的外部地址访问时,通过静态 NAT 实现。
  • 动态地址 NAT(Pooled NAT): 动态 NAT 则是在外部网络中定 义了一系列的合法地址(地址池),采用动态分配的方法映射到内部网络。动态 NAT 转换的工作过程是这样的,当有一个内部主机需要访问外网时,从公用 IP 地址池中取出一个可用的地址分配给该主机使用。当通信完成后,所获取的公用 IP 地址也被释放回地址池中。外部公用 IP 在被分配给一个内部主机通信使用时,该地址不能不能再次被分配给其他内部主机使用。
  • 网络地址端口转换 NAPT(Port-Level NAT): NAPT 是把内部地址映射到外部网络的一个 IP 地址的不同端口上。NAPT(Network Address Port Translation),即网络端口地址转换,可将多个内部地址映射为一个合法公网地址,但以不同的协议端口号与不同的内部地址相对应,也就是<内部地址+内部端口>与<外部地址+外部端口>之间的转换。

在内部主机与外部主机通信时,在 NAT 路由器上发生了两次地址转换:

  • 离开专用网时:替换源地址,将内部地址替换为全球地址;
  • 进入专用网时:替换目的地址,将全球地址替换为内部地址;

ARP 协议

前面说到 IP 地址用来寻址,当目的地址和数据报处于同一网络时,MAC 地址用来交付数据报。现在有一个问题,主机 A 要给主机 B 发送消息,消息经过一系列地转发,终于找到了主机 B 的 IP 地址。但是,我们都知道,数据在链路层的传输是需要 MAC 地址的,仅仅知道 B 的 IP 地址是无法进行通信的。请看下面这张图:

1609595791372-acea682b-2ad5-4b8d-ab3d-f73071a80604.webp
1609595791372-acea682b-2ad5-4b8d-ab3d-f73071a80604.webp

1609595838772-33fdda80-f725-449d-bd8f-c3964a319745.webp
1609595838772-33fdda80-f725-449d-bd8f-c3964a319745.webp

使用 ARP 的 4 种情况

  1. 发送方是主机,要把 IP 数据报发送到本网络上的另一个主机。这时用 ARP 找到目的主机的硬件地址。
  2. 发送方是主机,要把 IP 数据报发送到另一个网络上的一个主机。这时用 ARP 找到本网络上的一个路由器的硬件地址。剩下的工作由这个路由器来完成。
  3. 发送方是路由器,要把 IP 数据报转发到本网络上的一个主机。这时用 ARP 找到目的主机的硬件地址。
  4. 发送方是路由器,要把 IP 数据报转发到另一个网络上的一个主机。这时用 ARP 找到本网络上另一个路由器的硬件地址。剩下的工作由这个路由器来完成。

路由

路由原理

当 IP 子网中的一台主机发送 IP 分组数据给同一 IP 子网的另一台主机时,它将直接把 IP 分组数据送到网络上,对方就能收到。 送给不同 IP 子网上的主机时,它要选择一个能到达目的子网上的路由器,把 IP 分组数据送给该路由器, 由路由器负责把 IP 分组送到目的地。 如果没有找到这样的路由器,主机就把 IP 分组送给一个称为 “缺省网关(default gateway)”的路由器上。 “缺省网关”是每台主机上的一个配置参数,它是接在同一个网络上的某个路由器端口的 IP 地址。

网关:问路由器的 IP,其他的电脑必须和网关一个 IP 段才能访问路由器。

路由选择方式

典型的路由选择方式有两种:静态路由和动态路由。   静态路由是由网络管理员手工配置的路由信息:

  1. 除非网络管理员干预,否则静态路由不会发生变化。
  2. 由于静态路由不能对网络的改变作出反映,一般用于网络规模不大、拓扑结构固定的网络中。

静态路由的优点是简单、高效、可靠。在所有的路由中,静态路由优先级最高。当动态路由与静态路由发生冲突时,以静态路由为准。   动态路由是网络中的路由器之间相互通信,传递路由信息,利用收到的路由信息更新路由器表的过程,它能实时地适应网络结构的变化。

动态路由机制的运作依赖路由器的两个基本功能:对路由表的维护;路由器之间适时的路由信息交换。 动态路由适用于网络规模大、网络拓扑复杂的网络。当然,各种动态路由协议会不同程度地占用网络带宽和 CPU 资源。

路由器与路由转发表

每个路由器中都有一个路由表和 FIB(Forward Information Base)表:

  1. 路由表用来决策路由。
  2. FIB 用来转发分组。

路由表:

  1. 这里个表都用来保存路由信息,路由表通常由路由协议和路由管理模块维护,
  2. 包括更多的信息(IP 地址/IP 子网、下一跳、路由度量、超时间等);

路由表中路由有三类: (1)链路层协议发现的路由(即是直连路由) (2)静态路由。 (3)动态路由协议发现的路由。

转发表(FIB):是基于路由生成的,路由器实际转发时使用转发表(只包括 IP 地址/IP 子网和下一跳/出接口)。

路由器的结构

路由器的工作流程

路由协议

因特网采用分层的路由选择协议

常见的路由选择协议

内部网关协议 RIP

路由信息协议 RIP (Routing Information Protocol) 是内部网关协议 IGP 中最先得到广泛使用的协议。 RIP 协议要求网络中的每一个路由器都要维护从它自己到其他每一个目的网络的距离记录。

RIP 是一种分布式的、基于距离向量的路由选择协议。 RIP 协议中的“距离”也称为“跳数”(hop count),因为每经过一个路由器,跳数就加 1。

  • 路由器到直连网络的距离定义为 1

  • 路由器到非直连网络的距离定义为所经过的路由器数量+1

    这里的“距离”实际上指的是“最短距离”。

RIP 不能在两个网络之间同时使用多条路由。RIP 选择一个具有最少路由器的路由(即最短路由),哪怕还存在另一条高速(低时延)但路由器较多的路由。

RIP 协议的三个特点 (1) 仅和相邻路由器交换信息。 (2) 交换的信息是当前本路由器所知道的全部信息,即自己的路由表。 (3) 按固定的时间间隔交换路由信息,例如,每隔 30 秒。当网络拓扑发生变化时,路由器也及时向相邻路由器通告拓扑变化后的路由信息。

工作过程

  1. 路由器在刚刚开始工作时,只知道到直接连接的网络的距离(此距离定义为 1)。它的路由表是空的。
  2. 以后,每一个路由器也只和数目非常有限的相邻路由器交换并更新路由信息。
  3. 经过若干次更新后,所有的路由器最终都会知道到达本自治系统中任何一个网络的最短距离和下一跳路由器的地址。
  • RIP 协议让互联网中的所有路由器都和自己的相邻路由器不断交换路由信息,并不断更新其路由表,使得从每一个路由器到每一个目的网络的路由都是最短的(即跳数最少)。
  • 虽然所有的路由器最终都拥有了整个自治系统的全局路由信息,但由于每一个路由器的位置不同,它们的路由表当然也应当是不同的。

RIP 优缺点

  • 优点:
    • 实现简单,开销较小。
  • 缺点:
    • RIP 限制了网络的规模,它能使用的最大距离为 15(16 表示不可达)。
    • 路由器之间交换的路由信息是路由器中的完整路由表,因而随着网络规模的扩大,开销也就增加。
    • “坏消息传播得慢”,又被称为路由环路,距离无穷计数问题,使更新过程的收敛时间过长。

开放最短路径优先(OSPF)

OSPF 协议是为了克服 RIP 的缺点而开发的。该算法基于 dijkstra 提出的最短路径优先算法。

  1. OSPF 是基于链路状态的, 而不像 RIP 那样基于距离向量
  2. OSPF 采用 SPF 算法计算路由,从算法上保证了不会产生路由环路
  3. OSPF 不受网络规模限制, 更新效率高
  4. 链路状态是指本路由器和哪些路由器相邻,以及相应的链路代价(距离,时延,带宽)

ICMP 协议

在 IP 通信中,经常有数据包到达不了对方的情况。原因是,在通信途中的某处的一个路由器由于不能处理所有的数据包,就将数据包一个一个丢弃了。或者,虽然到达了对方,但是由于搞错了端口号,服务器软件可能不能接受它。这时,在错误发生的现场,为了联络而飞过来的信鸽就是 ICMP 报文。在 IP 网络上,由于数据包被丢弃等原因,为了控制将必要的信息传递给发信方。ICMP 协议是为了辅助 IP 协议,交换各种各样的控制信息而被制造出来的。

ICMP 差错报告报文: 路由器收到错误分组, 向源 IP 地址发送一个报文, 被称为 ICMP 差错报文.

ICMP 协议的应用: Traceroute

IPV6 协议

我们前面说的 IP 地址其实是 IPV4,那么,为什么已经有 IPIV4 了,还要来一个 IPV4 呢?原来是这样的,早在上个世纪,人们就预料到 IPV4 地址枯竭的一天,为了解决这个问题,开始了 IPV6 的研发。 IPv6 (IP version 6)是为了根本解决 IPv4 地址耗尽的问题而被标准化的网际协议。IPv4 的地址长度为 4 个 8 位字节,即 32 比特。而 IPv6 的地址长度则是原来的 4 倍,即 128 比特,一般写成 8 个 16 位字节。可以看到,IPV6 的地址是取之不尽,用之不竭的,那么现在为什么不把 IPV4 全部换成 IPV6 呢? 从 IPV4 切换到 IPV6 极其耗时,需要将网络中所有主机和路由器的 IP 地址进行重新设置。当互联网广泛普及后,替换所有 IP 地址会是更为艰巨的任务。 在现存的网络中,既有 IPV4 又有 IPV6,那么它们之间是怎么通信的呢?有两种技术:双协议栈、隧道技术,下面分别进行介绍:

  • 双协议栈:改变 IP 地址的首部,在首部进行转换的过程中,IPV6 的首部的部分信息会丢失,而且这种转换的损失不可避免。
  • 隧道技术:何谓隧道技术了?其实完全可以通过字面的意思理解。下面还是以画图的方式帮助大家理解。隧道技术说白了就是数据在传输的时候进行了另一种的封装与解封,如图数据由 IPV6 网络进入到 IPV4 的网络,需要把 IPV6 的数据包封装在 IPV4 的数据包里。

1609595791400-061ffc91-67ae-42d0-b4b9-cd589872e9bd.webp
1609595791400-061ffc91-67ae-42d0-b4b9-cd589872e9bd.webp

简介

在本章中我们研究的是在同一个局域网中,分组怎样从一台主机传送到另一台主机,但并不经过路由器转发。 从整个互联网来看,局域网仍属于数据链路层的范围,并不将其放到网络层中讨论,因为网络层讨论的是分组怎么从一个网络通过路由器转发到另一个网络。

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

  • 点对点信道:一对一的点对点通信方式。
  • 广播信道:一对多的广播通信方式。

本章最重要的内容是:

  • 数据链路层的点对点信道和广播信道的特点,以及这两种信道所使用的协议(PPP 协议以及 CSMA/CD 协议)的特点。
  • 数据链路层的三个基本问题:封装成帧、透明传输和差错检测。
  • 以太网MAC 层的硬件地址。
  • 适配器、转发器、集线器、网桥、以太网交换机的作用以及使用场合。

使用点对点信道的数据链路层

基本术语

(1)链路 (link): 就是从一个结点到相邻结点的一段物理线路(有线或无线),而中间没有任何其他的交换结点。在进行数据通信时,两台计算机之间的通信路径往往要经过许多段这样的链路。可见链路只是一条路径的组成部分。 (2)数据链路(data link): 当需要在一条线路上传送数据时,除了必须有一条物理线路外,还必须有一些必要的通信协议来控制这些数据的传输,若把实现这些协议的硬件和软件加到链路上,就构成了数据链路。现在最常用的方法是使用网络适配器(既有硬件,也包括软件)来实现这些协议。 (3)数据通信协议 曾叫做通信规程(procedure),在数据链路层,规程和协议是同义语。 (4)帧: 点对点信道的数据链路层的协议数据单元。

基本问题

封装成帧(framing)

封装成帧就是在一段数据的前后分别添加首部和尾部,这样就构成了一个帧。 帧就是数据链路层的数据传送单元。一个帧的帧长等于帧的数据部分长度加上帧首部和帧尾部的长度。 首部和尾部的一个重要作用就是进行帧定界(即确定帧的界限)。此外,首部和尾部还包括许多必要的控制信息。在发送帧时,是从帧首部开始发送的。各种数据链路层协议都对帧首部和帧尾部的格式有明确的规定。 为了提高帧的传输效率,应当使帧的数据部分长度尽可能地大于首部和尾部的长度。每一种链路层协议都规定了所能传送的帧的数据部分长度上限—最大传送单元 MTU(Maximum Transfer Unit)。MTU 大小一般为 1500 字节。

控制字符 SOH(Start Of Header) 表示帧的首部开始,控制字符 EOT(End Of Transmission)表示帧的结束。针对差错数据(只有首部开始符 SOH 而没有传输结束符 EOT),直接丢弃,完整数据予以保留。

透明传输

在数据链路层透明 传送数据表示无论什么样的比特组合的数据,都能够按照原样没有差错地通过这个数据链路层。由于上面已经使用专门的控制字符(8 比特)来标识 SOH 和 EOT。所传输的数据中若是出现一样的比特编码就会出现帧定界的错误(误将数据当作界定符)。只有当输入数据无上述差错传输成功时才可称作透明传输。

当数据部分是文本文件时,自然不会出现上述差错;但当数据部分是非 ASCⅡ 码的文本文件时(如二进制代码的计算机程序或图像等), 如果数据中的某个字节的二进制代码恰好和 SOH 或 EOT 这种控制字符一样,数据链路层就会错误地“找到帧的边界”,把部分帧收下(误认为是个完整的帧),而把剩下的那部分数据丢弃。

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

差错检测

(1)比特差错: 现实的通信链路都不会是理想的,比特在传输过程中可能会产生差错:1 可能会变成 0,而 0 也可能变成 1。这就叫做比特差错。比特差错是传输差错中的一种。

(2)产生原因: 在一段时间内,传输错误的比特占所传输比特总数的比率称为误码率 BER(Bit Error Rate)。误码率与信噪比有很大的关系。如果设法提高信噪比,就可以使误码率减小。实际的通信链路并非是理想的,它不可能使误码率下降到零。

(3)解决方案: 为了保证数据传输的可靠性,在计算机网络传输数据时,必须采用各种差错检测措施。目前在数据链路层广泛使用了循环冗余检验 CRC(Cyclic Redundancy Check) 的检错技术。

(4)循环冗余检验原理: 在发送端,将数据划分为组,每组 k 个比特。CRC 运算就是在 k 位比特数据的后面添加供差错检测用的 n 位冗余码,然后构成一个帧发送出去,一共发送(k+n)位。具体地,使用模 2 运算,将收到的 k+n 位数据(在其后添加 n 个 0)除以事先商定的 n+1 位除数 P,得到商 R,n 位余数 R,这个余数 R 就作为冗余码拼接在数据 M 的后面发送出去。冗余码常称为帧检验序列 FCS(Frame Check Sequence)。例如:M=101001(k=6),除数 P=1101(n=3)。经模 2 除法运算后的结果是:商 Q=110101,余数 R=001,具体计算过程如下:

在接收端把接收到的数据以帧为单位进行 CRC 检验:把收到的每一个帧都除以同样的除数 P(模 2 运算),然后检查得到的余数 R。如果在传输过程中无差错,那么经过 CRC 检验后得出的余数 R 肯定是 0。但如果出现误码,那么余数 R 仍等于零的概率是非常非常小的。总之,在接收端对收到的每一帧经过 CRC 检验后,有以下两种情况:

  • 若得出的余数 R=0,则判定这个帧没有差错,就接受(accept);
  • 若余数 R≠0,则判定这个帧有差错(但无法确定究竟是哪一位或哪几位出现了差错),就丢弃。

(5)传输差错: 若仅仅使用循环冗余检验 CRC 差错检测技术,则只能做到对帧的无差错接受,到的帧并没有出现比特差错,但出现了帧丢失、帧重复或帧失序,以上三种情况都属于传输差错。“无比特差错”与“无传输差错”并不是同样的概念。不要求在数据链路层提供可靠传输,即不要求在数据链路层解决帧丢失、帧重复或帧失序问题。

点对点协议 PPP

点对点协议 PPP(Point-to-Point protocol)则是目前使用得最广泛的数据链路层协议。PPP 协议就是用户计算机和 ISP 进行通信时所使用的数据链路层协议。 数据链路层协议, 将上层交付下来的协议数据单元封装成 PPP 帧。

PPP 协议设计要求

  • 简单:CRC 检验,正确就收下,反之就丢弃。
  • 封装成帧:准确定位开始和结束。
  • 透明性:转义字符保证透明传输。
  • 多种网络层协议:支持多种网络层协议(如 IP 和 IPX)。
  • 多种链路类型:串行的(一次只发送一个比特)或并行的(一次并行地发送多个比特),同步的或异步的,低速的或高速的,电的或光的,交换的(动态的)或非交换的(静态的)点对点链路。
  • 差错检测
  • 检测连接状态:自动检测出链路是否处于正常工作状态。当出现故障的链路隔了一段时间后又重新恢复正常工作时, 就特别需要有这种及时检测功能。
  • 最大传送单元:PPP 协议必须对每一种类型的点对点链路设置最大传送单元 MTU 的标准默认值,以促进各种实现之间的互操作性。
  • 网络层地址协商:如果仅仅在链路层建立了连接而不知道对方网络层地址,则还不能够保证网络层可以传送分组。
  • 数据压缩协商:PPP 协议必须提供一种方法来协商使用数据压缩算法。但并不要求将数据压缩算法进行标准化。

在 TCP/P 协议族中,可靠传输由运输层的 TCP 协议负责,因此数据链路层的 PPP 协议不需要进行纠错,不需要设置序号,也不需要进行流量控制。PPP 协议不支持多点线路(即一个主机轮流和链路上的多个从主机进行通信),而只支持点对点的链路通信。此外,PPP 协议只支持全双工链路。

PPP 协议的组成

  • 一个将 IP 数据报封装到串行链路的方法。PPP 既支持异步链路(无奇偶检验的 8 比特数据),也支持面向比特的同步链路。IP 数据报在 PPP 帧中就是其信息部分。这个信息部分的长度受最大传送单元 MTU 的限制。
  • 一个用来建立、配置和测试数据链路连接的链路控制协议 LCP(Link Control Protocol)。
  • 一套网络控制协议 NCP(Network Control Protocol),其中的每一个协议支持不同的网络层协议,如 IP、OSI 的网络层、 DECnet,以及 AppleTalk 等。

PPP 协议的帧格式

(1)PPP 帧的首部和尾部分别为四个字段和两个字段。

  • 首部第一尾部第二:标志字段 F(Flag),规定为 0x7E(符号“0x”表示它后面的字符是用十六进制表示的,十六进制的 7E 的二进制表示是 01111110), 标志字段就是 PPP 帧的定界符。如果出现连续两个标志字段,就表示这是一个空帧,应当丢弃。
  • 首部第二 Address:控制字段 A 规定为 0xFF(即 11111111)。
  • 首部第三 Control:控制字段 C 规定为 0x03(即 00000011),这两个字段实际上并没有携带 PPP 帧的信息。
  • 首部第四 Protocol:PPP 首部的第四个字段是 2 字节的协议字段。
    • 当协议字段为 0x0021 时,PPP 帧的信息字段就是 IP 数据报。
    • 若为 0xC021,则信息字段是 PPP 链路控制协议 LCP 的数据
    • 而 0x8021 表示这是网络层的控制数据。
  • 尾部第一:CRC 的帧检验序列 FCS(冗余码)。
  • 信息字段:长度可变,不超过 1500 字节。

(2)字节填充:当信息字段中出现和标志字段一样的比特(0x7E),并且使用异步传输时,转义符定义为 0x7D,就必须采取措施使这种形式上和标志字段一样的比特组合不出现在信息字段中。 字节填充方法如下:

  • 把信息字段中出现的每一个 0x7E 字节转变成为 2 字节序列(0x7D,0x5E)。
  • 若信息字段中出现一个 0x7D 的字节(转义字符),则把 0x7D 转变成为 2 字节序列(0x7D,0x5D)。
  • 若信息字段中出现 ASCII 码的控制字符(即数值小于 0x20 的字符),则在该字符前面要加入一个 0x7D 字节,同时将该字符的编码加以改变。例如,出现 0x03 就要把它转变为 2 字节序列(0x7D,0x23)。
  • 接收端在收到数据后再进行与发送端字节填充相反的变换,就可以正确地恢复出原来的信息。

(3)零比特填充:PPP 协议用在 SONET/SDH 链路时,使用同步传输,在这种情况下,PPP 协议采用零比特填充方法来实现透明传输。 零比特填充的具体做法是:

  • 在发送端,先扫描整个信息字段(通常用硬件实现,但也可用软件实现,只是会慢些)。只要发现有 5 个连续 1,则立即填入一个 0。因此经过这种零比特填充后的数据,就可以保证在信息字段中不会出现 6 个连续 1。

  • 接收端在收到一个帧时,先找到标志字段 F 以确定一个帧的边界,接着再用硬件对其中的比特流进行扫描。每当发现 5 个连续 1 时,就把这 5 个连续 1 后的一个 0 删除,以还原成原来的信息比特流,如下图。

PPP 协议的工作状态

PPP 链路初始化:

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

以下从中间分支箭头上的操作分步骤介绍具体初始化过程:

  • 起初:PPP 链路的起始和终止状态永远是“链路静止”(Link Dead)状态,这时在用户个人电脑和 ISP 的路由器之间并不存在物理层的连接。
  • 物理层连接建立:当用户个人电脑通过调制解调器呼叫路由器时,路由器就能够检测到调制解调器发出的载波信号。在双方建立了物理层连接后 PPP 就进入“链路建立”(Link establish)状态,其目的是建立链路层的 LCP 连接。
  • LCP 配置协商:物理链路建立之后,开始进行 LCP 配置协商,即发送 LCP 的配置请求帧(Configure-Request),这是一个 PPP 帧,其协议字段置为 LCP 对应的代码,而信息字段包含链路上的最大帧长、所使用的鉴别协议,以及不使用 PPP 帧中的地址和控制字段(因为这两个字段的值是固定的,没有任何信息量,可以在 PPP 帧的首部中省略这两个字节)。链路的另一端可以发送以下几种响应中的一种。若配置失败,则转到链路静止状态,否则进入“鉴别”( Authenticate)状态。
    • 配置确认帧(Configure-Ack):所有选项都接受。
    • 配置否认帧(Configure-Nak):所有选项都理解但不能接受。
    • 配置拒绝帧(Configure-Reject):选项有的无法识别或不能接受,需要协商。
  • 鉴别:鉴别( Authenticate)状态只允许传送 LCP 协议的分组、鉴别协议的分组以及监测链路质量的分组。若使用口 令鉴别协议 PAP(Password Authentication Protocol),则需要发起通信的一方发送身份标识符和口令。系统可允许用户重试若干次。还可以使用更加复杂安全的口令握手鉴别协议 CHAP(Challenge-Handshake Authentication Protocol)。若鉴别身份失败,则转到“链路终止”(Link Terminate)状态。若鉴别成功,则进入“网络层协议”(Network- Layer Protocol)状态。
  • NCP 配置协商:在“网络层协议”状态,PPP 链路的两端的网络控制协议 NCP 根据网络层的不同协议互相交换网络层特定的网络控制分组。PPP 协议两端的网络层可以运行不同的网络层协议,但仍然可使用同一个 PPP 协议进行通信。如果在 PPP 链路上运行的是 IP 协议,则对 PPP 链路的每一端配置 IP 协议模块(如分配 IP 地址)时就要使用 NCP 中支持 IP 的协议——IP 控制协议 ICP(IP Control Protocol)。当网络层配置完毕后,链路就进入可进行数据通信的“链路打开”(Link Open)状态。
  • 互发分组。在链路打开状态下,链路的两个 PPP 端点可以彼此向对方发送分组。两个 PPP 端点还可发送回送请求 LCP 分组(Echo-Request)和回送回答 LCP 分组(Echo-Reply),以检查链路的状态。
  • 终止请求:数据传输结束后,可以由链路的一端发出终止请求 LCP 分组(Terminate-Request)请求终止链路连接,在收到对方发来的终止确认 LCP 分组(Terminate-Ack)后,转到“链路终止”状态。如果链路出现故障,也会从“链路打开”状态转到“链路终止”状态。当调制解调器的载波停止后,则回到“链路静止”状态。

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

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

局域网的数据链路层

(1)局域网简介:局域网最主要的特点是:网络为一个单位所拥有,且地理范围和站点数目均有限。局域网可按网络拓扑进行分类:星形网,环形网和总线网。由于集线器(hub)的出现和双绞线大量用于局域网中,星形以太网以及多级星形结构的以太网获得了非常广泛的应用。双绞线已成为局域网中的主流传输媒体。当数据率很高时,往往需要使用光纤作为传输媒体。

(2)共享信道:在局域网要着重考虑的一个问题是共享信道,这在技术上有两种方法:

  • 静态划分信道:如之前介绍过的频分复用、时分复用、波分复用和码分复用等。用户只要分配到了信道就不会和其他用户发生冲突。但这种划分信道的方法代价较高,不适合于局域网使用。
  • 动态媒体接入控制:又称为多点接入(multiple access),其特点是信道并非在用户通信时固定分配给用户。这里又分为以下两类:
    • 随机接入:所有的用户可随机地发送信息。但如果恰巧有两个或更多的用户在同一时刻发送信息,那么在共享媒体上就要产生碰撞,使得这些用户的发送都失败。因此,必须有解决碰撞的网络协议。这也是本章介绍的重点。
    • 受控接入:用户不能随机地发送信息而必须服从一定的控制。这类的典型代表有分散控制的令牌环局域网和集中控制的多点线路探询(polling),或称为轮询。受控接入在局域网中使用得较少。

(3)MAC 协议:为了使数据链路层能更好地适应多种局域网标准,IEEE802 委员会就把局域网的数据链路层拆成两个子层,即逻辑链路控制 LLC(Logical Link Control)子层和媒体接入控制 MAC(Medium Access Control)子层。而 TCP/IP 体系经常使用的局域网仅装有 MAC 协议而没有 LLC 协议。

(4)适配器:计算机与外界局域网的连接是通过通信适配器(adapter,或称网卡) 进行的。在这种通信适配器上面装有处理器和存储器(包括 RAM 和 ROM)。适配器和局域网之间的通信是通过电缆或双绞线以串行传输方式进行的而适配器和计算机之间的通信则是通过计算机主板上的 LO 总线以并行传输方式进行的。因此,适配器的一个重要功能就是要进行数据串行传输和并行传输的转换。由于网络上的数据率和计算机总线上的数据率并不相同,因此在适配器中必须装有对数据进行缓存的存储芯片。在主板上插入适配器时,还必须把管理该适配器的设备驱动程序安装在计算机的操作系统中。适配器还要能够实现以太网协议。适配器在接收和发送各种帧时,不使用计算机的 CPU。这时计算机中的 CPU 可以处理其他任务。当适配器收到有差错的帧时,就把这个帧直接丢弃而不必通知计算机。当适配器收到正确的帧时,它就使用中断来通知该计算机,并交付协议栈中的网络层。当计算机要发送 IP 数据报时,就由协议栈把 IP 数据报向下交给适配器,组装成帧后发送到局域网。计算机的硬件地址就在适配器的 ROM 中,而计算机的软件地址—P 地址在计算机的存储器中。

CSMA/CD 协议

(1)总线型一对一通信:最早的以太网是总线型的,当一台计算机发送数据时,总线上的所有计算机都能检测到这个数据,属于广播通信。为了在总线上实现一对一的通信,可以使每一台计算机的适配器拥有一个与其他适配器都不同的地址。在发送数据帧时,在帧的首部写明接收站的地址,仅当数据帧中的目的地址与适配器 ROM 中存放的硬件地址一致时,该适配器才能接收这个数据帧。适配器对不是发送给自己的数据帧就丢弃。

(2)以太网通信措施:

  • 第一,采用较为灵活的无连接的工作方式:不必先建立连接就可以直接发送数据适配器对发送的数据帧不进行编号,也不要求对方发回确认。因此,以太网提供的服务是尽最大努力的交付,即不可靠的交付。当目的站收到有差错的数据帧时,就把帧丢弃。对有差错帧是否需要重传则由高层(TCP 协议,若 TCP 发现丢失了数据,就把这些数据重新传递给以太网进行重传,但以太网并不知道这是重传帧)来决定。在同一时间只能允许一台计算机发送数据,否则各计算机之间就会互相干扰,使得所发送数据被破坏。以太网采用最简单的随机接入,并使用 CSMA/CD(载波监听多点接入/碰撞检测,Carrier Sense Multiple Access with Collision Detection)协议以减少冲突发生的概率。
  • 第二,以太网发送的数据都使用曼彻斯特(Manchester)编码,每一个码元的正中间出现一次电压的转换,而接收端就利用这种电压的转换很方便地把位同步信号提取出来。曼彻斯特编码的缺点是它所占的频带宽度比原始的基带信号增加了一倍(因为每秒传送的码元数加倍了)。

(3)CSMA/CD 载波监听多点接入/碰撞检测协议:

  • “多点接入”就是说明这是总线型网络,许多计算机以多点接入的方式连接在一根总线上。协议的实质是“载波监听”和“碰撞检测”。
  • “载波监听”就是用电子技术检测总线上有没有其他计算机也在发送,就是检测信道,不管在发送前,还是在发送中,每个主机都必须不停地检测信道。在发送前检测信道,是为了获得发送权。在发送中检测信道,是为了及时发现有没有其他站的发送和本站发送的碰撞。这就称为碰撞检测。
  • “碰撞检测”也就是“边发送边监听”,即适配器边发送数据边检测信道上的信号电压的变化情况,以便判断自己在发送数据时其他站是否也在发送数据。当几个站同时在总线上发送数据时,总线上的信号电压变化幅度将会增大(互相叠加)。当适配器检测到的信号电压变化幅度超过一定的门限值时,就认为总线上至少有两个站同时在发送数据,表明产生了碰撞。一旦发现总线上出现了碰撞,其适配器就要立即停止发送,然后等待一段随机时间后再次发送。

(4)碰撞起因

  • 既然每一个站在发送数据之前已经监听到信道为“空闲”,那么为什么还会出现数据在总线上的碰撞呢?
  • 这是因为电磁波在总线上总是以有限的速率传播的,若是在这个传播时延内有多台主机检测到空闲,并发送数据,则发生冲突。

(5)碰撞分析

  • 把总线上的单程端到端传播时延记为 τ,最迟经过 2τ 的时间发送端能检测到碰撞,即总线的端到端往返传播时延。
  • 显然,在使用 CSMA/CD 协议时,一个主机不可能同时进行发送和接收(但必须边发送边监听信道)。因此使用 CSMA/CD 协议的以太网不可能进行全双工通信而只能进行双向交替通信(半双工通信)。
  • 每一个站在自己发送数据之后的一小段时间内,存在着遭遇碰撞的可能性。这一小段时间是不确定的,它取决于另一个发送数据的站到本站的距离。以太网的这一特点称为发送的不确定性。如果希望在以太网上发生碰撞的机会很小,必须使整个以太网的平均通信量远小于以太网的最高数据率。
  • 以太网的端到端往返时间 2τ 称为争用期(contention period),又称为碰撞窗口(collision window)。这是因为一个站在发送完数据后,经过争用期这段时间还没有检测到碰撞,才能肯定这次发送不会发生碰撞。

(6)碰撞解决方案 以太网使用截断二进制指数退避(truncated binary exponential backoff)算法来确定碰撞后重传的时机。这种算法让发生碰撞的站在停止发送数据后,推迟(这叫做退避)一个随机的时间再次发送。因为如果几个发生碰撞的站都在监听信道,那么都会同时发现信道变成了空闲。如果大家都同时再重新发送,那么肯定又会发生碰撞。为了使各站进行重传时再次发生冲突的概率减小,具体的退避算法如下:

  • 协议规定了基本退避时间为争用期 2τ,争用期时间具体是 51.2us。对于 10 Mbit/s 以太网,在争用期内可发送 512bit,即 64 字节。也可以说争用期是 512 比特时间。
  • 从离散的整数集合,当重传次数不超过 10 时,参数 k 等于重传次数;但当重传次数超过 10 时,k 就不再增大而一直等于 10。
  • 当重传达 16 次仍不能成功时(这表明同时打算发送数据的站太多,以致连续发生突),则丢弃该帧,并向高层报告。

(7)指数退避算法分析

  • 适配器每发送一个新的帧,就要执行一次 CSMA/CD 算法。适配器对过去发生过的碰撞并无记忆功能。因此,当好几个适配器正在执行指数退避算法时,很可能有某一个适配器发送的新帧能够碰巧立即成功地插入到信道中,得到了发送权,而已经推迟好几次发送的站,有可能很不巧,还要继续执行退避算法,继续等待。
  • 若发送数据小于争用期 512bit,发送端边发送边侦听,如果发生冲突并用了 51.2us 冲突回传回来时,早就发完了,那发送站认为这个碰撞不是自己的帧,因而不会重传这个帧。为了避免发生这种情况,以太网规定了一个最短帧长 64 字节,即 512bit。如果要发送的数据非常少,那么必须加入一些填充字节,使帧长不小于 64 字节。对于 10Mbit/s 以太网,发送 512bit 的时间需要 51.2us,也就是上面提到的争用期。
  • 由此可见,以太网在发送数据时,如果在争用期(共发送了 64 字节)没有发生碰撞那么后续发送的数据就一定不会发生冲突。换句话说,如果发生碰撞,就一定是在发送的前 64 字节之内。由于一检测到冲突就立即中止发送,这时已经发送出去的数据一定小于 64 字节,因此凡长度小于 64 字节的帧都是由于冲突而异常中止的无效帧。只要收到了这种无效帧,就应当立即将其丢弃。

(8)强化碰撞 当发送数据的站一旦发现发生了碰撞时,除了立即停止发送数据外,还要再继续发送 32 比特或 48 比特的人为干扰信号 (jamming signal),以便让所有用户都知道现在已经发生了碰撞。 以太网还规定了帧间最小间隔为 96μs,相当于 96 比特时间。这样做是为了使刚刚收到数据帧的站的接收缓存来得及清理,做好接收下一帧的准备。

集线器与星型拓扑

集线器的一些特点如下:

  • 从表面上看,使用集线器的局域网在物理上是一个星形网,但使用集线器的以太网在逻辑上仍是一个总线网,各主机共享逻辑上的总线,各主机中的适配器执行 CSMA/CD 协议),,在同一时刻至多只允许一个主机发送数据。
  • 集线器工作在物理层,它的每个接口仅仅简单地转发比特——收到 1 就转发 1,收到 0 就转发 0,不进行碰撞检测。若两个接口同时有信号输入(即发生碰撞),那么所有的接口都将收不到正确的帧。
  • 集线器采用了专门的芯片,进行自适应串音回波抵消。这样就可使接口转发出去的较强信号不致对该接口接收到的较弱信号产生干扰(这种干扰即近端串音)。每个比特在转发之前还要进行再生整形并重新定时。
  • 集线器一般都有少量的容错能力和网络管理功能。例如,假定在以太网中有一个适配器出了故障,不停地发送以太网帧。这时,集线器可以检测到这个问题,在内部断开与出故障的适配器的连线,使整个以太网仍然能够正常工作。

以太网的信道利用率

假定一个 10 Mbit/s 以太网同时有 10 个站在工作,那么每一个站所能发送数据的平均速率似乎应当是总数据率的 1/10(即 1Mbit/s)。但由于碰撞的存在,信道资源会造成浪费。因此,以太网总的信道利用率并不能达到 100%。 下图的例子是以太网的信道被占用的情况。一个站在发送帧时出现了碰撞。经过若干个争用期后,发送成功了。假定发送帧需要的时间是。它等于帧长(bit 除以发送速率(10 Mbit/s)。成功发送一个帧需要占用信道的时间是,也就是发送时延+传播时延。

要提高以太网的信道利用率,就必须减小 $a=\frac{\tau}{T_0}$,当 a→0 时,只要一发生碰撞,就立即可以检测出来,并立即停止发送,因而信道资源被浪费的时间非常非常少。以太网的参数 a 的值应当尽可能小些,这就要求分子数值要小些,而分母的数值要大些。

现在考虑一种理想化的情况,假定以太网上的各站发送数据都不会产生碰撞,即总线一旦空闲就有某一个站立即发送数据,于是我们可计算出极限信道利用率 a 远小于 1 才能得到尽可能高的极限信道利用率。

以太网的 MAC 层

(1)在局域网中,硬件地址又称为物理地址或 MAC 地址(因为这种地址用在 MAC 帧中),是指局域网上的每台计算机中固化在适配器的 ROM 中的 48 位(6 字节)的地址。IEEE 的注册管理机构 RA(Registration Authority) 负责分配地址字段的 6 个字节中的前三个字节(即高位 24 位)给生产局域网适配器的厂家,称为组织唯一标识符 OUI(Organizationally Unique Identifier)。地址字段中的后三个字节(即低位 24 位)则由厂家自行指派称为扩展标识符(extended identifier),只要保证生产出的适配器没有重复地址即可。一个公司可能有几个 OUI,也可能有几个小公司合起来购买一个 OUI。

(2)MAC 帧格式 常用的以太网 MAC 帧格式有两种标准,一种是 DIX Ethernet V2 标准(即以太网 V2 标准),准),另一种是 IEEE 的 802.3 标准。这里只介绍使用得最多的以太网 V2 的 MAC 帧格式。以太网 V2 的 MAC 帧由五个字段组成:目的地址(6 字节),源地址(6 字节),类型字段(2 字节,标志上一层使用的是什么协议,0x0800 表示上层使用的是 IP 数据报,0x8137 表示该帧是由 Novell IPX 发过来的),数据字段(46 到 1500 字节,46 字节=最小长度 64 字节-18 字节的收尾),帧检验序列 FCS(4 字节,使用 CRC 检验)。

(3)数据长度判断 以上 MAC 帧格式并没有帧长度(或数据长度)字段,接收方依据曼彻斯特编码的特性(每个码元中间有一次电压转换)确定数据字段的长度。但是当数据字段的长度小于 46 字节时,MAC 子层就会在数据字段的后面加入填充字段,但 MAC 帧的首部并没有指出数据字段的长度是多少,上层协议如何知道填充字段的长度呢? 当上层使用 IP 协议时,其首部就有一个“总长度”字段。因此,“总长度”加上填充字段的长度,应当等于 MAC 帧数据字段的长度。例如,当 IP 数据报的总长度为 42 字节时,填充字段共有 4 字节。当 MAC 帧把 46 字节的数据上交给 IP 层后,IP 层就把其中最后 4 字节的填充字段丢弃。

(4)位同步 为了接收端迅速实现位同步,从 MAC 子层向下传到物理层时还要在帧的前面插入 8 字节(由硬件生成),它由两个字段构成。第一个字段是7 个字节的前同步码,它的作用是使接收端的适配器在接收 MAC 帧时能够迅速调整其时钟频率,使它和发送端的时钟同步。第二个字段是帧开始定界符,定义为 10101011,它的前六位的作用和前同步码一样,最后的两个连续的 1 就是告诉接收端适配器:“MAC 帧的信息马上就要来了,请适配器注意接收”。

(5)无效的 MAC 帧

  • 帧的长度不是整数个字节;
  • 用收到的帧检验序列 FCS 查出有差错
  • 收到的帧的 MAC 客户数据字段的长度不在 46~1500 字节之间。

扩展的以太网

在物理层扩展以太网

以太网上的主机之间的距离不能太远,否则主机发送的信号经过铜线的传输就会衰减到使 CSMA/CD 协议无法正常工作。现在,扩展主机和集线器之间的距离的一种简单方法就是使用光纤和一对光纤调制解调器。光纤调制解调器的作用就是进行电信号和光信号的转换。如果使用多个集线器,就可以连接成覆盖更大范围的多级星形结构的以太网。

优点:跨独立以太网通信,扩大了以太网覆盖的地理范围。 缺点:三个独立以太网的通过集线器互连起来后就把三个碰撞域变成一个碰撞域,且这时的最大吞吐量仍然是单个以太网的吞吐量。如果不同的独立以太网使用不同的以太网技术(如数据率不同),那么就不可能用集线器将们互连起来。如上图中,一个系使用 10Mbit/s 的适配器,而另外两个系使用 100Mbit/s 的适配器,那么用集线器连接起来后,大家都只能工作在 10 Mbit/s 的速率。

数据链路层扩展以太网

(1)扩展以太网更常用的方法是在数据链路层进行。最初使用的是网桥(bridge)。网桥对收到的帧根据其 MAC 帧的目的地址进行转发和过滤。当网桥收到一个帧时,并不是向所有的接口转发此帧,而是根据此帧的目的 MAC 地址,查找网桥中的地址表,然后确定将该帧转发到哪一个接口,或者是把它丢弃(即过滤)。交换式集线器(switching hub,或称为以太网交换机(switch)或第二层交换机(L2 switch))的出现很快就淘汰了网桥。 以太网交换机的特点:

  • 太网交换机实质上就是一个多接口的网桥,通常都有十几个或更多的接口,以太网交换机的每个接口都直接与一个单台主机或另一个以太网交换机相连,并且一般都工作在全双工方式。
  • 以太网交换机还具有并行性,即能同时连通多对接口,使多对主机能同时通信(而网桥只能一次分析和转发一个帧)。相互通信的主机都是独占传输媒体,无碰撞地传输数据。
  • 以太网交换机的接口还有存储器,能在输出端口繁忙时把到来的帧进行缓存。
  • 以太网交换机是一种即插即用设备,其内部的帧交换表(又称为地址表)是通过自学习算法自动地逐渐建立起来的。
  • 对于传统的 10 Mbit/s 的共享式以太网,若共有 10 个用户,则每个用户占有的平均带宽只有 1Mbis。若使用以太网交换机来连接这些主机,虽然在每个接口到主机的带宽还是 10Mbit/s,但由于一个用户在通信时是独占而不是和其他网络用户共享传输媒体的带宽,因此对于拥有 10 个接口的交换机的总容量则为 100 Mbit/s。这正是交换机的最大优点。
  • 以太网交换机一般都具有多种速率的接口,例如,可以具有 10 Mbit/s、100Mbit/s 和 1Gbit/s 的接口的各种组合,这就大大方便了各种不同情况的用户。 虽然许多以太网交换机对收到的帧采用存储转发方式进行转发,但也有一些交换机采 用直通 ( cut-through)的交换方式。直通交换不必把整个数据帧先缓存后再进行处理,而是在 接收数据帧的同时就立即按数据帧的目的 MAC 地址决定该帧的转发接口,因而提高了帧的 转发速度。如果在这种交换机的内部采用基于硬件的交叉矩阵,交换时延就非常小。

(2)以太网交换机的自学习功能

  • 当交换机不知道哪个接口对应哪个 MAC 主机时,就采用广播的方式,然后将过滤后的 MAC 地址和接口号对应填入交换表;
  • 当交换表已知某个帧的目的 MAC 地址对应接口时,不必要广播,直接转发。
  • 考虑到有时可能要在交换机的接口更换主机,这就需要更改交换表中的项目。为此,在交换表中每个项目都设有一定的有效时间。过期的项目就自动被删除。

(3)从总线以太网到星形以太网 总线以太网使用 CSMA/CD 协议,以半双工方式工作。但以太网交换机不使用共享总线,没有碰撞问题,因此不使用 CSMA/CD 协议,而是以全双工方式工作。既然连以太网的重要协议 CSMA/CD 都不使用了,为什么还叫做以太网呢?原因就是它的帧结构未改变,仍然采用以太网的帧结构。

虚拟局域网

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

(2)实例 LAN1:(A1,A2,B1,C1),LAN2:(A3,B2,C2),LAN3:(A4,B3,C3)这 10 个用户划分为三个物理工作组,同时被划分为三个逻辑虚拟局域网 VLANVLAN1:(Al, A2, A3, A4), VLAN2: (Bl, B2, B3): VLAN3: (Cl, C2, C3)

(3)工作原理 虚拟局域网协议允许在以太网的帧格式中插入一个 4 字节的标识符,称为 VLAN 标记(tag),用来指明发送该帧的计算机属于哪一个虚拟局域网。插入 VLAN 标记得出的帧称为802.1Q 帧。

VLAN 标记字段的长度是 4 字节,插入在以太网 MAC 帧的源地址字段和类型字段之间。VLAN 标记的前两个字节总是设置为 0x8100(图中显示的是二进制),称为IEEE802.1Q 标记类型。在后面的两个字节中,前 3 位是用户优先级字段,接着的一位是规范格式指示符 CFI(Canonical FormatIndicator),最后的 12 位是该虚拟局域网 VLAN 标识符 VID (VLAN ID),它唯一地标志了这个以太网帧属于哪一个 VLAN。由于用于 VLAN 的以太网帧的首部增加了 4 个字节,因此以太网的最大帧长从原来的 1518 字节(1500 字节的数据加上 18 字节的首部)变为 1522 字节。

物理层

物理层的主要任务

物理层考虑的是怎样才能在连接各种计算机的传输媒体上传输数据比特流,而不是指具体的传输媒体。 可以将物理层的主要任务描述为确定与传输媒体的接口有关的一些特性,即:

  • 机械特性 指明接口所用接线器的形状和尺寸、引脚数目和排列、固定和锁定装置,等。平时常见的各种规格的接插件都有严格的标准化的规定。
  • 电气特性 指明在接口电缆的各条线上出现的电压的范围。
  • 功能特性 指明某条线上出现的某一电平的电压的意义(如判断是高电平还是低电平)。
  • 过程特性 指明对于不同功能的各种可能事件的出现顺序。

数字信号与模拟信号

它的作用是:屏蔽不同的传输媒体和通信手段的差异。我们都知道,自然界的信号无非就是两种,一种是数字信号,另一种就是模拟信号。那么是什么模拟信号?什么又是数字信号呢?

说白了,所谓的模拟信号就是连续变化的物理量,模拟信号其特点是幅度连续(连续的含义是在某一取值范围内可以取无限多个数值)。模拟信号,其信号波形在时间上也是连续的,因此它又是连续信号。我们对连续信号进行抽样,就会得到抽样信号,但抽象信号就是离散的(说着说着就说到了信号系统,看来补考对我的影响还是有的)。但数字信号是不同于模拟信号的,他在时间域上是离散的,它有两种不同状态的物理量,分别用“0”,“1”来表示。这就好像电灯开关一样,也有两种不同的状态。

当然,数字信号与模拟信号是可以相互转换的,模拟信号通常使用 PCM(脉冲编码调制)方法量化并转换为数字信号,PCM 方法是使不同范围的模拟信号对应不同的二进制值。通常,数字信号通过载波相移得到模拟信号。

信道

按照传输媒介可以分为三类:

  • 有线信道:有线信道以导线为传输媒质,信号沿导线进行传输,信号的能量集中在导线附近,因此传输效率高,但是部署不够灵活。这一类信道使用的传输媒质包括用电线传输电信号的架空明线、电话线、双绞线、对称电缆和同轴电缆等等,还有传输经过调制的光脉冲信号的光导纤维。
  • 无线信道:无线信道主要有以辐射无线电波为传输方式的无线电信道和在水下传播声波的水声信道等。无线电信号由发射机的天线辐射到整个自由空间上进行传播。不同频段的无线电波有不同的传播方式。
  • 存储信道:在某种意义上,磁带、光盘、磁盘等数据存储媒质也可以被看作是一种通信信道。将数据写入存储媒质的过程即等效于发射机将信号传输到信道的过程,将数据从存储媒质读出的过程即等效于接收机从信道接收信号的过程。

信道是传输信息的信道,信道容量描述了信道无差错地传输信息的最大能力,可以用来衡量信道的好坏。 关于信道,还有一个重要的参数,那就是信噪比,信噪比越大,信道的容量也越大,这里的话给出著名的香农公式:

1609589230024-8163d15d-fff2-4a58-953f-15dc27ae3758.webp
1609589230024-8163d15d-fff2-4a58-953f-15dc27ae3758.webp

物理层的传输媒介

我们大家都知道,数据在物理层传输的媒介是不一样的,工作在物理层的是集线器。不过,大致可以为一下两类:

  • 引导型传输媒介:引导型传输媒体中又有不同的类别,比如同轴电缆、光缆、双绞线,其中双绞线根据是否屏蔽又可以继续细分。
  • 非引导型传输媒介:非引导型传输媒介指的是无线电波在空间中的传播,利用不同的频段可以传输不同的信号。

通信的双方信息交互的方式

从通信的双方信息交互的方式来看,可以有以下三种基本方式:

  • 单向通信又称为单工通信,即只能有一个方向的通信而没有反方向的交互。无线电广播或有线电广播以及电视广播就属于这种类型。
  • 双向交替通信又称为半双工通信,即通信的双方都可以发送信息,但不能双方同时发送(当然也就不能同时接收)。
  • 双向同时通信又称为全双工通信,即通信的双方可以同时发送和接收信息

单向通信只需要一条信道,而双向交替通信或双向同时通信则都需要两条信道(每个方向各一条)。显然,双向同时通信的传输效率最高。

信道复用技术

在进行通信时,复用器( multiplexer)总是和分用器( demultiplexer)成对地使用。在复用器和分用器之间是用户共享的高速信道。分用器的作用正好和复用器相反,它把高速信道传送过来的数据进行分用,分别送交到相应的用户。

  • 频分多路复用 FDM: 每个用户占用不同的宽带频率, 单位 Hz. 用户得到一定的频率之后通信过程中始终占用该频率.
  • 时分多路复用 TDM: 将时间段划分为等长的时分复用帧, 每个用户占用固定序号的时隙. 各用户占用的时隙是周期性出现的.
  • 波分多路复用 WDM: 将不同的波长分配给不同的用户, 在光通信系统中常见.
  • 码分复用 CDM: 多用于无线通信网络, 为每个用户分配一个 m 比特的唯一码片序列. 用户使用相同频率的载波, 利用各自的码片序列编码数据. 编码信号=原始数据*码片序列. 对于一个用户, 他想要发送它的数据, 那么假如该数据是 0 , 则发送自己的 m 比特的码片序列. 如果数据是 1, 就发送 m 比特码片序列的补码.并且要求个用户的码片序列相互正交.

常见的宽带接入技术

  • ADSL 技术
  • 光纤同轴混合网(HFC 网)
  • FTTx 技术

从宽带接入的媒体来看,可以划分为两大类:

  • 有线宽带接入
  • 无线宽带接入

参考资料

书籍参考

视频参考

文章参考