计算机网络重点内容(自考04741)

面向对象是程序开发领域中的重要思想,这种思想符合人类认识客观世界的逻辑,是当前计算机软件工程学的主流思想。C++在设计之初就是一门面向对象语言,了解面向对象程序设计思想对于学习C++开发至关重要。在面向对象中,类和对象是非常重要的两个概念,本章将针对面向对象中的类和对象进行详细的介绍。

一、计算机网络概述

1.1、计算机网络的基本概念

1.1.1、计算机网络的定义

计算机网络是利用通信设备与通信链路(或通信网络),互连位置不同、功能自洽的计算机系统,并遵循一定的规则实现计算机系统之间信息交换。简单来说,计算机网络是互连的、自洽的计算机的集合。

“自洽”是指互连的计算机系统彼此独立,不存在主从或者控制与被控制的关系。

“互连”是指利用通信链路连接相互独立的计算机系统。

1.1.2、协议的定义

协议是计算机网络中的实体在进行数据交换的过程中必须遵循的一些规则或约定。

协议约定了实体之间交换的信息类型、信息各部分的含义、信息交换顺序以及收到特定信息或出现异常时应采取的行为。

任何一个协议都包含了三个要素:语法、语义、时序。

  • 语法:定义实体之间交换信息的格式与结构,或者定义实体之间传输信号的电平等。
  • 语义:定义实体之间交换的信息中需要发送(或包含)哪些控制信息,这些信息的具体含义,以及针对不同含义的控制信息,接收端应如何响应。此外,还需要定义彼此采用何种差错编码、以及采取何种差错处理机制等。
  • 时序:也称为同步,定义实体之间交换信息的顺序以及如何匹配或适应彼此的速度。

1.1.3、计算机网络的功能

计算机网络的主要功能是资源共享,包括硬件资源共享、软件资源共享和信息资源共享。

1.1.4、计算机网络的分类

按覆盖范围分

  • 个域网(Personal Area Network,PAN)
  • 局域网(Local Area Network,LAN)
  • 城域网(Metropolitan Area Network,MAN)
  • 广域网(Wide Area Network,WAN)

按拓扑结构分

  • 星形。存在一个中央结点,所有主机通过点对点通信链路与中央结点连接,主机之间的通信都需要通过中央结点进行。优点是易于监控与管理,故障诊断与隔离容易;缺点是中央结点是网络的瓶颈,一旦故障,全网瘫痪,网络规模受限于中央结点的端口数量。
  • 总线型。采用一条广播信道作为公共传输介质,称为总线,所有结点均与总线连接,结点间的通信均通过共享的总线进行。优点是结构简单,所需电缆数量少,易于扩展;缺点是通信范围受限,故障诊断与隔离较困难,容易产生冲突。
  • 环形。利用通信链路将所有结点连接成一个闭合的环。优点是所需电缆长度短,可以使用光纤,易于避免冲突;缺点是某结点的故障容易引起全网瘫痪,新结点的加入或撤出过程比较麻,存在等待时间问题。
  • 网状。每个结点通过多条链路与其他结点直接连接。优点是网络可靠性高,一条或多条链路故障时,网络仍然可联通;缺点是网络结构复杂,造价成本高,选路协议复杂。
  • 树形。可以看作是总线型拓扑或星形拓扑网络的扩展。比较多见的是通过级联星形拓扑结构网络中的中央结点构建树形拓扑结构网络。优点是易于扩展,故障隔离究易:缺点是对根结点的可靠性要求高,一旦根结点故障,则可能导致网络大范围无法通信。
  • 混合。是由两种以上简单拓扑结构网络混合连接而成的网络。优点是易于扩展,可以构建不同规模网络,并可根据需要优选网络结构;缺点是网络结构复杂,管理与维护复杂。

按交换方式分

  • 电路交换
  • 报文交换
  • 分组交换

按网络用户属性分

  • 公用网
  • 私有网

1.2、计算机网络结构

大规模现代计算机网络的结构包括:网络边缘、接入网络、网络核心

1.3、数据交换技术

数据交换是实现在大规模网络核心上进行数据传输的技术基础。常见的数据交换包括电路交换(circuit switching)、报文交换(message switching)和分组交换(packet switching)。基于不同交换技术构建的网络分别称之为电路交换网络、报文交换网络和分组交换网络。

1.3.1、电路交换

电路交换是最早出现的一种数据交换方式,距今已有100多年的历史,最早、最大的电路交换网络是电话网络。

利用电路交换进行通信包括建立电路、传输数据和拆除电路3个阶段。在电路交换网络中,首先需要通过中间交换结点为两台主机之间建立一条专用的通信线路(称为电路),然后再利用该电路进行通信,通话结束后再拆除电路。

电路交换的特点是有连接。在通信时需要先建立电路连接,在通信过程中独占这个连接,通信结束后拆除电路连接。电路交换的优点是实时性高,时延和时延抖动都较小;缺点是对于突发性数据传输,信道利用率低,且传输速率单一。当主机间交换的数据具有随机性和突发性时,采用电路交换方法的缺点是信道容量和有效时间的浪费。电路交换主要适用于语音和视频这类实时性强的业务。

1.3.2、报文交换

20世纪40年代的电报通信中,采用的是基于存储-转发原理的报文交换。

报文交换也称为消息交换,其工作过程为:发送方把要发送的信息附加上发送/接收主机的地址和其它控制信息,构成一个完整的报文(Message)。然后以报文为单位在交换网络的各结点之间以存储-转发的方式传送,直至送达目的主机。

报文交换不需要事先建立连接,发送方组装好报文后即可向相邻的交换结点发出,交换结点收到整个报文并且检查无误后,暂时存储报文,然后利用路由选择找出需要转发的下一个结点的地址,再把整个报文转发给下一个结点。交换结点间这种接收-暂存-转发的工作方式,就称为“存储-转发”交换方式。

在报文交换网络中,只有当报文被转发时才占用相应的信道,不存在电路交换中通信双方空闲时信道也要被占用的情况。因此,相对电路交换而言,报文交换信道利用率高。在报文交换网络中,交换结点需要缓冲存储,报文需要排队,因此会导致报文在网络中的延迟时间变长且不固定,对于实时通信而言容易出现不能满足速度要求的情况。此外,当结点收到的报文过多而存储空间不够或者输出链路被占用不能及时转发时,还会出现报文被丢弃的情况。

1.3.3、分组交换

分组交换是目前计算机网络广泛采用的数据交换技术。

在分组交换网络中,发送方会将待传输数据(即报文)分割成较小的数据块,每个数据块附上地址、序号等控制信息构成数据分组(packet),每个分组独立传输到目的地,目的地将将收到的分组重新组装、还原为报文。

分组交换是对报文交换的一种改进。分组交换也采用存储-转发方式,它将一个完整报文拆分成若干个分组,每个分组的长度有一个上限,有限长度的分组使得每个结点所需的存储能力降低,分组可以存储到内存中,提高了交换速度。与报文交换相比,分组交换主要有如下优点:

  • 交换设备存储容量要求低
  • 交换速度快
  • 可靠传输效率高
  • 更加公平

1.3.4、小结

下图,是电路交换、报文交换和分组交换的主要区别。

img

图中的A和D分别是源点和终点,B和C是在A和D之间的中间结点,P1~P4表示4个分组。图的下方归纳了三种交换方式在数据传送阶段的主要特点。

  • 电路交换。整个报文的比特流连续地从源点直达终点,好像一条物理的线路直接将源点和终点连接起来一样。
  • 报文交换。整个报文先传送到相邻结点,全部存储下来后查找转发表,转发到下一个结点。
  • 分组交换。单个分组(这只是整个报文的一部分)传送到相邻结点,存储下来后查找转发表,转发到下一个结点。(注:分组交换机的输出接口和输入接口能够并行工作,当输出接口在发送一个分组时,其输入接口可以接收下一个分组)

从上图可以看出,若要连续传送大量的数据,且其传送时间远大于连接建立时间,则电路交换的传输速率较高。报文交换和分组交换不需要预先分配传输带宽,在传送突发数据时可提高整个网络的信道利用率。由于一个分组的长度往往远小于整个报文的长度,因此分组交换比报文交换的时延小。将发送的报文划分成小的分组,除了有减小转发时延的好处外,还可以避免过长的报文长时间占用链路,同时也有利于进行差错控制。

1.4、计算机网络性能

任何一个系统都可以或需要不同的指标来度量系统的优劣、状态或特性。计算机网络是综合计算机技术与通信技术的复杂系统,可以通过许多指标对一个计算机网络的性能进行度量与评价。

1.4.1、速率

速率是指网络单位时间内传送的数据量,也称为数据传输速率或数据速率(data rate),用以描述网络传输数据的快慢。

计算机网络传输的数据是以位(即比特)为信息单位的二进制数据,因此有时也称速率为比特率(bit rate)。如下图所示,计算机将待发送的信息转换成二进制数(一个二进制数称为一个“比特”),二进制数最终被转换成数字信号在线路上传输。

img

在网络技术中,速率的单位是bit/s(比特每秒,有时也写为bps,即bit per second,每秒传输的比特数量)。当速率较高时,就可以用kbit/s(k=10310^3=千)、Mbit/s(M=10610^6=兆)、Gbit/s(G=10910^9=吉)或Tbit/s(T=101210^{12}=太)。在日常生活中,人们习惯用更简洁但不严谨的说法来描述速率,如100M以太网,省略了单位中的bit/s,它的意思是速率为100Mbit/s的以太网。

在计算机技术中,数据量往往以字节作为度量的单位,1个字节(Byte,B)代表8个比特(bit)。这里需要注意的是,“千”、“兆”和“吉”等英文缩写所代表的数值。在存储领域,“千字节”的“千”用大写K表示,它等于2102^{10},即1024,而不是10310^3。这也就说是,在表示计算机中的数据量时,1MB或1GB也并非表示10610^610910^9个字节,而是表示2202^{20}(1048576)或103010^{30}(1073741824)个字节。而在通信领域,“千字节”的“千”用小写k表示,它等于,10310^3即1000,而不是1024。

1.4.2、带宽

在计算机网络中,常常会用“带宽”这一术语描述速率。“带宽”(Bandwidth)有以下两种不同的含义。

  • 在通信或信号处理领域中,带宽是指信号具有的频带宽度,即信号成分的最高频率与最低频率之差,单位为Hz(赫兹)。比如,在模拟电话线路上传输的语音信号的最高频率成分为3.4 kHZ,最低频率成分为300 Hz,所以模拟话音信号的带宽是3.1 kHz。类似地,一条链路或信道能够不失真地传播电磁信号的最高频率与最低频率之差,称为信道的带宽,单位也是Hz。

  • 在计算机网络中,带宽是指网络中某通道传送数据的能力,即网络带宽表示在单位时间内从网络中的某一点到另一点所能通过的“最高数据率”,其单位是“比特每秒”,记为bit/s,前面也常常加上千(k)、兆(M)、吉(G)或太(T)这样的倍数。

“带宽”的这两种含义之间有着密切的关系。一条通信线路,其“频带宽度”越宽,那它传输数据的“最高数据率”也就越高。

目前主流的便携式计算机,其网卡能够支持10Mbit/s、100Mbit/s、1000Mbit/s这3个速率。如下图所示,当计算机网卡连接交换机后,从“本地连接 状态”对话框可以看到,其速率为100Mbps,说明该网卡的最高数据率是每秒传输100M比特。

img

1.4.3、吞吐量

吞吐量(Throughput)也称为吞吐率,表示在单位时间内通过某个网络(或接口)的实际数据量。

吞吐量包括全部上传和下载的流量。经常用于对现实世界中的网络进行测量,以便人们度量网络的实际数据传输(通过)能力,即网络实际可以达到的数据传送速率。如下图所示,计算机A同时浏览网页、在线看电影、向FTP服务器上传文件。其访问网页的下载速率为30kbit/s,播放视频的下载速率为40kbit/s,向FTP服务器上传文件的速率为20kbit/s,计算机A的吞吐量就是全部上传和下载速率的总和,即30+40+20=90(kbit/s)。

img

吞吐量受网络链。路带宽、网络连接复杂性、网络协议、网络拥塞程度等因素影响。比如,如果计算机的网卡连接的是交换机,网卡就可以工作在全双工模式下,即能够同时接收和发送数据。网卡工作在100Mbit/s的全双工模式下,其最大吞吐量为200Mbit/s。如果计算机的网卡连接的是集线器,网卡就只能工作在半双工模式下,即不能同时发送和接收数据。网卡工作在100Mbit/s的半双工模式下,其最大吞吐量为100Mbit/s。

1.4.3、时延

时延(Delay或Latency)也称为延迟或迟延,是指数据(一个报文或分组,甚至比特)从网络的一端传送到另一端所需要的时间。网络中的时延是由四个不同的部分组成的:

总时延=发送时延+传播时延+排队时延+处理时延总时延=发送时延+传播时延+排队时延+处理时延

接下来,以下图中的计算机A给计算机B发送数据为例,来说明网络中的每个部分的时延。

img

1.4.3.1、发送时延

发送时延(Transmission Delay),是指主机或路由器将一个分组的所有比特发送到通信线路上所需要的时间,也就是从待发送分组的第一个比特算起,到该分组的最后一个比特发送到线路上所需要的时间。

img

发送时延的计算公式为:

发送时延=分组长度(B发送速度(bit/s发送时延=\frac{分组长度(B)}{发送速度(bit/s)}

可以看出,发送时延与分组长度和发送速率有关。由于在分组交换中计算机总是以信道最高数据率发送数据,因此公式中的发送速率也可以替换成信道带宽,即发送速率就是网卡的带宽,100Mbit/s的网卡就意味着1s能够发送100106100*10^6个比特。

以太网数据帧最大为1518字节,再加上8字节前导字符,共计1526字节,即分组长度为1526×8=12208比特。如果网卡带宽是10Mbit/s,发送一个最大以太网数据帧,其发送时延=1220810000000\frac{12208}{10 000 000}=1.2ms。其中,ms为毫秒,1s=1000ms。

这里,我们需要知道的是,数据包越大,发送时延也就越大。那么如何验证呢?

如果计算机能够访问Internet,可以使用ping命令测试到Internet上某个网站的数据包往返时延。如下图所示,ping 9.9.9.9,参数l(英文L的小写)用来指定数据包的大小。可以看到数据包为64字节的往返时延比1400字节的往返时延少1ms,这个差距就是因为发送时延不同产生的。

img

1.4.3.2、传播时延

传播时延(Propagation Delay),是指电磁波在信道中传播一定距离所花费的时间,也就是从从待发送分组的最后一个比特发送到线路上算起,到该分组的最后一比特到达路由器接口所需要的时间。

img

传播时延的计算公式为:

传播时延=信道长度(m电磁波在信道上的传播速率(m/s传播时延=\frac{信道长度(m)}{电磁波在信道上的传播速率(m/s)}

电磁波在自由空间的传播速率是光速,即3.0×105km/s3.0×10^5km/s。电磁波在网络传输媒体中的传播速率比在自由空间要略低一些:在铜线电缆中的传播速率约为2.3×105km/s2.3×10^5km/s,在光纤中的传播速率约为2.0×105km/s2.0×10^5km/s。例如,在1000km长的光纤线路上,产生的传播时延大约为5ms。

注:电磁波在指定介质中的传播速率是固定的,从公式可以看出,信道长度固定了,传播时延也就固定了。

1.4.3.3、排队时延

排队时延,是指分组在路由器的输入队列和输出队列中排队所花费的时间。分组在网络中传输时,要经过许多的路由器。分组在进入路由器后,要先在输入队列中排队等待处理。在路由器确定了转发接口后,还要在输出队列中排队等待转发,这就产生了排队时延。

img

排队时延的长短往往取决于网络当时的通信量。当网络的通信量很大时,会发生队列溢出,使分组丢失,这相当于排队时延为无穷大。

1.4.3.4、处理时延

处理时延,是指主机或路由器处理分组所花费的时间。主机或路由器在收到数据包时,要花费一定时间进行处理,如分析数据包的首部、进行首部差错检验,查找路由表为数据包选定转发出口等,这就产生了处理时延。

1.4.4、时延带宽积

时延带宽积,指的是链路的传播时延与链路带宽的乘积,也即:

时延带宽积=传播时延带宽时延带宽积 = 传播时延 * 带宽

我们可以使用如下示意图,来理解时延带宽积。

image-20241105082606975

将链路看成是一个圆柱形的管道,管道的长度表示链路的传播时延(注,这里以时间作为单位来表示链路长度),而管道的截面积表示链路的带宽。因此,这个管道的体积就是时延带宽积,表示链路能容纳多少个比特。例如,假设某段链路的传播时延为20ms,带宽为10Mb/s,可以算出

时延带宽积=2010310106=2105bit时延带宽积 = 20*10^{-3}*10*10^{6}=2*10^{5}bit

这表示,若发送端连续发送数据,则在发送的第一个比特即将达到终点时,发送端就已经发送了20万个比特,而这20万个比特都正在链路上向前移动。因此,链路的时延带宽积又称为以比特为单位的链路长度。

不难看出,管道中的比特数表示从发送端发出的但尚未达到接收端的比特。对于一条正在传送数据的链路,只有在代表链路的管道都充满比特时,链路才得到了充分的利用。

1.4.5、丢包率

丢包率,也称分组丢失率,是指在一定的时间范围内,分组在传输过程中丢失的分组数量与总的分组数量的比率。即

丢包率=丢失的分组数总分组数丢包率 = \frac{丢失的分组数}{总分组数}

丢包率具体可分为接口丢包率、结点丢包率、链路丢包率、路径丢包率、网络丢包率等。

在计算机网络中,分组丢失主要有两种情况。一种情况是分组在传输过程出现了比特级差错,被结点丢弃。另一种情况就是当分组到达一台队列已满的分组交换机时,由于没有空间来存储这些分组,分组交换机就会将到达的分组或已经排队的分组丢弃。由于分组交换不像电路交换那样,通过建立连接来保证通信时所需的各种资源,因而无法确保通信时端到端所需的带宽,在通信量较大时就可能造成网络拥塞,导致分组交换机的队列溢出和分组丢失。这是现代计算机网络中分组丢失最主要的原因。

丢包率反映了网络的拥塞情况。一般无拥塞时路径丢包率为0,轻度拥塞时丢包率为1%~4%,严重拥塞时丢包率为5%~15%。具有较高丢包率的网络通常无法使网络应用正常工作。丢包率是网络运维人员非常关心的一个网络性能指标,但普通用户往往并不关心这个指标,因为他们通常感觉不到网络丢包。大多数网络应用底层所使用的通信软件会为用户提供可靠的传输服务,它们会自动重传丢失的分组并自动调整发送速率进行网络拥塞控制。在网络发生拥塞,丢包率较高时,用户感觉到的往往是网络时延变大,“网速”变慢,而不是信息的丢失。

1.4.6、利用率

利用率有信道利用率和网络利用率两种。信道利用率指某信道有百分之几的时间是被利用的(有数据通过)。完全空闲的信道的利用率是零。网络利用率则是全网络的信道利用率的加权平均值。

信道利用率并非越高越好。这是因为,根据排队论,当某信道的利用率增大时,该信道引起的时延也就迅速增加。这和高速公路的情况有些相似。当高速公路上的车流量很大时,由于某些地方会出现堵塞,因此行车所需的时间就会增大。网络也有类似的情况。当网络的通信量很少时,网络产生的时延并不大;但在网络通信量不断增大的情况下,由于分组在网络结点(路由器或结点交换机)进行处理时需要排队等候,因此网络引起的时延就会增大。如果令D0D_0表示网络空闲时的时延,D表示网络当前的时延,那么在适当的假定条件下,可以用下面的简单公式来表示D、D0D_0和利用率U之间的关系:

D=D01UD = \frac{D_0}{1-U}

这里U的数值在0到1之间。当网络利用率达到其容量的1/2时,时延就要加倍。特别值得注意的就是,当网络利用率接近最大值1时,网络的时延就趋于无穷大。因此我们必须有这样的概念:信道利用率或网络利用率过高会产生非常大的时延。也就是说,一定不要让信道或网络的利用率接近于1。下图所示为时延与利用率的关系。因此,一些拥有较大主干网的ISP通常会把信道利用率控制在50%以下,一旦超过就要准备扩容,增大线路的带宽。

img

注:信道利用率也不能太低,这会使宝贵的通信资源被白白浪费。

1.4.7、往返时间

往返时间(Round-Trip Time,RTT),表示从发送端发送数据开始,到发送端接收到来自接收端的确认(接收端收到数据后立即发送确认),总共经历的时间。显然,在互联网中,往返时间包括了各中间结点转发数据时的发送时延、排队时延、处理时延以及数据的传播时延。

使用ping命令可以显示往返时间。如下图所示,分别ping网关、国内的网站和美国的网站,能看到每一个数据包的往返时间和统计的平均往返时间。从图中可以看出,途经的路由器越多距离越远,往返时间也会越长。(注:通常情况下,内网中的计算机互ping,往返时间小于10ms,如果大于10ms,就要安装抓包工具分析网络中的数据包是否有恶意的广播包,以找到发广播包的计算机)

img

往返时间带宽积可以用来计算当发送端连续发送数据时,接收端如发现有错误,立即向发送端发送通知使发送端停止,发送端在这段时间发送的比特量。例如,假设某段链路的往返时间为40ms,带宽为10Mb/s,假定数据的接收方及时发现了差错,并告知发送方,使发送方立即停止发送,但这时发送方也已经发送了40万个比特。

1.5、计算机网络体系结构

二、网络应用

2.1、计算机网络应用体系结构

2.1.1、客户/服务器(C/S)结构网络应用

2.1.2、纯P2P结构网络应用

2.1.3、混合结构网络应用

2.2、网络应用通信基本原理

2.3、域名系统(DNS)

2.3.1、层次化域名空间

域名由标号序列组成,各标号之间用点隔开,例如,”···.三级域名.二级域名.顶级域名“。

顶级域名可分为三类:

  • 国家顶级域名(nTLD):如cn表示中国,us表示美国,uk表示英国等。
  • 通用顶级域名(gTLD):如com表示公司和企业、net表示网络服务机构、org表示非盈利性组织、edu表示专用的教育机构、gov表示专用的政府部门、mil表示专用的军事部门、int表示国际组织
  • 基础结构域名(infrastructure domain):这类域名只有一个,即arpa,用于反向域名解析,因此又称为反向域名。

2.3.2、域名服务器

域名服务器的管辖范围不是以“域”为单位,而是以“区”为单位。一个域名服务器所负责管辖的(或有权限的)范围叫作区(zone)。每一个区设置相应的权威名服务器,用来保存该区中的所有主机的域名到 IP地址的映射。

根据域名服务器主要保存的域名信息以及在域名解析过程中的作用等,可将域名服务器分为4类:

  • 根域名服务器。是最重要的域名服务器。每个根域名服务器都知道所有的顶级域名服务器的域名和IP 地址。在因特网上,共有13个不同IP地址的根域名服务器,它们的名字是用一个英文字母命名,从a一直到m(前13个字母),如a.rootservers.net, b.rootservers.net、……、m.rootservers.net
  • 顶级域名服务器。即TLD服务器,负责管理在该顶级域名服务器注册的所有二级域名。顶级域名服务器的名称对应一个域名的最后一个名字,是对一个行业的命名,如com、org等,或对一个区域的命名,如cn、us等。
  • 权威域名服务器。负责一个区的域名服务器,保存该区中的所有主机的域名到 IP地址的映射。任何一个拥有域名的主机,其域名与 IP地址的映射关系等信息都存储在所在网络的权威域名服务器上。在进行域名解析时,只要查询到被查询域名主机注册的权威域名服务器,就可以获得该域名对应的 IP地址信息。
  • 中间域名服务。既不是根域名服务器,又不是顶级域名服务器,也不是权威域名服务器的域名服务器,这些域名服务器通常称为中间域名服务器。例如,某主机域名为www.abc.xyz.com,则可能存在的域名服务器包括顶级域名服务器com,中间域名服务器xyz.com权威域名服务器abc.xyz.com

任何一台主机在网络地址配置时,都会配置一个域名服务器作为默认域名服务器。这样,每当这台主机需要进行域名解析,都会将域名查询请求发送给该服务器;该服务器如果保存了被查询域名的信息,则直接做出响应,如果没有,则代理查询其他域名服务器,直到查询到结果,最后将查询结果发送给查询主机。这个默认域名服务器通常称为本地名服务器,是主机进行域名查询过程中首先被查询的域名服务器。

2.3.3、域名解析过程

2.4、万维网应用

HTTP 报文由4部分组成:起始行(start line)、首部行(header lines)、空白行(blank1line)和实体主体(entity body),起始行与首部是行分隔的 ASCII 文本,每行由CRLF(回车换行) 终止,空白行中只有 CRLF,主体(或称报文主体)可以是文本或二进制数据。HTTP 报文始行和空白行不可缺少,首部行可以是零行或多行,实体主体则根据报文类型、功能等可有可无。

2.5、Internet电子邮件

2.6、FTP

2.7、P2P应用

2.8、Socket编程基础

三、传输层

3.1、传输层的基本服务

3.2、传输层的复用与分解

3.3、停-等协议与滑动窗口协议

3.3.1、可靠传输基本原理

可靠传输就是要做到:发送端发送什么,对应的接收端就收到什么。

保证数据传输的可靠性是计算机网络中一个非常重要的任务,也是各层协议均可选择的一个重要功能。可靠传输基本原理并不局限于具体的某层,它可以应用到计算机网络体系结构的各层协议之中。

如下图,为可靠传输的基本模型。可靠传输协议的下层信道常常是不可靠的,即分组可能出现差错、丢失、重复和失序。可靠传输协议就是要在不可靠的信道上实现可靠的数据传输服务。简单来说,可靠传输协议就是为上层的对等实体间提供一条可靠信道(这里指的是广义的信道),即发送方上层实体通过该信道发送的分组都会正确地到达接收方上层实体,不会出现比特差错、分组丢失、分组重复,也不会出现分组失序。

img

实现可靠数据传输的措施主要包括以下几种:

  • 差错检测。利用差错编码实现数据包传输过程中的比特差错检测(甚至纠正)。
  • 确认。接收方向发送方反馈接收状态。
  • 重传。发送方重新发送接收方没有正确接收的数据。
  • 序号。确保数据按序提交。
  • 计时器。解决数据丢失问题。

3.3.2、停-等协议

在计算机网络中,实现可靠传输的基本方法是,如果发现错误就重传。因此,首先要解决的问题是,如何知道分组在传输过程中出现了差错。

对于分组中的比特差错,接收方会使用差错检测技术,识别所接收的分组中是否存在比特差错。而为了让发送方知道是否出现了差错,接收方必须将是否正确接收分组的信息反馈给发送方。

停-等协议,即停止等待(Stop-and Wait,SW)协议,其主要特点是,发送方每发送一个报文段(分组)就停下来等待接收方的确认。

img

当正确接收到一个分组时,接收方向发送方发送一个确认分组ACK(Acknowledgment),当接收到的分组出现比特差错时,接收方丢弃该分组并发送一个否认分组NAK(Negative Acknowledgment)。发送方收到ACK则可以发送下一个分组,而收到NAK则要重传原来的分组,直到收到ACK为止。

当数据分组或确认分组丢失时,发送方将会一直等待接收方的确认分组。为解决该问题,可以在发送方发送完一个数据分组时,启动一个超时计时器
(Timeout Timer)。若到了超时计时器所设置的超时重传时间tout发送方仍收不到接收方的任何确认分组,则重传原来的分组,如图3-12(b)所示。显然,超时计时器对超时重传时间应仔细选择。若超时重传时间太短,则在正常情况下发送方也会在对方的确认信息到达之前就过早地重传数据。若超时重传时间太长,则往往要白白等待很长时间。一般可将超时重传时间选为略大于“从发送方到接收方的平均往返时间”。

为了使协议实现起来更加简单,可以用超时重传来解决比特差错问题而完全不使用NAK。接收方收到有比特差错的分组时,仅仅将其丢弃,而发送方不是通过接收NAK而是通过超时来进行重传。不过使用NAK可以使发送方重传更加及时。

当确认分组丢失时,接收方会收到两个同样的数据分组,即重复分组。若接收方不能识别重复分组,则会导致另一种差错——数据重复,这也是一种不允许出现的差错。为了解决该问题,必须使每个数据分组带上不同的发送序号,每发送一个新的数据分组就把它的发送序号加1。若接收方连续收到发送序号相同的数据分组,就表明出现了重复分组。这时应当丢弃重复的分组。但应注意,此时接收方还必须向发送方再补发一个确认分组ACK,如图3-12(c)所示。

使用上述的确认和重传机制,我们就可以在不可靠的信道上实现可靠的数据传输。这类通过确认和超时重传机制实现的可靠传输协议,常称为自动重传请求
(Automatic Repeat reQuest,ARQ)协议,意思是重传的请求是自动进行的,不需要接收方显式地请求发送方重传某个出错的分组。这里要注意的是,发送方发送完一个分组后,必须暂时保留已发送的分组的副本(为重传时使用)。只有在收到相应的确认后才能清除该分组副本。保留复本、重传、确认和编号都是可靠传输协议实体自己的行为,而上层实体完全感觉不到这些。

任何一个编号系统的序号所占用的比特数一定是有限的。因此,经过一段时间后,发送序号就会被重复使用。例如,当发送序号占用3bit时,就有8个不同的发送序号。

要进行编号就要考虑序号到底要占用多少个比特。序号占用的比特数越少,数据传输的额外开销就越少。若不考虑失序情况(后发送的分组比先发送的分组先到达),对于停止等待协议,由于每发送一个数据分组就停止等待,只要保证每发送一个新的数据分组,其发送序号与上次发送的分组的序号不同就可以了,因此用1bit来编号就够了。那么确认分组需不需要编号呢?

如图3-12(d)所示,由于往返时间的不确定性,有可能一个迟到的确认导致发送方“过早超时”。过早超时会使发送方收到重复的确认分组,发送方应该丢弃重复的确认分组,针对这种情况确认分组也应该使用序号。由于数据链路层点对点的往返时间比较确定,不太可能出现过早超时情况,在数据链路层实现停止等待协议也可以不对确认分组进行编号。

3.3.3、滑动窗口协议

停-等协议的优点是简单、所需缓存空间小;缺点是信道利用率低。为了提高传输效率,发送方可以不使用低效率的停止等待协议,而采用流水线传输方式,如下图所示。

img

流水线传输方式就是发送方可连续发送多个分组,不必每发完一个分组就停顿下来等待对方的确认。这样可使信道上一直有数据不间断地在传送。显然,这种传输方式可以获得很高的信道利用率。当使用流水线传输方式时,发送方不间断地发送分组可能会使接收方或网络来不及处理这些分组,从而导致分组的丢失。发送方发送的分组在接收方或网络中被丢弃,实际上是对通信资源的严重浪费。因此发送方不能无限制地一直发送分组,必须采取措施限制发送方连续发送分组的个数。

3.3.3.1、GBN协议

GBN协议,即回退N帧(Go-Back-N)协议,它在流水线传输的基础上利用发送窗口来限制发送方连续发送分组的个数,是一种连续ARQ协议。

在GBN中,发送方要维持一个发送窗口。发送窗口是允许发送方已发送但还没有收到确认的分组序号的范围,窗口的大小就是发送方已发送但还没有收到确认的最大分组数。实际上,发送窗口大小为1的GBN协议就是停止等待协议。

接下来,以下图为例,介绍滑动窗口的概念。

img

如上图(a),发送窗口大小为5,位于发送窗口内的5个分组都可连续发送出去,而不需要等待对方的确认。GBN协议规定,发送方每收到一个确认,就把发送窗口向前滑动一个分组的位置。上图(b)表示发送方收到了对第1个分组的确认,于是把发送窗口向前移动一个分组的位置,即现在可以发送窗口内的第6个分组。该协议在工作过程中,发送窗口不断向前滑动,因此这类协议又称为滑动窗口协议。

下图为当发送窗口大小为4时GBN协议的工作过程。

img

这里要注意以下几点:

接收方只按序接收分组。如上图(b)所示,虽然接收方收到了正确的分组DATA3、DATA4和DATA5,但必须将它们都丢弃,因为在没有正确接收DATA2之前,这些分组都是失序到达的分组。当收到序号错误的分组时,接收方除了将它们丢弃外,还要对最近按序接收的分组进行确认。如果将接收方允许接收的分组序号的范围定义为接收窗口的话,GBN协议的接收窗口的大小为1。接收方只接收序号落在接收窗口内的分组并向前滑动接收窗口。

发送方依然采用超时机制来重传出现差错或丢失的分组。由于接收方只接收按序到达的分组,一旦某个分组出现差错,其后连续发送的所有分组都要被重传,如上图(b)所示,最多会重传窗口大小个分组。因此,GBN协议规定:一旦发送方超时,则立即重传发送窗口内所有已发送的分组。这就是GBN协议名称的由来,即一旦出错需要退回去重传已发送过的N个分组。

接收方采用累积确认的方式。接收方对分组n的确认,表明接收方已正确接收到分组n及其之前的所有分组。因此,接收方不一定要对收到的分组逐个发送确认,而是可以在收到几个分组后(由具体实现决定),对按序到达的最后一个分组发送确认,即使确认丢失也有可能不必重传。累积确认的优点是容易实现,缺点是不能向发送方准确反映接收方已经正确收到的所有分组的信息。

3.3.3.2、SR协议

GBN协议存在一个缺点:一个分组的差错可能引起大量分组的重传,这些分组可能已经被接收方正确接收了,但由于未按序到达而被丢弃。显然这些分组的重传是对通信资源的极大浪费。为进一步提高性能,可设法只重传出现差错的分组,即使用SR协议。

SR协议,即选择重传(Selective Repeat)协议。为了使发送方仅重传出现差错的分组,接收方不能采用累积确认,而需要对每个正确接收到的分组进行逐一确认(选择确认)。同时,接收方接收窗口大小不再为1,并且需要有足够的缓存来暂存失序到达的分组,以便先收下失序到达但仍然处在接收窗口中的那些分组,等到所缺分组收齐后再一并送交上层。

下图所示为当发送窗口和接收窗口大小均为4时的SR协议的工作过程。

img

从中可以看出,接收方正确收到失序的分组时,只要其落在接收窗口内就先将其缓存起来并发回确认分组,如DATA3、DATA4和DATA5,但是这些分组不能交付上层。发送方在收到ACK2之前,发送窗口一直保持为2~5,因此在发送完DATA5后只能暂停发送。发送方收到失序的ACK3、ACK4和ACK5后并不改变发送窗口,但要记录DATA3、DATA4和DATA5已被确认,因此只有DATA2被超时重传。

在SR中,ACKn仅表示对分组DATAn的确认。接收方收到重传的DATA2后,将其和已缓存的DATA3、DATA4和DATA5一起交付上层,并将接收窗口改为6~9。发送方接收到盼望已久的ACK2后,将发送窗口改为6~9,就可以继续发送分组DATA6~DATA9了。

3.4、用户数据报协议

3.5、传输控制协议

四、网络层

4.1、网络层服务

4.2、数据报网络与虚电路网络

4.3、网络互连与网络互连设备

4.3.1、异构网络互连

4.3.2、路由器

路由器是最典型的网络层设备。它是一个具有多个输入端口和多个输出端口的专用计算机,主要任务是获取和维护路由信息以及转发分组。

路由器从功能体系结构角度,可以分为4个部分:输入端口、交换结构、输出端口与路由处理器。

4.4、网络层拥塞控制

4.5、Internet网络层

4.5.1、IPv4协议

4.5.2、IPv4编址

4.5.2.1、分类地址

A(网络前缀0)

B(网络前缀10)

C(网络前缀110)

D(网络前缀1110)

E(网络前缀1111)

4.5.2.2、特殊地址

4.5.2.3、无类地址

4.5.2.4、子网划分

4.5.2.5、路由聚合

4.5.3、动态主机配置协议

4.5.4、网络地址转换

4.5.5、ICMP

4.5.6、IPv6

4.6、路由算法与路由协议

4.6.1、链路状态路由选择算法

4.6.2、距离向量路由选择算法

4.6.3、层次化路由选择

4.6.4、Internet路由选择协议

4.6.4.1、RIP

基于距离向量路由选择算法

4.6.4.2、OSPF

基于链路状态路由选择算法

4.6.4.3、BGP

五、数据链路层与局域网

5.1、数据链路层服务

从数据链路层来看,无论是主机还是路由器等网络设备,都可以统称为结点。连接相邻结点的通信信道称为链路。数据链路层传输的数据单元称为帧。数据链路层通常提供以下几点服务:

  • 组帧。
  • 链路接入。
  • 可靠交付。
  • 差错控制。

5.2、差错控制

差错控制是指通过差错编码技术,实现对信息传输差错的检测,并基于某种机制进行差错纠正和处理。

信号在传输过程中,会受到各种噪声的干扰,从而导致传输差错。噪声可以大致分为随机噪声和冲击噪声两大类。

5.2.1、差错控制的基本方式

典型的差错控制方式有4种:

  • 检错重发。发送端对待发送数据进行差错编码,接收端利用差错编码检测数据是否出错。对于出错的数据,接收端请求发送端重发数据,直到接收端收到正确数据为止。停等协议和滑动窗口协议实现的都是这类差错控制方式。

  • 前向纠错(Forward Error Correction,FEC)。发送端对待发送数据进行纠错编码,接收端利用纠错编码进行差错检测,对于发生错误的帧直接进行纠错。该方式适用于单工链路或者对实时性要求比较高的应用。

  • 反馈检验。接收端将收到的数据原封不动发回发送端,发送端比对接收端反馈的数据与已发送的数据,如果发现有不同,则认为接收端没有正确接收到发送的数据,于是立即重发数据,直到收到接收端反馈的数据与已发送的数据一致为止。该方式的优点是原理简单、易于实现、无须差错编码;缺点是传输效率低、实时性差。

  • 检错丢弃。接收端直接丢弃错误数据。只适用于对实时性要求比较高,并容许一定比例的差错存在。

5.2.2、差错编码的基本原理

5.2.3、差错编码的检错与纠错能力

5.2.4、典型的差错编码

5.2.4.1、奇偶校验码

奇偶校验码是一种最简单的检错码,包括奇校验码和偶校验码。奇偶校验码利用1位冗余信息实现差错检测,可以表示为(n, n-1)。

在奇校验码编码过程中,1位冗余位的取值为"0"或"1",使得编码后的码字中"1"的个数为奇数,即满足下式

an1an2a1a0=1a_{n-1} \oplus a_{n-2} \oplus ··· \oplus a_1 \oplus a_0 = 1

式中, ana_n为冗余位;a1an1a_1···a_{n-1}为数据位。比如,对于数据10110111,采用奇校验码编码后的码字为101101111。

在偶校验码编码过程中,1 位冗余位的取值为"0"或"1",使得编码后的码字中"1"的个数为偶数,即满足下式

an1an2a1a0=0a_{n-1} \oplus a_{n-2} \oplus ··· \oplus a_1 \oplus a_0 = 0

式中, ana_n为冗余位;a1an1a_1···a_{n-1}为数据位。比如,对于数据10110111,采用奇校验码编码后的码字为101101110。

对于采用奇偶校验的码字,如果在传输过程中有奇数位(包括数据位和冗余位)发生错误,那么奇偶校验码可以检测出错误的发生,但是如果有偶数位发生错误,则无法被检测出来。因此,奇偶检验码可以实现 50%的检错率,当然漏检率也高达50%。

依据上面两个式子构建的奇偶校验位码是一种检错码,无法进行错误校正。奇偶校验码仅仅需要简单的异或操作即可完成编码/解码,因此奇偶校验码的优点是编码简单、编码效率高,是开销最小的检错编码,但缺点是检错率不高。

由于奇偶校验码简单,常应用于低速串行通信链路中。通常编码格式是7 位数据位、1位校验位、1~2位停止位,或者8 位数据加上1个校验位,可以传输任意的8位数据或者ASCII 字符。

5.2.4.2、汉明码

1950年,理查德·卫斯里·汉明在美国贝尔实验室的工作中,为了解决读卡机错误检测与纠正问题,设计了著名的汉明码。

汉明码(Hamming Code)是典型的线性分组码,可以实现单个比特差错纠正,在数据通信以及数据存储系统中得到广泛应用。当信息位足够长时,它的编码效率很高。

若一个信息位为k=n-1位的比特流an1an2a1a_{n-1}a_{n-2}···a_1,加上偶校验位a0a_0,构成一个n位的码字an1an2a1a0a_{n-1}a_{n-2}···a_1a_0。在接收方校验时,可按如下关系式来计算

S=an1an2a1a0S=a_{n-1} \oplus a_{n-2} \oplus ··· \oplus a_1 \oplus a_0

若S=0,则无错;若S=1, 则有错。上式可称为监督关系式,S称为校正因子。在奇偶校验情况下,只有一个监督关系式,一个校正因子,其取值只有两种(0或1),分别代表了无错和有错两种情况,而不能指出差错所在的位置。

不难推测,若增加冗余位,也相应地增加了监督关系式和校正因子,就能区分更多的情况。例如,若有两个校正因子,则其取值就有4 种可能:00、01、10或11,就能区分4种不同的情况。若其中一种表示无错,另外3种不但可以用来指出有错,还可用来区分错误的情况,如指出是哪一位出错,就可能使得这种编码实现纠错。

一般来说,信息位为k位,增加r位冗余位,构成n=k+r 位码字。若希望用r个监督关系式产生的r个校正因子来区分无错和在码字中n个不同位置的一位错,则要求

2rn+12rk+r+12^r \ge n+1 或2^r \ge k+r+1

以k=4为例来说明,要满足上述不等式,则r3r\ge3。现取r=3,则n=k+r=7。也就是说,在4 位信息位a6a5a4a3a_6a_5a_4a_3后面,加上3位冗余位a2a1a0a_2a_1a_0,构成7位码字a6a5a4a3a2a1a0a_6a_5a_4a_3a_2a_1a_0。其中a2a_2a1a_1a0a_0分别由4位信息位中某几位异或运算得到,那么在校验时,a2a_2a1a_1a0a_0就分别与这些位进行异或运算,构成3个不同的监督关系式。

在无错时,这3个关系式的值S2S_2S1S_1S0S0全为"0";若a2a_2错,则S2=1S_2=1,而S1=S0=0S_1=S_0=0;若a1a_1错,则S1=1S_1=1,而S2=S0=0S_2=S_0=0;若a0a_0错,则S0=1S_0=1,而S2=S1=0S_2=S_1=0S2S1S0S_2S_1S_0这3个校正因子和其他4种编码的值可用来区分a3a4a5a6a_3、a_4、a_5或a_6哪一位出错。该对应关系可按下表所来执行(也可以规定成另外的对应关系)。

S2S1S0 000 001 010 011 100 101 110 111
错码位置 无措 a0 a1 a2 a3 a4 a5 a6

由上表可见,a2a3a4a5a6a_2、a_3、a_4、a_5或a_6的一位出错都应使S2=1S_2=1,由此可以得到如下监督关系式

S2=a2a4a5a6S_2=a_2 \oplus a_4 \oplus a_5 \oplus a_6

同理还有

S1=a1a3a5a6S_1=a_1 \oplus a_3 \oplus a_5 \oplus a_6

S0=a0a3a4a6S_0=a_0 \oplus a_3 \oplus a_4 \oplus a_6

发送端在编码时,信息位a2a3a4a5a6a_2、a_3、a_4、a_5或a_6的值取决于输入信号,是随机的。冗余位a2a_2a1a_1a0a_0的值应根据信息位的取值按监督关系式来决定,使上述3个式子中的S2S_2S1S_1S0S0的取值为0,即

a2a4a5a6=0a_2 \oplus a_4 \oplus a_5 \oplus a_6 = 0

a1a3a5a6=0a_1 \oplus a_3 \oplus a_5 \oplus a_6 = 0

a0a3a4a6=0a_0 \oplus a_3 \oplus a_4 \oplus a_6 = 0

由此可求得

a2=a4a5a6a_2 = a_4 \oplus a_5 \oplus a_6

a1=a3a5a6a_1 = a_3 \oplus a_5 \oplus a_6

a0=a3a4a6a_0 = a_3 \oplus a_4 \oplus a_6

已知信息位后,按上式即可算出各冗余位。对于各种信息位算出的汉明码冗余位如下所示。

信息位 冗余位
a6a5a4a3 a2a1a0
0000 000

接收方在收到每个码字后,按监督关系式算出S2S_2S1S_1S0S0,若全为"0"则认为无错。若不全为"0",在一位错的情况下,可查上表来判定是哪一位出错,从而纠正之。例如,码字0010101,在传输中一位出错,接收方收到的为 0011101,代入监督关系式可算得S2=0S_2=0S1=S_1=S0=1S_0=1,由上表可查得S2S1S0=011S_2S_1S_0=011对应于a3a_3出错,因而可将0011101纠正为0010101。

上述汉明码的编码效率为4/7。若k=7,按2rk+r+12^r \ge k+r+1可算得r至少为4,此时编码效率为7/11。信息位长度越长编码效率越高。汉明码只能纠正一位错,若用在纠正传输中出现突发性差错时可采用下述方法:将连续 P个码字排成一个矩阵,每行一个码字。如果发生突发长度小于等于P的突发错误,那么在P个码字中最多每个码字有一位有差错,正好由汉明码纠正。

5.2.4.3、循环冗余码

现今的计算机网络,尤其是在数据链路层协议中,广泛使用的差错编码是循环冗余检测(Cyclic Redundancy Check, CRC)编码,简称循环冗余码,或称CRC码。CRC编码是一类重要的线性分组码,也称为多项式编码(Polynomial Code),因为该编码可以将要发送的位串看作为一个系数为0或1的多项式,对位串的操作被解释为多项式算术运算。

CRC编码的基本思想是:将二进制位串看成是系数为0或1的多项式的系数。一个k位二进制数据可以看作是一个k-1 次多项式的系数列表,该多项式共有k项,从xk1x^{k-1}x0x^0。这样的多项式被认为是k-1 阶多项式。高次(最左边)位是xk1x^{k-1}项的系数,接下来的位是xk2x^{k-2}项的系数,以此类推。例如,100101有6位,因此代表了一个有6项的多项式,其系数分别是1、0、0、1、0和1,即1x5+0x4+0x3+1x2+0x1+1x0=x5+x2+11x^5+0x^4+0x^3+1x^2+0x^1+1x^0=x^5+x^2+1

使用CRC编码时,发送方和接收方必须预先商定一个生成多项式G(x)。生成多项式的最高位和最低位系数必须是1。假设一帧数据有 m 位,对应的多项式为M(x),为了计算它的CRC编码,该帧必须比生成多项式长。基本思想是在帧的尾部附加一个校验和,使得附加校验和之后的帧所对应的多项式能够被G(x)除尽。当接收方收到了带校验和的帧之后,用G(x) 去除它,如果余数不为0,则表明传输过程中有错误,否则无错。

假设G(x)的阶为r(即对应的位串为r+1位),则CRC编码过程如下。

  • 在帧的低位端加上r个0位,使该帧扩展为m+r位(相当于左移r位),对应的多项式为xrM(x)x^rM(x)

  • 用G(x)系数对应的位串,去除(模2除法)xrM(x)x^rM(x)系数对应的位串,求得r位余数R。

  • xrM(x)x^rM(x)系数对应的位串,减(模2减法)去余数R,结果就是完成CRC编码的帧。

假设CRC编码采用的生成多项式为G(x)=x3+x2+1G(x)=x^3+x^2+1,求位串101001的CRC编码。

G(x)=x3+x2+1G(x)=x^3+x^2+1对应的比特串位1101,在待编码位串101001后添加000,得到101001000。按如下计算过程求余数R。

img

最后,得到的CRC编码结果为101001001

CRC编码的检错算法很简单,接收端利用发送端编码时使用的G(x),当收到经过编码的数据时,利用 G(x)系数对应的位串,去除(模2除法)收到的数据,如果余数为0,则数据传输过程中未发生错误,否则判断有错。

CRC编码的检错性能与选择的 G(x)有很大关系。经过优选的典型G(x)如下表所示。

CRC编码具有优良的性能,很适合用于差错检测。一方面,CRC编码具有很强的检错能力。例如,采用CRC-16 或CRC-ccTT 的CRC编码,可以检测全部单位错、双位错、奇数位错,全部 16位及16 位以下的突发错,99.97%的17位突发错以及99,998%的18位错或更长的突发错。另一方面,CRC的编码、解码实现简单,只需通过简单的移位与异或运算即可实现。另外,CRC编码效率高,CRC编码附加的冗余校验和®的长度,只取决于f(x),与数据位数无关,当数据远大于R的位数时, CRC编码的开销就很小。因此,CRC 在计算机网络的数据链路层协议中得到了广泛应用,例如以太网、IEEE802.11无线局域网和PP协议等。

5.3、多路访问控制协议

数据链路层使用的信道主要有两种类型:点对点信道和广播信道。点对点信道使用一对一的通信方式,信道被通信双方独享。广播信道使用一对多的广播通信方式,广播信道上连接的结点很多,信道被所有节点共享,必须使用多路访问控制(Multiple Access Control,MAC)协议来协调结点的数据发送。

随着网络技术的发展,有很多MAC协议被提出。概括起来,主要可以分为3种类型的MAC协议:信道划分MAC协议、随机访问MAC协议及受控接入MAC协议。

5.3.1、信道划分MAC协议

5.3.1.1、频分多路复用(FDM)

频分多路复用(FDM)简称频分复用,采用频域划分制,即在频域内将信道带宽划分为多个子信道,并利用载波调制技术,将原始信号调制到对应某个子信道的载波信号上,使得同时传输的多路信号在整个物理信道带宽允许的范围内频谱不重叠,从而共用一个信道。

5.3.1.2、时分多路复用(TDM)

时分多路复用(TDM)简称时分复用,采用时域划分制,即将通信信道的传输信号在时域内划分为多个等长的时隙,每路信号占用不同的时隙,在时域上互不重叠,使多路信号合用单一的通信信道,从而实现信道共享。

时分多路复用可分为同步时分多路复用(STDM)和异步时分多路复用(ATDM)。同步时分多路复用是按固定的顺序把时隙分配给各路信号。异步时分多路复用,也叫做统计时分多路复用,它可以为有大量数据要发送的用户分配较多的时隙,数据量小的用户分配相对较少的时隙,没有数据的用户不分配时隙。

5.3.1.3、波分多路复用(WDM)

波分多路复用(WDM)简称波分复用,其实质是波的频分多路复用,即在一根光纤中,传输多路不同波长的光信号。多个波长不同的光信号,在同一个信道中互不干扰、同时传输,从而实现信道共享。

5.3.1.4、码分多路复用(CDM)

码分多路复用(CDM)简称码分复用,通过利用更长的相互正交的码组分别编码各路原始信息的每个码元(比如1位),使得编码后的信号在同一信道中混合传输,接收端利用码组的正交特性分离各路信号,从而实现信道共享。

5.3.2、随机访问MAC协议

随机访问MAC协议是指所有用户都可以根据自己的意愿随机地向信道发送信息。如果一个用户在发送信息期间没有其他用户发送信息,则该用户发送成功,如果两个或两个以上的用户都向信道发送信息,则产生冲突或碰撞(collision),导致用户发送失败,此时每个用户随机退让一段时间后,再次尝试,直至成功。

随机访问实际上就是竞争接入。竞争胜利者可以暂时占用共享信道发送信息,竞争失败者随机等待一段时间,再次竞争,直至竞争成功。随机访问协议的特点是,站点可随时发送数据,争用信道,容易发生冲突,需要消解冲突的机制,但能灵活适应站点数目及其通信量的变化。

典型的随机访问协议有ALOHA协议、载波监听多路访问(CSMA)协议以及带冲突检测的载波监听多路访问(CSMA/CD)协议等。

5.3.2.1、ALOHA协议

ALOHA协议是最早、最基本的无线数据通信协议。ALOHA系统的设计初衷是实现分散在夏威夷群岛的通信站点(计算机)与中心计算机之间的一点对多点的数据通信。

ALOHA系统的通信站点随机接入共享信道(天空),利用相同载波频率,通过分组无线电系统广播数据帧。任意两个或两个以上的站点,以相同的频率同时广播帧,都将使信号遭到破坏,导致数据传输失败。ALOHA协议就是在该系统中,用于解决无线共享信道的共享接入,是一种典型的随机多路访问控制协议。

ALOHA协议分为纯ALOHA和时隙ALOHA两种。

  • 纯ALOHA协议的工作原理非常简单,任何一个站点有数据要发送时可直接发送至信道。发送站在发出数据后需要对信道侦听一段时间。通常这个时间是电波传到最远端的站点再返回本站点所需的时间。如果在这段侦听时间里收到接收站发送的应答信号,说明发送成功。否则说明数据帧遭到破坏(发生冲突),则等待一个随机时间后再进行重发,如果再次冲突,继续等待一个随机时间,直到重发成功为止。
  • 时隙ALOHA的基本思想是,把信道时间分成离散的时隙(Slot),每个时隙是发送一帧所需的发送时间,每个通信站只能在每个时隙开始时刻发送帧,如果在一个时隙内发送帧出现冲突,下一个时隙以概率P重发该帧,以概率1-P不发该帧(等待下一个时隙),直到发送成功。显然,P不能为1,否则协议会死锁。时隙ALOHA协议需要所有通信站在时间上同步。

5.3.2.2、CSMA协议

CSMA的特点是通过硬件装置,即载波监听装置,使通信站在发送数据之前,监听信道上其他站点是否在发送数据,如果在发送,则暂时不发送,从而减少了发生冲突的可能,提高了系统的吞吐量。有时候又称CSMA的工作方式为“先听后说”。

根据监听策略的不同,CSMA可细分为3种不同类型。

  • 非坚持CSMA。其基本原理是:若通信站有数据发送,先侦听信道;若发现信道空闲,则立即发送数据;若发现信道忙,则等待一个随机时间,然后重新开始侦听信道,尝试发送数据;若发送数据时产生冲突,则等待一个随机时间,然后重新开始发送过程。该协议的优点是减少了冲突的概率,缺点是增加了信道的空闲时间,增大了数据的发送延迟。
  • 1-坚持CSMA。其基本原理是:若通信站有数据发送,先侦听信道;若发现信道空闲,则立即发送数据;若发现信道忙,则继续侦听信道直至发现信道空闲,然后立即发送数据。若发送数据时产生冲突,则等待一个随机时间,然后重新开始发送过程。该协议的优点是减少了信道的空闲时间,缺点是增加了发送冲突的概率(传播延迟越大,发生冲突的概率就越大,协议性能就越差)。
  • P-坚持CSMA。其基本原理是:若通信站有数据发送,先侦听信道;若发现信道空闲,则以概率P在最近时隙开始时刻发送数据,以概率1-P延迟至下一个时隙重新开始发送过程;若信道忙,则等待下一个时隙,重新开始发送过程;若发送数据时产生冲突,则等待一个随机时间,然后重新开始发送过程。该协议适用于时隙信道(即同步划分时隙)。

5.3.2.3、CSMA/CD协议

CSMA/CD协议可理解为“先听后说,边说边听”。其基本原理是,通信站使用CSMA协议进行数据发送;在发送期间如果检测到碰撞,立即终止发送,并发出一个冲突强化信号,使所有通信站都知道冲突的发生;然后等待一个随机时间,再重新开始发送过程。

CSMA/CD的工作状态可分为传输周期、竞争周期和空闲周期,即信道有3种状态:

  • 传输状态:一个通信站使用信道,其他站禁止使用。
  • 竞争状态:所有通信站都有权尝试对信道的使用权。
  • 空闲状态:没有通信站使用信道。

CSMA/CD仍然会存在冲突,主要原因是信号传播时延。一个通信站发出的信号,需要经过一定的延迟才能到达其他站,而在信号到达其他站之前,如果某通信站此时也有数据要发送,那么侦听信道的结果仍会是“空闲”,于是发送数据,冲突便发生了。

CSMA/CD的性能优于普通的CSMA协议,以太网的MAC协议就是CSMA/CD。

5.3.3、受控接入MAC协议

受控接入的特点是各用户不能随意接入信道而必须服从一定的控制,其可分为集中式控制和分散式控制。

5.3.3.1、集中式控制

在采用集中式控制接入方式的系统中,有一个主机负责调度其他通信站接入信道,从而避免冲突。主要方法是轮询技术,可分为论叫轮询和传递轮询。

5.3.3.2、分散式控制

典型的分散式控制方法是令牌技术。令牌(Token)是一种特殊的帧,代表通信站对使用信道的许可权,在信道空闲时一直在信道上传输,一个通信站如果想发送数据就必须先获得令牌,然后在一定时间内发送数据,在发送完数据后重新产生令牌并发送到信道上,以便其他通信站使用信道。

5.4、局域网

5.4.1、数据链路层寻址与ARP

5.4.2、以太网

5.4.3、交换机

5.4.4、虚拟局域网

5.5、点对点链路

5.5.1、PPP协议

PPP协议,即点对点协议(Point to Point Protocol,PPP),是现在全世界使用得最多的点对点链路。

PPP处理错误检测、支持多种上层协议(即支持复用)、允许在连接时刻协商IP地址、允许身份认证等。

PPP主要提供3类功能:

  • 成帧。
  • 链路控制协议(Link Control Protocol,LCP)。
  • 网络控制协议(Network Control Protocol,NCP)。

5.5.2、HDLC协议

HDLC协议,即高级数据链路控制(High-level Data Link Control,HDLC)协议,可应用于点对点链路和点对多点链路。

HDLC有3种类型的帧:信息帧(I格式)、管理帧(S格式)和无序号帧(U格式)。

HDLC协议是面向位的协议,为确保数据的透明传输,HDLC使用位填充。首先,发送端扫描整个数据字段,只要发现5个连续的1,就立即插入一个0,经过此过程处理后,数据字段不会出现连续的6个1。接收端接收到一个帧后,先找到标志字段01111110确定帧的边界,接着利用硬件扫描整个比特流,当发现5个连续的1,就删除其后的0,以还原成原来的信息。

六、物理层

6.1、数据通信基础

6.1.1、数据通信基本概念

6.1.1.1、消息与信息

消息,人类能感知的描述。

信息,消息中所包含的有意义的内容。

6.1.1.2、通信

6.1.1.3、信号

6.1.1.4、数据

6.1.1.5、信道

6.1.2、数据通信系统模型

6.1.2.1、数据通信系统的构成

6.1.2.2、模拟通信和数字通信

6.1.2.3、数据通信方式

6.1.2.4、数据通信系统的功能

6.2、物理介质

6.2.1、导引型传输介质

6.2.2、非导引型传输介质

6.3、信道与信道容量

信道是信号在通信系统中传输的通道,由信号从发送端(信源)传播到接收端(信宿)所经过的传输介质构成。

6.3.1、信道分类与模型

信道有狭义信道和广义信道之分。狭义信道即为信号传输介质;广义信道不仅包括信号传输介质,还包括传输信号的相关设备。按照功能划分,可将广义信道划分为调制信道和编码信道两类。

6.3.1.1、调制信道

调制信道是指信号从调制器的输出端传输到解调器的输入端所经过的部分。

调制信道、输入信号、输出信号有以下特点:

  • 信道总具有输入信号端和输出信号端。
  • 信道一般是线性的,即输入信号和对应的输出信号之间满足线性叠加原理。
  • 信道是因果的,即输入信号经过信道后,相应的输出信号响应具有延时。
  • 信道使通过的信号发生畸变,即输入信号经过信道后,相应的输出信号会发生衰减。
  • 信道中存在噪声,即使输入信号为零,输出信号仍然会具有一定功率。

6.3.1.2、编码信道

编码信道是指数字信号由编码器输出端传输到译码器输入端所经过的部分。

6.3.2、信道传输特性

6.3.3、信道容量

6.4、基带传输

6.5、频带传输

6.6、物理层接口规程

七、无线与移动网络

7.1、无线网络

7.2、移动网络

7.3、无线局域网IEEE802.11

7.4、蜂窝网络

7.4.1、蜂窝网络体系结构

7.4.2、蜂窝网络种的移动性管理

7.4.3、移动2G/3G/4G/5G网络

7.4.3.1、2G网络

GSM系统的业务(即为用户提供的服务),可分为承载业务、电信业务和附加业务三大类。

7.4.3.2、3G网络

7.4.3.3、4G/LTE网络

7.4.3.4、5G网络

7.5、移动IP网络

7.6、其他典型无线网络简介

7.6.1、蓝牙(IEEE 802.15.1)

7.6.2、ZigBee(IEEE 802.15.4)

7.6.3、WiMax(IEEE 802.16)

八、网络安全基础

8.1、网络安全基础

8.2、数据加密

8.3、消息完整性与数字签名

8.4、身份认证

8.5、密钥分发中心与证书认证

8.6、防火墙与入侵检测系统

8.7、网络安全协议

8.7.1、安全电子邮件

电子邮件对网络安全的需求主要有以下几个方面:

  • 机密性
  • 完整性
  • 身份认证性
  • 抗抵赖性

8.7.2、安全套套接字层SSL

8.7.2.1、SSL简介

SSL可以提供机密性、完整性、身份认证等安全服务。

在SSL密钥派生过程中,会派生出4个密钥:

  • KcK_c:用于加密客户向服务器发送数据的密钥(对称密钥)
  • McM_c:用于客户向服务器发送数据的MAC密钥
  • KsK_s:用于加密服务器向客户发送数据的密钥(对称密钥)
  • MsM_s:用于服务器向客户发送数据的MAC密钥

8.7.2.2、SSL协议栈

8.7.2.3、SSL的握手过程

8.7.3、虚拟专用网VPN和IP安全协议IPSec

九、参考

计算机网络教程(第6版·微课版)

计算机网络原理创新教程

计算机网络原理 自考04741


计算机网络重点内容(自考04741)
https://kuberxy.github.io/2024/12/15/计算机网络重点(自考04741)/
作者
Mr.x
发布于
2024年12月15日
许可协议