0%

总结-计算机网络

计算机网络

计算机网络体系结构

计算机网络总考纲找不到图片(Image not found)

【考纲内容】

(一)计算机网络概述

计算机网络的概念、组成与功能;

计算机网络的分类

计算机网络的性能指标

(二)计算机网络体系结构与参考模型

计算机网络分层结构;计算机网络协议、接口、服务的概念

ISO/OSI参考模型和 TCP/IP模型

【复习提示】

本章主要介绍计算机网络体系结构的基本概念,读者可以在理解的基础上适当地记忆。重点掌握网络的分层结构(包括5层和7层结构),尤其是ISO/OSI参考模型各层的功能及相关协议、接口和服务等概念。掌握有关网络的各种性能指标,特别是时延、带宽、速率和吞吐量等的计算。

OSI参考模型的功能

物理寻址流量控制差错校验拥塞控制其他
物理层处理信号通过介质的传输
数据链路层$\color{green}{\checkmark}$$\color{green}{\checkmark}$$\color{green}{\checkmark}$$\color{red}{\times}$(王道)保证数据正确的顺序和完整性;链路连接的建立、拆除、分离;帧界定和帧同步;差错检测;物理寻址;数据重发
网络层$\color{green}{\checkmark}$控制报文通过网络的路由选择;提供面向连接和无连接的服务
传输层$\color{green}{\checkmark}$$\color{green}{\checkmark}$仅提供面向连接的服务
会话层
表示层
应用层提供用户和网络的接

(raw page:课本的页码,pp:pdf page, pdf书籍阅读器的index)

(王相林.rp.159)$\color{red}{\text{流量控制}}$是对一条通信路径上的流量进行控制,其目的是保证发送者的发送速度不超过接收者的接收速度。流量控制只设计一个发送者和一个接收者,涉及两个节点,可以是相邻节点之间,也可以是端节点之间,分别对应$\color{green}{\text{数据链路层}}$的相邻节点之间的流量控制,以及$\color{green}{\text{运输层}}$的端节点之间的流量控制。流量控制只涉及两个网络节点,属于是局部控制。
(王相林.rp.159)$\color{red}{\text{拥塞控制}}$是对整个通信子网的流量进行控制,其目的是保证通信子网的流量与网络可提供资源相匹配,不出现网络系统性能恶化、甚至崩溃的局面。拥塞控制涉及网络中多个节点(主机、路由器、交换机),属于是全局控制。拥塞控制的最终目标是,防止由于网络中PDU过载而使网络的吞吐量下降,合理分配网络资源;避免死锁;匹配速度传输速度。拥塞控制涉及的网络层次有:$\color{green}{\text{数据链路层}}$、$\color{green}{\text{网络层}}$和$\color{green}{\text{运输层}}$,而这些层次上对拥塞控制产生影响的策略,见表5-3。
流量控制涉及的层次有数据链路层和运输层。流量控制一般是由接收方根据自己缓冲区的大小和接收数据的情况,给发送方反馈流量控制信息,也就是说,是由接收方控制发送方发送数据的速率。流量控制与拥寒控制是相关的,若局部的流量控制做得很好,可以对全局的拥塞控制起到缓解的作用。

图片详情找不到图片(Image not found)

五层协议栈(Five-layer Internet protocol stack)

名称(name)协议(protocols)分组名称(packet name)
应用层(Application Layer)HTTP(WEB文档的请求和传送)
SMTP(电子邮件)
FTP(端系统间文件传送)
报文(message)
传输层(Transport Layer)TCP
UDP
报文段(segment);报文段(TCP);用户数据报(UDP)
网络层(Network Layer)IP层数据报(datagram)
链路层(Link Layer)以太网
WiFi
电缆接入网的DOCSIS协议
帧(frame)
物理层(physical Layer)比特(bit)

物理设备

设备名工作层描述
集线器(HUB)物理层多端口中继器
交换机(Switch)数据链路层多端口网桥
路由器(Router)网络层实现了网络模型的下三层,即物理层、数据链路层和网络层

计算机网络概述

计算机网络的概念

一般认为,计算机网络是一个将分散的、具有独立功能的计算机系统,通过通信设备与线路连接起来,由功能完善的软件实现资源共享和信息传递的系统。简而言之,计算机网络就是一些$\color{green}{\text{互联的}}$、$\color{green}{\text{自治}}$的$\color{green}{\text{计算机系统}}$的$\color{green}{\text{集合}}$。

在计算机网络发展的不同阶段,人们对计算机网络给出了不同的定义,这些定义反映了当时网络技术发展的水平。这些定义可分为以下三类。

广义观点

这种观点认为,只要是能实现远程信息处理的系统或能进一步达到资源共享的系统,都是计算机网络。广义的观点定义了一个计算机通信网络,它在物理结构上具有计算机网络的雏形,但资源共享能力弱,是计算机网络发展的低级阶段。

资源共享观点

这种观点认为,计算机网络是“以能够相互共享资源的方式互联起来的自治计算机系统的集合”。该定义包含三层含义:①目的——资源共享;②组成单元——分布在不同地理位置的多台独立的“自治计算机”;③网络中的计算机必须遵循的统一规则——网络协议。该定义符合目前计算机网络的基本特征。

用户透明性观点

这种观点认为,存在一个能为用户自动管理资源的网络操作系统,它能够调用用户所需要的资源,而整个网络就像一个大的计算机系统一样对用户是透明的。用户使用网络就像使用一台单一的超级计算机,无须了解网络的存在、资源的位置信息。用户透明性观点的定义描述了一个分布式系统,它是网络未来发展追求的目标。

计算机网络的组成

从不同的角度,可以将计算机网络的组成分为如下几类。

1)从组成部分上看,一个完整的计算机网络主要由$\color{green}{\text{硬件}}$、$\color{green}{\text{软件}}$、$\color{green}{\text{协议}}$三大部分组成,缺一不可。硬件主要由主机(也称端系统)、通信链路(如双绞线、光纤)、交换设备(如路由器、交换机等)和通信处理机(如网卡)等组成。软件主要包括各种实现资源共享的软件和方便用户使用的各种工具软件(如网络操作系统、邮件收发程序、FTP程序、聊天程序等)。软件部分多属于应用层。协议是计算机网络的核心,如同交通规则制约汽车驾驶一样,协议规定了网络传输数据时所遵循的规范。

2)从工作方式上看,计算机网络(这里主要指Internet,即因特网)可分为$\color{green}{\text{边缘部分}}$和$\color{green}{\text{核心部分}}$。边缘部分由所有连接到因特网上、供用户直接使用的主机组成,用来进行通信(如传输数据、音频或视频)和资源共享;核心部分由大量的网络和连接这些网络的路由器组成,它为边缘部分提供连通性和交换服务。图1.1给出了这两部分的示意图。

3)从功能组成上看,计算机网络由$\color{green}{\text{通信子网}}$和$\color{green}{\text{资源子网}}$组成。通信子网由各种传输介质、通信设备和相应的网络协议组成,它使网络具有数据传输、交换、控制和存储的能力,实现联网计算机之间的数据通信。资源子网是实现资源共享功能的设备及其软件的集合,向网络用户提供共享其他计算机上的硬件资源、软件资源和数据资源的服务。

图片详情找不到图片(Image not found)

计算机网络的功能

计算机网络的功能很多,现今的很多应用都与网络有关。主要有以下五大功能。

数据通信

它是计算机网络最基本和最重要的功能,用来实现联网计算机之间各种信息的传输,并将分散在不同地理位置的计算机联系起来,进行统一的调配、控制和管理。例如,文件传输、电子邮件等应用,离开了计算机网络将无法实现。

资源共享

资源共享可以是软件共享、数据共享,也可以是硬件共享。它使计算机网络中的资源互通有无、分工协作,从而极大地提高硬件资源、软件资源和数据资源的利用率。

分布式处理

当计算机网络中的某个计算机系统负荷过重时,可以将其处理的某个复杂任务分配给网络中的其他计算机系统,从而利用空闲计算机资源以提高整个系统的利用率。

提高可靠性

计算机网络中的各台计算机可以通过网络互为替代机。

负载均衡

将工作任务均衡地分配给计算机网络中的各台计算机。

除以上几大主要功能外,计算机网络还可以实现电子化办公与服务、远程教育、娱乐等功能,满足了社会的需求,方便了人们学习、工作和生活,具有巨大的经济效益。

计算机网络的分类

按分布范围分类

1)广域网(WAN)。广域网的任务是提供长距离通信,运送主机所发送的数据,其覆盖范围通常是直径为几十千米到几千千米的区域,因而有时也称远程网。广域网是因特网的核心部分。连接广域网的各结点交换机的链路一般都是高速链路,具有较大的通信容量。

2)城域网(MAN)。城域网的覆盖范围可以跨越几个街区甚至整个城市,覆盖区域的直径范围是5~50km。城域网大多采用以太网技术,因此有时也常并入局域网的范围讨论。

3)局域网(LAN)。局域网一般用微机或工.作站通过高速线路相连,覆盖范围较小,通常是直径为几十米到几千米的区域。局域网在计算机配置的数量上没有太多的限制,少的可以只有两台,多的可达几百台。传统上,局域网使用广播技术,而广域网使用交换技术。

4)个人区域网(PAN)。个人区域网是指在个人工作的地方将消费电子设备(如平板电脑、智能手机等)用无线技术连接起来的网络,也常称为无线个人区域网(WPAN),覆盖区域的直径约为10m。

注意:若中央处理器之间的距离非常近(如仅1m的数量级或甚至更小),则一般称为多处理器系统,而不称为计算机网络。

按传输技术分类

1)广播式网络。所有联网计算机都共享一个公共通信信道。当一台计算机利用共享通信信道发送报文分组时,所有其他的计算机都会“收听”到这个分组。接收到该分组的计算机将通过检查目的地址来决定是否接收该分组。局域网基本上都采用广播式通信技术,广域网中的无线、卫星通信网络也采用广播式通信技术。

2)点对点网络。每条物理线路连接一对计算机。若通信的两台主机之间没有直接连接的线路,则它们之间的分组传输就要通过中间结点进行接收、存储和转发,直至目的结点。是否采用分组存储转发与路由选择机制是点对点式网络与广播式网络的重要区别,广域网基本都属于点对点网络。

按拓扑结构分类

网络拓扑结构是指由网中结点(路由器、主机等)与通信线路(网线)之间的几何关系(如总线形、环形)表示的网络结构,主要指通信子网的拓扑结构。

网络拓扑结构是指由网中结点(路由器、主机等)与通信线路(网线)之间的几何关系(如总线形、环形)表示的网络结构,主要指通信子网的拓扑结构。

图片详情找不到图片(Image not found)

1)总线形网络。用单根传输线把计算机连接起来。总线形网络的优点是建网容易、增/减结点方便、节省线路。缺点是重负载时通信效率不高、总线任意一处对故障敏感。

2)星形网络。每个终端或计算机都以单独的线路与中央设备相连。中央设备早期是计算机,现在一般是交换机或路由器。星形网络便于集中控制和管理,因为端用户之间的通信必须经过中央设备。缺点是成本高、中心设备对故障敏感。

3)环形网络。所有计算机接口设备连接成一个环。环形网络最典型的例子是$\color{green}{\text{令牌环局域网}}$。环可以是单环,也可以是双环,环中信号是单向传输的。

4)网状网络。一般情况下,每个结点至少有两条路径与其他结点相连,多用在广域网中。其有规则型和非规则型两种。其优点是可靠性高,缺点是控制复杂、线路成本高。以上4种基本的网络拓扑结构可以互联为更复杂的网络。

以上4种基本的网络拓扑结构可以互联为更复杂的网络。

按使用者分类

1)公用网(Public Network)。指电信公司出资建造的大型网络。“公用”的意思是指所有愿意按电信公司的规定交纳费用的人都可以使用这种网络,因此也称公众网。

2)专用网(Private Network)。指某个部门为满足本单位特殊业务的需要而建造的网络。这种网络不向本单位以外的人提供服务。例如铁路、电力、军队等部门的专用网。

按交换技术分类

交换技术是指各台主机之间、各通信设备之间或主机与通信设备之间为交换信息所采用的数据格式和交换装置的方式。按交换技术可将网络分为如下几种。

1)电路交换网络。在源结点和目的结点之间建立一条专用的通路用于传送数据,包括建立连接、传输数据和断开连接三个阶段。最典型的电路交换网是传统电话网络。该类网络的主要特点是整个报文的比特流连续地从源点直达终点,好像是在一条管道中传送。优点是数据直接传送、时延小。缺点是线路利用率低、不能充分利用线路容量、不便于进行差错控制。

2)报文交换网络。用户数据加上源地址、目的地址、校验码等辅助信息,然后封装成报文。整个报文传送到相邻结点,全部存储后,再转发给下一个结点,重复这一过程直到到达目的结点。每个报文可以单独选择到达目的结点的路径。报文交换网络也称存储-转发网络,主要特点是整个报文先传送到相邻结点,全部存储后查找转发表,转发到下一个结点。优点是可以较为充分地利用线路容量,可以实现不同链路之间不同数据传输速率的转换,可以实现格式转换,可以实现一对多、多对一的访问,可以实现差错控制。缺点是增大了资源开销(如辅助信息导致处理时间和存储资源的开销),增加了缓冲时延,需要额外的控制机制来保证多个报文的顺序不乱序,缓冲区难以管理(因为报文的大小不确定,接收方在接收到报文之前不能预知报文的大小)。

3)分组交换网络,也称包交换网络。其原理是,将数据分成较短的固定长度的数据块,在每个数据块中加上目的地址、源地址等辅助信息组成分组(包),以存储-转发方式传输。其主要特点是单个分组(它只是整个报文的一部分)传送到相邻结点,存储后查找转发表,转发到下一个结点。除具备报文交换网络的优点外,分组交换网络还具有自身的优点:缓冲易于管理;包的平均时延更小,网络占用的平均缓冲区更少;更易于标准化;更适合应用。现在的主流网络基本上都可视为分组交换网络。

报文交换和分组交换的区别:整个报文在网络中传递,分组交换报文被分割了

按传输介质分类

传输介质可分为有线和无线两大类,因此网络可以分为有线网络和无线网络。有线网络又分为双绞线网络、同轴电缆网络等。无线网络又可分为蓝牙、微波、无线电等类型。

*计算机网络的标准化工作及相关组织

计算机网络的标准化对计算机网络的发展和推广起到了极为重要的作用。

因特网的所有标准都以RFC (Request For Comments)的形式在因特网上发布,但并非每个RFC都是因特网标准,RFC要上升为因特网的正式标准需经过以下4个阶段。

1))因特网草案( Internet Draft)。这个阶段还不是RFC文档。

2)建议标准(Proposed Standard)。从这个阶段开始就成为RFC文档。3)草案标准(Draft Standard)。

4)因特网标准(Internet Standard)。

此外,还有试验的RFC和提供信息的RFC。各种RFC之间的关系如图1.3所示。

图片详情找不到图片(Image not found)

在国际上,负责制定、实施相关网络标准的标准化组织众多,主要有如下几个:

  • 国际标准化组织(ISO)。其制定的主要网络标准或规范有OSI参考模型、HDLC等。
  • 国际电信联盟(ITU)。其前身为国际电话电报咨询委员会(CCITT),其下属机构ITU-T制定了大量有关远程通信的标准。
  • 国际电气电子工程师协会(IEEE)。世界上最大的专业技术团体,由计算机和工程学专业人士组成。IEEE在通信领域最著名的研究成果是802标准。

计算机网络的性能指标

性能指标从不同方面度量计算机网络的性能。常用的性能指标如下。

1)带宽(Bandwidth)。本来表示通信线路允许通过的信号频带范围,单位是赫兹(Hz)。而在计算机网络中,带宽表示网络的通信线路所能传送数据的能力,是数字信道所能传送的“最高数据传输速率”的同义语,单位是比特/秒( b/s)。

2)时延(Delay)。指数据(一个报文或分组)从网络(或链路)的一端传送到另一端所需要的总时间,它由4部分构成:发送时延、传播时延、处理时延和排队时延。

  • $\color{green}{\text{发送时延}}$ 。结点将分组的所有比特推向(传输)链路所需的时间,即从发送分组的第一个比特算起,到该分组的最后一个比特发送完毕所需的时间,因此也称 $\color{green}{\text{传输时延}}$ 。计算公式为:发送时延=分组长度/信道宽度
  • $\color{green}{\text{传播时延}}$ 。电磁波在信道中传播一定的距离需要花费的时间,即一个比特从链路的一端传播到另一端所需的时间。计算公式为:传播时延=信道长度/电磁波在信道上的传播速率
  • $\color{green}{\text{处理时延}}$ 。数据在交换结点为存储转发而进行的一些必要的处理所花费的时间。例如,分析分组的首部、从分组中提取数据部分、进行差错检验或查找适当的路由等。
  • $\color{green}{\text{排队时延}}$ 。分组在进入路由器后要先在输入队列中排队等待处理。路由器确定转发端口后,还要在输出队列中排队等待转发,这就产生了排队时延。

因此,数据在网络中经历的总时延就是以上4部分时延之和:

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

注意:做题时,排队时延和处理时延一般可忽略不计(除非题目另有说明)。另外,对于高速链路,提高的仅是数据发送速率而非比特在链路上的传播速率。提高数据的发送速率只是为了减少数据的发送时延。

3)时延带宽积。指发送端发送的第一个比特即将到达终点时,发送端已经发出了多少个比特,因此又称以比特为单位的链路长度,即时延带宽积=传播时延×信道带宽。

如图1.4所示,考虑一个代表链路的圆柱形管道,其长度表示链路的传播时延,横截面积表示链路带宽,则时延带宽积表示该管道可以容纳的比特数量。

图片详情找不到图片(Image not found)

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

5)吞吐量(Throughput)。指单位时间内通过某个网络(或信道、接口)的数据量。吞吐量受网络带宽或网络额定速率的限制。

6)速率(Speed)。网络中的速率是指连接到计算机网络上的主机在数字信道上传送数据的速率,也称数据传输速率、数据率或比特率,单位为 bl/s (比特/秒)(或bit/s,有时也写为bps)。数据率较高时,可用kb/s (k = 103)、Mb/s (M = 10°)或Gb/s (G = 10’)表示。在计算机网络中,通常把最高数据传输速率称为带宽。

7)信道利用率。指出某一信道有百分之多少的时间是有数据通过的,即信道利用率=有数据通过时间/(有+无)数据通过时间。

结合计网期末考的概念:传输时延,重点在输送,传播实验,重点在广播($\color{red}{\text{Q}}$:好像王道的传播和自顶向下的传播不是指一个东西)
注意带宽的单位是$\text{比特}/s=b/s$,不可以是$\text{字节}/s=B/s$!!

网络的报文流和字节流,程序中的字符流和字节流

字节流和报文流

jms和socket

jms和amqp和rabbitmq的区别

计算机网络体系结构与参考模型

计算机网络分层结构

两个系统中实体间的通信是一个很复杂的过程,为了降低协议设计和调试过程的复杂性,也为了便于对网络进行研究、实现和维护,促进标准化工作,通常对计算机网络的体系结构以分层的方式进行建模。

我们把计算机网络的各层及其协议的集合称为网络的体系结构(Architecture)。换言之,计算机网络的体系结构就是这个计算机网络及其所应完成的功能的精确定义,它是计算机网络中的层次、各层的协议及层间接口的集合。需要强调的是,这些功能究竟是用何种硬件或软件完成的,则是一个遵循这种体系结构的实现(Implementation)问题。体系结构是抽象的,而实现是具体的,是真正在运行的计算机硬件和软件。

计算机网络的体系结构通常都具有可分层的特性,它将复杂的大系统分成若干较容易实现的层次。分层的基本原则如下:

1)每层都实现一种相对独立的功能,降低大系统的复杂度。

2)各层之间界面自然清晰,易于理解,相互交流尽可能少。

3)各层功能的精确定义独立于具体的实现方法,可以采用最合适的技术来实现。

4)保持下层对上层的独立性,上层单向使用下层提供的服务。

5)整个分层结构应能促进标准化工作。

由于分层后各层之间相对独立,灵活性好,因而分层的体系结构易于更新(替换单个模块)易于调试,易于交流,易于抽象,易于标准化。但层次越多,有些功能在不同层中难免重复出现,产生额外的开销,导致整体运行效率越低。层次越少,就会使每层的协议太复杂。因此,在分层时应考虑层次的清晰程度与运行效率间的折中、层次数量的折中。

依据一定的规则,将分层后的网络从低层到高层依次称为第1层、第2层……第n层,通常还为每层取一个特定的名称,如第1层的名称为$\color{green}{\text{物理层}}$。

在计算机网络的分层结构中,第n层中的活动元素通常称为第n层实体。具体来说,实体指任何可发送或接收信息的硬件或软件进程,通常是一个特定的软件模块。不同机器上的同一层称为$\color{green}{\text{对等层}}$,同一层的实体称为$\color{green}{\text{对等实体}}$。第n层实体实现的服务为第n +1层所利用。在这种情况下,第n层称为$\color{green}{\text{服务提供者}}$,第n+1层则服务于$\color{green}{\text{用户}}$。

每一层还有自己传送的数据单位,其名称、大小、含义也各有不同。

在计算机网络体系结构的各个层次中,每个报文都分为两部分:一是数据部分,即SDU;二是控制信息部分,即 PCI,它们共同组成PDU。

服务数据单元(SDU):为完成用户所要求的功能而应传送的数据。第n层的服务数据单元记为n-SDU。

协议控制信息(PCI):控制协议操作的信息。第n层的协议控制信息记为n-PCI。

协议数据单元(PDU):对等层次之间传送的数据单位称为该层的PDU。第n层的协议数据单元记为n-PDU。在实际的网络中,每层的协议数据单元都有一个通俗的名称,如物理层的PDU称为$\color{green}{\text{比特}}$,数据链路层的PDU称为$\color{green}{\text{帧}}$,网络层的PDU称为$\color{green}{\text{分组}}$,传输层的PDU称为$\color{green}{\text{报文段}}$。

在各层间传输数据时,把从第n+1层收到的PDU作为第n层的SDU,加上第n层的PCI,就变成了第n层的PDU,交给第n-1层后作为SDU发送,接收方接收时做相反的处理,因此可知三者的关系为n-SDU + n-PCI = n-PDU=(n- 1)-SDU,其变换过程如图1.5所示。

图1.5网络各层数据单元的联系找不到图片(Image not found)

1)第n层的实体不仅要使用第n-1层的服务来实现自身定义的功能,还要向第n+1层提供本层的服务,该服务是第n层及其下面各层提供的服务总和。

2)最低层只提供服务,是整个层次结构的基础;中间各层既是下一层的服务使用者,又是上一层的服务提供者;最高层面向用户提供服务。

3)上一层只能通过相邻层间的接口使用下一层的服务,而不能调用其他层的服务;下一层所提供服务的实现细节对上一层透明。

4)两台主机通信时,对等层在逻辑上有一条直接信道,表现为不经过下层就把信息传送到对方。

也就是在物理上还是经过了下一层

计算机网络协议、接口、服务的概念

协议

协议,就是规则的集合。在网络中要做到有条不紊地交换数据,就必须遵循一些事先约定好的规则。这些规则明确规定了所交换的数据的格式及有关的同步问题。这些为进行网络中的数据交换而建立的规则、标准或约定称为网络协议(Network Protocol),它是控制两个(或多个)对等实体进行通信的规则的集合,是水平的。不对等实体之间是没有协议的,比如用TCP/IP 协议栈通信的两个结点,结点A的传输层和结点B的传输层之间存在协议,但结点A的传输层和结点B的网络层之间不存在协议。网络协议也简称为协议。

协议由语法、语义和同步三部分组成。语法规定了传输数据的格式;语义规定了所要完成的功能,即需要发出何种控制信息、完成何种动作及做出何种应答;同步规定了执行各种操作的条件、时序关系等,即事件实现顺序的详细说明。一个完整的协议通常应具有线路管理(建立、释放连接)、差错控制、数据转换等功能。

接口

接口是同一结点内相邻两层间交换信息的连接点,是一个系统内部的规定。每层只能为紧邻的层次之间定义接口,不能跨层定义接口。在典型的接口上,同一结点相邻两层的实体通过服务访问点(Service Access Point,SAP)进行交互。服务是通过SAP提供给上层使用的,第n层的SAP就是第n+1层可以访问第n层服务的地方。每个SAP都有一个能够标识它的地址。SAP是一个抽象的概念,它实际上是一个逻辑接口(类似于邮政信箱),但和通常所说的两个设备之间的硬件接口是很不一样的。

服务

服务是指下层为紧邻的上层提供的功能调用,它是垂直的。对等实体在协议的控制下,使得本层能为上一层提供服务,但要实现本层协议还需要使用下一层所提供的服务。

上层使用下层所提供的服务时必须与下层交换一些命令,这些命令在OSI参考模型中称为服务原语。OSI参考模型将原语划分为4类:(原语的主语用绿色高亮)

1)请求(Request)。由$\color{green}{\text{服务用户}}$发往服务提供者,请求完成某项工作。

2)指示(Indication)。由$\color{green}{\text{服务提供者}}$发往服务用户,指示用户做某件事情。

3)响应(Response)。由$\color{green}{\text{服务用户}}$发往服务提供者,作为对指示的响应。

4)证实(Confirmation)。由$\color{green}{\text{服务提供者}}$发往服务用户,作为对请求的证实。

这4类原语用于不同的功能,如建立连接、传输数据和断开连接等。有应答服务包括全部4类原语,而无应答服务则只有请求和指示两类原语。
4类原语的关系如图1.6所示。

4类原语的关系找不到图片(Image not found)

一定要注意,协议和服务在概念上是不一样的。首先,只有本层协议的实现才能保证向上一层提供服务。本层的服务用户只能看见服务而无法看见下面的协议,即下面的协议对上层的服务用户是透明的。其次,协议是“$\color{green}{\text{水平的}}$”,即协议是控制对等实体之间通信的规则。但服务是“$\color{green}{\text{垂直的}}$”,即服务是由下层通过层间接口向上层提供的。另外,并非在一层内完成的全部功能都称为服务,只有那些能够被高一层实体“看得见”的功能才称为服务。

协议、接口、服务三者之间的关系如图1.7所示。

图片详情找不到图片(Image not found)

计算机网络提供的服务可按以下三种方式分类。

( 1)面向连接服务与无连接服务

在面向连接服务中,通信前双方必须先建立连接,分配相应的资源(如缓冲区),以保证通信能正常进行,传输结束后释放连接和所占用的资源。因此这种服务可以分为连接建立、数据传输和连接释放三个阶段。例如TCP就是一种面向连接服务的协议。

在无连接服务中,通信前双方不需要先建立连接,需要发送数据时可直接发送,把每个带有目的地址的包(报文分组)传送到线路上,由系统选定路线进行传输。这是一种不可靠的服务。这种服务常被描述为“尽最大努力交付”(Best-Effort-Delivery),它并不保证通信的可靠性。例如$\color{green}{\text{IP}}$、$\color{green}{\text{UDP}}$就是一种无连接服务的协议。

(2)可靠服务和不可靠服务

可靠服务是指网络具有纠错、检错、应答机制,能保证数据正确、可靠地传送到目的地。

不可靠服务是指网络只是尽量正确、可靠地传送,而不能保证数据正确、可靠地传送到目的地,是一种尽力而为的服务。

对于提供不可靠服务的网络,其网络的正确性、可靠性要由应用或用户来保障。例如,用户收到信息后要判断信息的正确性,如果不正确,那么用户要把出错信息报告给信息的发送者,以便发送者采取纠正措施。通过用户的这些措施,可以把不可靠的服务变成可靠的服务。

注意:在一层内完成的全部功能并非都称为服务,只有那些能够被高一层实体“看得见”的功能才能称为服务。

( 3)有应答服务和无应答服务

有应答服务是指接收方在收到数据后向发送方给出相应的应答,该应答由传输系统内部自动实现,而不由用户实现。所发送的应答既可以是肯定应答,也可以是否定应答,通常在接收到的数据有错误时发送否定应答。例如,文件传输服务就是一种有应答服务。

无应答服务是指接收方收到数据后不自动给出应答。若需要应答,则由高层实现。例如,对于WWW服务,客户端收到服务器发送的页面文件后不给出应答。

ISO/OSI参考模型和TCP/IP模型

OSI参考模型

国际标准化组织(ISO)提出的网络体系结构模型,称为开放系统互连参考模型(OSI/RM),通常简称为OSI参考模型。OSI参考模型有7层,自下而上依次为物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。低三层统称为通信子网,它是为了联网而附加的通信设备,完成数据的传输功能;高三层统称为资源子网,它相当于计算机系统,完成数据的处理等功能。传输层承上启下。OSI参考模型的层次结构如图1.8所示。

图1.8 OSI参考模型的层次结构找不到图片(Image not found)

下面详述OSI参考模型各层的功能。

(1)物理层(Physical Layer)

物理层的传输单位是比特,任务是透明的传输比特流,功能是在物理媒体上为数据端设备透明地传输原始比特流。

物理层主要定义数据终端设备(DTE)和数据通信设备(DCE)的物理与逻辑连接方法,所以物理层协议也称物理层接口标准。由于在通信技术的早期阶段,通信规则称为规程(Procedure),因此物理层协议也称物理层规程。

物理层接口标准很多,如EIA-232C、EIA/TIA RS-449、CCITT的X.21等。在计算机网络的复习过程中,不要忽略对各层传输协议的记忆,到了后期,读者对数据链路层、网络层、传输层和应用层的协议会比较熟悉,但往往容易忽视物理层的协议。

图1.9表示的是两个通信结点及它们间的一段通信链路,物理层主要研究以下内容:

图片详情找不到图片(Image not found)

${\textstyle\unicode{x2460}}$ 通信链路与通信结点的连接需要一些电路接口,物理层规定了这些接口的一些参数,如机械形状和尺寸、交换电路的数量和排列等,例如,笔记本电脑上的网线接口,就是物理层规定的内容之一。

${\textstyle\unicode{x2461}}$ 物理层也规定了通信链路上传输的信号的意义和电气特征。例如物理层规定信号A代表数字0,那么当结点要传输数字0时,就会发出信号A,当结点接收到信号A时,就知道自己接收到的实际上是数字0。

注意,传输信息所利用的一些物理媒体,如双绞线、光缆、无线信道等,并不在物理层协议之内而在物理层协议下面。因此,有人把物理媒体当作第О层。

(2)数据链路层(Data Link Layer)

数据链路层的传输单位是帧,任务是将网络层传来的P数据报组装成帧。数据链路层的功能可以概括为成帧、差错控制、流量控制和传输管理等。

由于外界噪声的干扰,原始的物理连接在传输比特流时可能发生错误。如图1.8所示,左边结点想向右边结点传输数字0,于是发出了信号A;但传输过程中受到干扰,信号A变成了信号B,而信号B又刚好代表1,右边结点接收到信号B时,就会误以为左边结点传送了数字1,从而发生差错。两个结点之间如果规定了数据链路层协议,那么可以检测出这些差错,然后把收到的错误信息丢弃,这就是差错控制功能。

如图1.9所示,在两个相邻结点之间传送数据时,由于两个结点性能的不同,可能结点A发送数据的速率会比结点B接收数据的速率快,如果不加控制,那么结点B就会丢弃很多来不及接收的正确数据,造成传输线路效率的下降。流量控制可以协调两个结点的速率,使结点A发送数据的速率刚好是结点B可以接收的速率。

广播式网络在数据链路层还要处理新的问题,即如何控制对共享信道的访问。数据链路层的一个特殊的子层—介质访问子层,就是专门处理这个问题的。

典型的数据链路层协议有SDLC、HDLC、PPP、STP和帧中继等。

(3)网络层(Network Layer)

网络层的传输单位是数据报,它关心的是通信子网的运行控制,主要任务是把网络层的协议数据单元(分组)从源端传到目的端,为分组交换网上的不同主机提供通信服务。关键问题是对分组进行路由选择,并实现流量控制、拥塞控制、差错控制和网际互联等功能。

如图1.10所示,结点A向结点B传输一个分组时,既可经过边a、c、g,也可经过边b、h,有很多条可以选择的路由,而网络层的作用就是根据网络的情况,利用相应的路由算法计算出一条合适的路径,使这个分组可以顺利到达结点B。

图1.10某网络结构图找不到图片(Image not found)

流量控制与数据链路层的流量控制含义一样,都是协调A的发送速率和B的接收速率。

差错控制是通信两结点之间约定的特定检错规则,如奇偶校验码,接收方根据这个规则检查接收到的分组是否出现差错,如果出现了差错,那么能纠错就纠错,不能纠错就丢弃,确保向上层提交的数据都是无误的。

如果图1.10中的结点都处于来不及接收分组而要丢弃大量分组的情况,那么网络就处于拥塞状态,拥塞状态使得网络中的两个结点无法正常通信。网络层要采取一定的措施来缓解这种拥塞,这就是拥塞控制。

因特网是一个很大的互联网,它由大量异构网络通过路由器((Router)相互连接起来。因特网的主要网络层协议是无连接的网际协议(Internet Protocol,P)和许多路由选择协议,因此因特网的网络层也称网际层或IP层。

注意,网络层中的“网络”一词并不是我们通常谈及的具体网络,而是在计算机网络体系结构中使用的专有名词。

网络层的协议有IP、IPX、ICMP、IGMP、ARP、RARP和OSPF等。

(4)传输层(Transport Layer)

传输层也称运输层,传输单位是报文段(TCP)或用户数据报(UDP),传输层负责主机中两个进程之间的通信,功能是为端到端连接提供可靠的传输服务,为端到端连接提供流量控制、差错控制、服务质量、数据传输管理等服务。

数据链路层提供的是点到点的通信,传输层提供的是端到端的通信,两者不同。通俗地说,点到点可以理解为主机到主机之间的通信,一个点是指一个硬件地址或P地址,网络中参与通信的主机是通过硬件地址或P地址标识的;端到端的通信是指运行在不同主机内的两个进程之间的通信,一个进程由一个端口来标识,所以称为端到端通信。

使用传输层的服务,高层用户可以直接进行端到端的数据传输,从而忽略通信子网的存在。通过传输层的屏蔽,高层用户看不到子网的交替和变化。由于一台主机可同时运行多个进程,因此传输层具有复用和分用的功能。复用是指多个应用层进程可同时使用下面传输层的服务,分用是指传输层把收到的信息分别交付给上面应用层中相应的进程。

传输层的协议有TCP、UDP。

(5)会话层(Session Layer)

会话层允许不同主机上的各个进程之间进行会话。会话层利用传输层提供的端到端的服务,向表示层提供它的增值服务。这种服务主要为表示层实体或用户进程建立连接并在连接上有序地传输数据,这就是会话,也称建立同步(SYN)。

会话层负责管理主机间的会话进程,包括建立、管理及终止进程间的会话。会话层可以使用校验点使通信会话在通信失效时从校验点继续恢复通信,实现数据同步。

(6)表示层(Presentation Layer)

表示层主要处理在两个通信系统中交换信息的表示方式。不同机器采用的编码和表示方法不同,使用的数据结构也不同。为了使不同表示方法的数据和信息之间能互相交换,表示层采用抽象的标准方法定义数据结构,并采用标准的编码形式。数据压缩、加密和解密也是表示层可提供的数据表示变换功能。

(7)应用层(Application Layer)

应用层是OSI参考模型的最高层,是用户与网络的界面。应用层为特定类型的网络应用提供访问OSI参考模型环境的手段。因为用户的实际应用多种多样,这就要求应用层采用不同的应用协议来解决不同类型的应用要求,因此应用层是最复杂的一层,使用的协议也最多。典型的协议有用于文件传送的FTP、用于电子邮件的SMTP、用于万维网的HTTP等。

TCP/IP模型

ARPA在研究ARPAnet时提出了TCP/IP模型,模型从低到高依次为网络接口层(对应OSI参考模型中的物理层和数据链路层)、网际层、传输层和应用层(对应OSI参考模型中的会话层、表示层和应用层)。TCP/P由于得到广泛应用而成为事实上的国际标准。TCP/P模型的层次结构及各层的主要协议如图1.11所示。

图片详情找不到图片(Image not found)

网络接口层的功能类似于OSI参考模型的物理层和数据链路层。它表示与物理网络的接口,但实际上TCP/IP本身并未真正描述这一部分,只是指出主机必须使用某种协议与网络连接,以便在其上传递IP分组。具体的物理网络既可以是各种类型的局域网,如以太网、令牌环网、令牌总线网等,也可以是诸如电话网、SDH、X.25、帧中继和 ATM等公共数据网络。网络接口层的作用是从主机或结点接收IP分组,并把它们发送到指定的物理网络上。

网际层(主机-主机)是TCP/IP体系结构的关键部分。它和OSI参考模型的网络层在功能上非常相似。网际层将分组发往任何网络,并为之独立地选择合适的路由,但它不保证各个分组有序地到达,各个分组的有序交付由高层负责。网际层定义了标准的分组格式和协议,即P。当前采用的P协议是第4版,即IPv4,它的下一版本是IPv6。

传输层(应用-应用或进程-进程)的功能同样和OSI参考模型中的传输层类似,即使得发送端和目的端主机上的对等实体进行会话。传输层主要使用以下两种协议:

1)传输控制协议(Transmission Control Protocol,TCP)。它是面向连接的,数据传输的单位是报文段,能够提供可靠的交付。

2)用户数据报协议(User Datagram Protocol,UDP)。它是无连接的,数据传输的单位是用户数据报,不保证提供可靠的交付,只能提供“尽最大努力交付”。应用层(用户-用户)包含所有的高层协议,如虚拟终端协议(Telnet)、文件传输协议(FTP)、域名解析服务(DNS)、电子邮件协议(SMTP)和超文本传输协议(HTTP)。

由图1.10可以看出,IP 协议是因特网中的核心协议;TCP/IP可以为各式各样的应用提供服务(所谓的everything over IP),同时TCP/P 也允许IP协议在由各种网络构成的互联网上运行(所谓的IP over everything)。正因为如此,因特网才会发展到今天的规模。

TCP/IP模型与OSl参考模型的比较

TCP/IP模型与OSI参考模型有许多相似之处。

首先,二者都采取分层的体系结构,将庞大且复杂的问题划分为若干较容易处理的、范围较小的问题,而且分层的功能也大体相似。

其次,二者都是基于独立的协议栈的概念。

最后,二者都可以解决异构网络的互联,实现世界上不同厂家生产的计算机之间的通信。它们之间的比较如图1.12所示。

图片详情找不到图片(Image not found)

两个模型除具有这些基本的相似之处外,也有很多差别。

第一,OSI参考模型的最大贡献就是精确地定义了三个主要概念:服务、协议和接口,这与现代的面向对象程序设计思想非常吻合。而TCP/IP模型在这三个概念上却没有明确区分,不符合软件工程的思想。

第二,OSI参考模型产生在协议发明之前,没有偏向于任何特定的协议,通用性良好。但设计者在协议方面没有太多经验,不知道把哪些功能放到哪一层更好。TCP/IP模型正好相反,首先出现的是协议,模型实际上是对已有协议的描述,因此不会出现协议不能匹配模型的情况,但该模型不适合于任何其他非TCP/IP的协议栈。

第三,TCP/IP模型在设计之初就考虑到了多种异构网的互联问题,并将网际协议(P)作为一个单独的重要层次。OSI参考模型最初只考虑到用一种标准的公用数据网将各种不同的系统互联。OSI参考模型认识到P的重要性后,只好在网络层中划分出一个子层来完成类似于TCP/IP模型中的IP的功能。

第四,OSI参考模型在网络层支持无连接和面向连接的通信,但在传输层仅有面向连接的通信。而TCP/IP模型认为可靠性是端到端的问题,因此它在网际层仅有一种无连接的通信模式,但传输层支持无连接和面向连接两种模式。这个不同点常常作为考查点。

无论是OSI参考模型还是TCP/IP模型,都不是完美的,对二者的讨论和批评都很多。OSI参考模型的设计者从工作的开始,就试图建立一个全世界的计算机网络都要遵循的统一标准。从技术角度来看,他们希望追求一种完美的理想状态,这也导致基于OSI参考模型的软件效率极低。OSI参考模型缺乏市场与商业动力,结构复杂,实现周期长,运行效率低,这是它未能达到预期目标的重要原因。

无论是OSI参考模型还是TCP/P模型,都不是完美的,对二者的讨论和批评都很多。OSI参考模型的设计者从工作的开始,就试图建立一个全世界的计算机网络都要遵循的统一标准。从技术角度来看,他们希望追求一种完美的理想状态,这也导致基于OSI参考模型的软件效率极低。OSI参考模型缺乏市场与商业动力,结构复杂,实现周期长,运行效率低,这是它未能达到预期目标的重要原因。

学习计算机网络时,我们往往采取折中的办法,即综合OSI参考模型和TCP/IP模型的优点,采用一种如图1.13所示的只有5层协议的体系结构,即我们所熟知的物理层、数据链路层、网络层、传输层和应用层。本书也采用这种体系结构进行讨论。

图片详情找不到图片(Image not found)

最后简单介绍使用通信协议栈进行通信的结点的数据传输过程。每个协议栈的最顶端都是一个面向用户的接口,下面各层是为通信服务的协议。用户传输一个数据报时,通常给出用户能够理解的自然语言,然后通过应用层,将自然语言会转化为用于通信的通信数据。通信数据到达传输层,作为传输层的数据部分(传输层SDU),加上传输层的控制信息(传输层PCI),组成传输层的PDU,然后交到网络层,传输层的PDU下放到网络层后,就成为网络层的SDU,然后加上网络层的PCI,又组成了网络层的PDU,下放到数据链路层,就这样层层下放,层层包裹,最后形成的数据报通过通信线路传输,到达接收方结点协议栈,接收方再逆向地逐层把“包裹”拆开,然后把收到的数据提交给用户,如图1.14所示。

图片详情找不到图片(Image not found)

协议栈和分层的区别维基百科协议栈的定义
为什么我感觉协议栈和分层是同一概念?见谢书

计算机网络与分布式计算机系统的主要区别是什么?

分布式系统最主要的特点是,整个系统中的各个计算机对用户都是透明的。用户通过输入命令就可以运行程序,但用户并不知道哪台计算机在为它运行程序。操作系统为用户选择一台最合适的计算机来运行其程序,并将运行的结果传送到合适的地方。

计算机网络则与之不同,用户必须先登录欲运行程序的计算机,然后按照计算机的地址,将程序通过计算机网络传送到该计算机中运行,最后根据用户的命令将结果传送到指定的计算机中。二者的区别主要是软件的不同。

不是应该是计算机网路是网络的网络吗?

为什么一个网络协议必须考虑到各种不利的情况?

因为网络协议如果不全面考虑不利的情况,那么当情况发生变化时,协议就会保持理想状况,一直等下去!就如同两位朋友在电话中约好下午3点在公园见面,并且约定不见不散。这一―协议很不科学,因为任何一方如果有耽搁而来不了,且无法通知对方,那么另一方就要一直等下去!所以判断一个计算机网络是否正确,不能只看在正常情况下是否正确,还必须非常仔细地检查协议能否应付各种异常情况。

因特网使用的P协议是无连接的,因此其传输是不可靠的。这样容易使人们感到因特网很不可靠。那么为什么当初不把因特网的传输设计为可靠的呢?

传统电信网的主要用途是电话通信,并且普通电话机不是智能的,因此电信公司必须花费巨大的代价把电信网设计得非常好,以保证用户的通信质量。

数据的传送显然必须非常可靠。当初在设计ARPAnet时,很重要的讨论内容之一是:“谁应当负责数据传输的可靠性?”一种意见是主张应当像电信网那样,由通信网络负责数据传输的可靠性(因为电信网的发展历史及其技术水平已经证明,人们可以将网络设计得相当可靠);另一种意见则坚决主张由用户的主机负责数据传输的可靠性,理由是这样可使计算机网络便宜、灵活。

计算机网络的先驱认为,计算机网络和电信网的一个重大区别是终端设备的性能差别很大。于是,他们采用了“端到端的可靠传输”策略,即在传输层使用面向连接的TCP协议,这样既能使网络部分价格便宜且灵活可靠,又能保证端到端的可靠传输。

计算机网络和电信网的一个重大区别是终端设备的性能差别很大。按照这层意思不就更应该把可靠传输这种繁琐的工作交给计算机网络更好了吗

有人说,宽带信道相当于高速公路车道数目增多了,可以同时并行地跑更多数量的汽车。虽然汽车的时速并没有提高(相当于比特在信道上的传播速率未提高),但整个高速公路的运输能力却增多了,相当于能够传送更多数量的比特。这种比喻合适否?

可以这样比喻。但一定不能误认为“提高信道的速率是设法使比特并行地传输”。

如果一定要用汽车在高速公路上行驶和比特在通信线路上传输相比较,那么可以这样来想象:低速信道相当于汽车进入高速公路的时间间隔较长。例如,每隔1分钟有一辆汽车进入高速公路;“信道速率提高”相当于进入高速公路的汽车的时间间隔缩短了,例如,现在每隔6秒就有一辆汽车进入高速公路。虽然汽车在高速公路上行驶的速率无变化,但在同样的时间内,进入高速公路的汽车总数却增多了(每隔1分钟进入高速公路的汽车现在增加到10辆),因而吞吐量也就增大了。

也就是说,当带宽或发送速率提高后,比特在链路上向前传播的速率并未提高,只是每秒注入链路的比特数增加了。“速率提高”就体现在单位时间内发送到链路上的比特数增多了,而并不是比特在链路上跑得更快了。

端到端通信和点到点通信有什么区别?

从本质上说,由物理层、数据链路层和网络层组成的通信子网为网络环境中的主机提供点到点的服务,而传输层为网络中的主机提供端到端的通信。

直接相连的结点之间的通信称为点到点通信,它只提供一台机器到另一台机器之间的通信,不涉及程序或进程的概念。同时,点到点通信并不能保证数据传输的可靠性,也不能说明源主机与目的主机之间是哪两个进程在通信,这些工作都是由传输层来完成的。

端到端通信建立在点到点通信的基础上,它是由一段段的点到点通信信道构成的,是比点到点通信更高一级的通信方式,以完成应用程序(进程)之间的通信。“端”是指用户程序的端口,端口号标识了应用层中不同的进程。

如何理解传输速率、带宽和传播速率?
图片详情找不到图片(Image not found)

这个理解似乎与期末考的定义恰好相反

如何理解传输时延、发送时延和传播时延?

传输时延又称发送时延,是主机或路由器发送数据帧所需的时间,即从数据帧的第1比特算起,到该数据帧的最后1比特发送完毕所需要的时间。计算公式是

发送时延=数据帧长度/信道带宽

传播时延是电磁波在信道中传播一定的距离所花费的时间。计算公式是

传播时延=信道长度/电磁波在信道上的传播速率

物理层

【考纲内容】

(一)通信基础

信道、信号、带宽、码元、波特、速率、信源与信宿等基本概念

奈奎斯特定理与香农定理;编码与调制

电路交换、报文交换与分组交换;数据报与虚电路

(二)传输介质

双绞线、同轴电缆、光纤与无线传输介质;物理层接口的特性

(三)物理层设备

中继器;集线器

【复习提示】

物理层考虑的是怎样才能在连接各台计算机的传输媒体上传输数据比特流,而不是指具体的传输媒体。本章概念较多,易出选择题,且涉及一些通信原理,读者不太明白的地方可以参考一些相关书籍,通信部分的内容也并非考研重点。复习时应抓住重点,如奈奎斯特定理和香农定理的应用、编码与调制技术、数据交换方式,以及电路交换、报文交换与分组交换技术等。

通信基础

基本概念

数据、信号与码元

通信的目的是传送信息,如文字、图像和视频等。数据是指传送信息的实体。信号则是数据的电气或电磁表现,是数据在传输过程中的存在形式。数据和信号都可用“模拟的”或“数字的”来修饰:①连续变化的数据(或信号)称为模拟数据(或$\color{green}{\text{模拟信号}}$);②取值仅允许为有限的几个离散数值的数据(或信号)称为数字数据(或$\color{green}{\text{数字信号}}$)。
数据传输方式可分为串行传输和并行传输。串行传输是指1比特1比特地按照时间顺序传输(远距离通信通常采用串行传输),并行传输是指若干比特通过多条通信信道同时传输。

码元是指用一个固定时长的信号波形(数字脉冲)表示一位k进制数字,代表不同$\color{green}{\text{离散数值}}$的基本波形,是数字通信中数字信号的计量单位,这个时长内的信号称为k进制码元,而该时长称为码元宽度。1码元可以携带若干比特的信息量。例如,在使用二进制编码时,只有两种不同的码元:一种代表О状态,另一种代表1状态。

信源、信道与信宿

数据通信是指数字计算机或其他数字终端之间的通信。一个数据通信系统主要划分为信源、信道和信宿三部分。信源是产生和发送数据的源头。信宿是接收数据的终点,它们通常都是计算机或其他数字终端装置。发送端信源发出的信息需要通过变换器转换成适合于在信道上传输的信号,而通过信道传输到接收端的信号先由反变换器转换成原始信息,再发送给信宿。

信道与电路并不等同,信道是信号的传输媒介。一个信道可视为一条线路的逻辑部件,一般用来表示向某个方向传送信息的介质,因此一条通信线路往往包含一条发送信道和一条接收信道。噪声源是信道上的噪声(即对信号的干扰)及分散在通信系统其他各处的噪声的集中表示。

图2.1所示为一个单向通信系统的模型。实际的通信系统大多为双向的,即往往包含一条发送信道和一条接收信道,信道可以进行双向通信。

图片详情找不到图片(Image not found)

信道按传输信号形式的不同,可分为传送模拟信号的模拟信道和传送数字信号的数字信道两大类;信道按传输介质的不同可分为无线信道和有线信道。

信道上传送的信号有$\color{green}{\text{基带信号}}$和$\color{green}{\text{宽带信号}}$之分。基带信号将数字信号1和0直接用两种不同的电压表示,然后送到数字信道上传输(称为基带传输);宽带信号将基带信号进行调制后形成频分复用模拟信号,然后送到模拟信道上传输(称为宽带传输)。

从通信双方信息的交互方式看,可分为三种基本方式:

1)单向通信。只有一个方向的通信而没有反方向的交互,仅需要一条信道。例如,无线电广播、电视广播就属于这种类型。

2)半双工通信。通信的双方都可以发送或接收信息,但任何一方都不能同时发送和接收信息,此时需要两条信道。

3)全双工通信。通信双方可以同时发送和接收信息,也需要两条信道。

信道的极限容量是指信道的最高码元传输速率或信道的极限信息传输速率。

速率、波特与带宽

速率也称数据率,指的是数据传输速率,表示单位时间内传输的数据量。可以用码元传输速率和信息传输速率表示。

1)码元传输速率。又称波特率,它表示单位时间内数字通信系统所传输的码元个数(也可称为脉冲个数或信号变化的次数),单位是波特($\color{green}{\text{Baud}}$)。1波特表示数字通信系统每秒传输一个码元。码元可以是多进制的,也可以是二进制的,码元速率与进制数无关。

2)信息传输速率。又称信息速率、比特率等,它表示单位时间内数字通信系统传输的二进制码元个数(即比特数),单位是比特/秒(b/s)。

注意:波特和比特是两个不同的概念,码元传输速率也称调制速率、波形速率或符号速率。但码元传输速率与信息传输速率在数量上却又有一定的关系。若一个码元携带n比特的信息量,则M波特率的码元传输速率所对应的信息传输速率为Mn比特/秒。

带宽原指信号具有的频带宽度,单位是赫兹(Hz)。在实际网络中,由于数据率是信道最重要的指标之一,而带宽与数据率存在数值上的互换关系,因此常用来表示网络的通信线路所能传输数据的能力。因此,带宽表示单位时间内从网络中的某一点到另一点所能通过的“最高数据率”。显然,此时带宽的单位不再是Hz,而是b/s。

奈奎斯特定理与香农定理

  • $\color{green}{\text{Q}}$ :奈奎斯特定理和香农定理的关系?
  • $\color{green}{\text{A}}$ :奈奎斯特定理适用于 $\color{green}{\text{无噪声}}$ 的情况,香农定理适用于 $\color{green}{\text{有噪声}}$ 的情况
奈奎斯特定理

具体的信道所能通过的频率范围总是有限的。信号中的许多高频分量往往不能通过信道,否则在传输中会衰减,导致接收端收到的信号波形失去码元之间的清晰界限,这种现象称为码间串扰。奈奎斯特(Nyquist)定理又称奈氏准则,它规定:在理想低通(没有噪声、带宽有限)的信道中,为了避免码间串扰,极限码元传输速率为 $\color{green}{\text{2W波特}}$ ,其中W是理想低通信道的带宽。若用V表示每个码元离散电平的数目(码元的离散电平数目是指有多少种不同的码元,比如有16种不同的码元,则需要4个二进制位,因此数据传输速率是码元传输速率的4倍),则极限数据率为

理想低通信道下的极限数据传输速率=$2W log_2V$(单位为 b/s)

  • 就是波特率直接转换为数据传输速率

对于奈氏准则,可以得出以下结论:

1)在任何信道中,码元传输速率是有上限的。若传输速率超过此上限,就会出现严重的码间串扰问题,使得接收端不可能完全正确识别码元。

2)信道的频带越宽(即通过的信号高频分量越多),就可用更高的速率进行码元的有效传输。

3)奈氏准则给出了码元传输速率的限制,但并未对信息传输速率给出限制,即未对一个码元可以对应多少个二进制位给出限制。

由于码元传输速率受奈氏准则的制约,所以要提高数据传输速率,就必须设法使每个码元携带更多比特的信息量,此时就需要采用多元制的调制方法。

这个地方配合谢书看,来龙去脉讲的比较清楚

谢书:奈奎斯特定理找不到图片(Image not found)
香农定理

香农(Shannon)定理给出了带宽受限且有高斯白噪声干扰的信道的极限数据传输速率,当用此速率进行传输时,可以做到不产生误差。香农定理定义为

信道的极限数据传输速率= W$log_2$( 1 +S/N)(单位为b/s)

式中,W为信道的带宽,S为信道所传输信号的平均功率,N为信道内部的高斯噪声功率。 $\color{green}{\text{S/N}}$ 为 $\color{green}{\text{信噪比}}$ ,即信号的平均功率与噪声的平均功率之比,信噪比 = 10$log_{10}$(S/N)(单位为dB),例如当S/N= 10时,信噪比为10dB,而当S/N = 1000时,信噪比为30dB。

对于香农定理,可以得出以下结论:

1)信道的带宽或信道中的信噪比越大,信息的极限传输速率越高。

2)对一定的传输带宽和一定的信噪比,信息传输速率的上限是确定的。

3)只要信息传输速率低于信道的极限传输速率,就能找到某种方法来实现无差错的传输。

4)香农定理得出的是极限信息传输速率,实际信道能达到的传输速率要比它低不少。

奈氏准则只考虑了带宽与极限码元传输速率的关系,而香农定理不仅考虑到了带宽,也考虑到了信噪比。这从另一个侧面表明,一个码元对应的二进制位数是有限的。

怎么表明的???啥叫对应的二进制位数

编码与调制

数据无论是数字的还是模拟的,为了传输的目的都必须转变成信号。把数据变换为模拟信号的过程称为$\color{green}{\text{调制}}$,把数据变换为数字信号的过程称为$\color{green}{\text{编码}}$。

信号是数据的具体表示形式,它和数据有一定的关系,但又和数据不同。数字数据可以通过数字发送器转换为数字信号传输,也可以通过调制器转换成模拟信号传输;同样,模拟数据可以通过 PCM(Pulse Code Modulation,脉冲编码调制)编码器转换成数字信号传输,也可以通过放大器调制器转换成模拟信号传输。这样,就形成了下列4种编码方式。

图片详情找不到图片(Image not found)
数字数据编码为数字信号

数字数据编码用于基带传输中,即在基本不改变数字数据信号频率的情况下,直接传输数字信号。具体用什么样的数字信号表示0及用什么样的数字信号表示1就是所谓的编码。编码的规则有多种,只要能有效地把1和0区分开即可,常用的数据数据编码有以下几种,如图2.2所示。

图片详情找不到图片(Image not found)

时钟周期的作用参考文献
为什么归零编码可以传递时钟周期,波形应该画成参考文献那样理解,传递时钟周期可以立即为我要分辨出来连续1的话到底是几个1

(1)归零编码

在归零编码(RZ)中用高电平代表1、低电平代表0(或者相反),每个时钟周期的中间均跳变到低电平(归零),接收方根据该跳变调整本方的时钟基准,这就为传输双方提供了自同步机制。由于归零需要占用一部分带宽,因此传输效率受到了一定的影响。

(2)非归零编码

非归零编码(NRZ)与RZ编码的区别是不用归零,一个周期可以全部用来传输数据。但NRZ编码无法传递时钟信号,双方难以同步,因此若想传输高速同步数据,则需要都带有时钟线。

(3)反向非归零编码

反向非归零编码(NRZI)与NRZ编码的区别是用信号的翻转代表0、信号保持不变代表1。翻转的信号本身可以作为一种通知机制。这种编码方式集成了前两种编码的优点,既能传输时钟信号,又能尽量不损失系统带宽。$\color{green}{\text{USB 2.0}}$通信的编码方式就是NRZI编码。

$\color{red}{\text{Q}}$:感觉反向非归零编码并不能传递时钟周期啊??
$\color{red}{\text{A}}$:参考文献

(4)曼彻斯特编码

曼彻斯特编码(Manchester Encoding)将一个码元分成两个相等的间隔,前一个间隔为高电平而后一个间隔为低电平表示码元1;码元0的表示方法则正好相反。当然,也可采用相反的规定。该编码的特点是,在每个码元的中间出现电平跳变,位中间的跳变既作为时钟信号(可用于同步),又作为数据信号,但它所占的频带宽度是原始基带宽度的两倍。

注意:$\color{green}{\text{以太网}}$使用的编码方式就是曼彻斯特编码。

(5)差分曼彻斯特编码

差分曼彻斯特编码常用于$\color{green}{\text{局域网}}$传输,其规则是:若码元为1,则前半个码元的电平与上一码元的后半个码元的电平相同;若码元为0,则情形相反。该编码的特点是,在每个码元的中间都有一次电平的跳转,可以实现自同步,且抗干扰性较好。

局域网, 以太网的区别,参考文献

在每个时钟周期的起始处:跳变则说明该比特是0,不跳变则说明该比特是1。百度百科

(6)4B/5B编码

将欲发送数据流的每4位作为一组,然后按照4B/5B编码规则将其转换成相应的5位码。5位码共32种组合,但只采用其中的16种对应16种不同的4位码,其他16种作为控制码(帧的开始和结束、线路的状态信息等)或保留。

数字数据调制为模拟信号

数字数据调制技术在发送端将数字信号转换为模拟信号,而在接收端将模拟信号还原为数字信号,分别对应于调制解调器的调制和解调过程。基本的数字调制方法有如下几种:

1)幅移键控(ASK)。通过改变载波信号的振幅来表示数字信号1和0,而载波的频率和相位都不改变。比较容易实现,但抗干扰能力差。

2)频移键控(FSK)。通过改变载波信号的频率来表示数字信号1和0,而载波的振幅和相位都不改变。容易实现,抗干扰能力强,目前应用较为广泛。

3)相移键控(PSK)。通过改变载波信号的相位来表示数字信号1和0,而载波的振幅和频率都不改变。它又分为绝对调相和相对调相。

4)正交振幅调制(QAM)。在频率相同的前提下,将ASK与PSK结合起来,形成叠加信号。设波特率为B,采用m个相位,每个相位有n种振幅,则该QAM技术的数据传输速率R为

R= B$log_2$(mn)(单位为b/s)

图2.3所示是二进制幅移键控、频移键控和相移键控的例子。2ASK中用载波有幅度和无幅度分别表示数字数据的1和0;2FSK中用两种不同的频率分别表示数字数据1和0;2PSK中用相位0和相位T分别表示数字数据的1和0,是一种绝对调相方式。

图片详情找不到图片(Image not found)
模拟数据编码为数字信号

这种编码方式最典型的例子是常用于对音频信号进行编码的脉码调制(PCM, Pulse Code Modulation,

脉冲编码调制

)。它主要包括三个步骤,即采样、量化和编码。

先来介绍采样定理:在通信领域,带宽是指信号最高频率与最低频率之差,单位为Hz。因此,将模拟信号转换成数字信号时,假设原始信号中的最大频率为f,那么采样频率$f_{\text{采样}}$必须大于等于最大频率f的两倍,才能保证采样后的数字信号完整保留原始模拟信号的信息((只需记住结论)。另外,$\color{green}{\text{采样定理}}$又称奈奎斯特定理。

1)采样是指对模拟信号进行周期性扫描,把时间上连续的信号变成时间上离散的信号。根据采样定理,当采样的频率大于等于模拟数据的频带带宽(最高变化频率)的两倍时,所得的离散信号可以无失真地代表被采样的模拟数据。

2)量化是把采样取得的电平幅值按照一定的分级标度转化为对应的数字值并取整数,这样就把连续的电平幅值转换为了离散的数字量。采样和量化的实质就是分割和转换。

3)编码是把量化的结果转换为与之对应的二进制编码。

模拟数据调制为模拟信号

为了实现传输的有效性,可能需要较高的频率。这种调制方式还可以使用频分复用(FDM,Frequency Division Multiplexing)技术,充分利用带宽资源。电话机和本地局交换机采用模拟信号传输模拟数据的编码方式,模拟的声音数据是加载到模拟的载波信号中传输的。

电路交换、报文交换与分组交换

$\color{red}{\text{Q}}$:数据报交换和分组交换的区别

$\color{red}{\text{A}}$:数据报交换是分组交换的一种

电路交换

在进行数据传输前,两个结点之间必须先建立一条专用(双方独占)的物理通信路径(由通信双方之间的交换设备和链路逐段连接而成),该路径可能经过许多中间结点。这一路径在整个数据传输期间一直被独占,直到通信结束后才被释放。因此,电路交换技术分为三个阶段
连接建立、数据传输和连接释放。

从通信资源的分配角度来看,“交换”就是按照某种方式动态地分配传输线路的资源电路交换的关键点是,在数据传输的过程中,用户始终占用端到端的固定传输带宽。

电路交换技术的优点如下:

1)通信时延小。由于通信线路为通信双方用户专用,数据直达,因此传输数据的时延非常小。当传输的数据量较大时,这一优点非常明显。

2)有序传输。双方通信时按发送顺序传送数据,不存在失序问题。

3)没有冲突。不同的通信双方拥有不同的信道,不会出现争用物理信道的问题。

4)适用范围广。电路交换既适用于传输模拟信号,又适用于传输数字信号。

5)实时性强。通信双方之间的物理通路一旦建立,双方就可以随时通信。

6)控制简单。电路交换的交换设备(交换机等)及控制均较简单。

电路交换技术的缺点如下:

1)建立连接时间长。电路交换的平均连接建立时间对计算机通信来说太长。

2)线路独占,使用效率低。电路交换连接建立后,物理通路被通信双方独占,即使通信线路空闲,也不能供其他用户使用,因而信道利用率低。

3)灵活性差。只要在通信双方建立的通路中的任何一点出了故障,就必须重新拨号建立新的连接,这对十分紧急和重要的通信是很不利的。

4)难以规格化。电路交换时,数据直达,不同类型、不同规格、不同速率的终端很难相互进行通信,也难以在通信过程中进行差错控制。

注意,电路建立后,除源结点和目的结点外,电路上的任何结点都采取“直通方式”接收数据和发送数据,即不会存在存储转发所耗费的时间。

报文交换

数据交换的单位是报文,报文携带有目标地址、源地址等信息。报文交换在交换结点采用的是存储转发的传输方式。

报文交换技术的优点如下:

1)无须建立连接。报文交换不需要为通信双方预先建立一条专用的通信线路,不存在建立连接时延,用户可以随时发送报文。

2)动态分配线路。当发送方把报文交给交换设备时,交换设备先存储整个报文,然后选择一条合适的空闲线路,将报文发送出去。

3)提高线路可靠性。如果某条传输路径发生故障,那么可重新选择另一条路径传输数据,因此提高了传输的可靠性。

4)提高线路利用率。通信双方不是固定占有一条通信线路,而是在不同的时间一段段地部分占有这条物理通道,因而大大提高了通信线路的利用率。

5)提供多目标服务。一个报文可以同时发送给多个目的地址,这在电路交换中是很难实现的。

报文交换技术的缺点如下:

1)由于数据进入交换结点后要经历存储、转发这一过程,因此会引起转发时延(包括接收报文、检验正确性、排队、发送时间等)。

2)报文交换对报文的大小没有限制,这就要求网络结点需要有较大的缓存空间。

注意:报文交换主要使用在早期的电报通信网中,现在较少使用,通常被较先进的分组交换方式所取代。

分组交换

同报文交换一样,分组交换也采用存储转发方式,但解决了报文交换中大报文传输的问题。

分组交换限制了每次传送的数据块大小的上限,把大的数据块划分为合理的小数据块,再加上一些必要的控制信息(如源地址、目的地址和编号信息等),构成分组(Packet)。网络绐点恨掂控制信息把分组送到下一个结点,下一个结点接收到分组后,暂时保存并排队等待传输,然后根据分组控制信息选择它的下一个结点,直到到达目的结点。

分组交换的优点如下:

1)无建立时延。不需要为通信双方预先建立一条专用的通信线路,不存在连接建立时延,用户可随时发送分组。

2)线路利用率高。通信双方不是固定占有一条通信线路,而是在不同的时间一段一段地部分占有这条物理通路,因而大大提高了通信线路的利用率。

3)简化了存储管理(相对于报文交换)。因为分组的长度固定,相应的缓冲区的大小也固定在交换结点中存储器的管理通常被简化为对缓冲区的管理,相对比较容易。

4)加速传输。分组是逐个传输的,可以使后一个分组的存储操作与前一个分组的转发操作并行,这种流水线方式减少了报文的传输时间。此外,传输一个分组所需的缓冲区比传输次报文所需的缓冲区小得多,这样因缓冲区不足而等待发送的概率及时间也必然少得多.

5)减少了出错概率和重发数据量。因为分组较短,其出错概率必然减小,所以每次重发的数据量也就大大减少,这样不仅提高了可靠性,也减少了传输时延。

分组交换的缺点如下:

1)存在传输时延。尽管分组交换比报文交换的传输时延少,但相对于电路交换仍存在存储转发时延,而且其结点交换机必须具有更强的处理能力。

2)需要传输额外的信息量。每个小数据块都要加上源地址、目的地址和分组编号等信息从而构成分组,因此使得传送的信息量增大了5%~10%,一定程度上降低了通信效率增加了处理的时间,使控制复杂,时延增加。

3)当分组交换采用数据报服务时,可能会出现失序、丢失或重复分组,分组到达目的结点时,要对分组按编号进行排序等工作,因此很麻烦。若采用虚电路服务,虽无失序问题,但有呼叫建立、数据传输和虚电路释放三个过程。

图2.4给出了三种数据交换方式的比较。要传送的数据量很大且其传送时间远大于呼叫时间时,采用电路交换较为合适。端到端的通路由多段链路组成时,采用分组交换传送数据较为合适。从提高整个网络的信道利用率上看,报文交换和分组交换优于电路交换,其中分组交换比报文交换的时延小,尤其适合于计算机之间的突发式数据通信。

图片详情找不到图片(Image not found)

数据报与虚电路

分组交换根据其通信子网向端点系统提供的服务,还可进一步分为面向连接的虚电路方式和无连接的数据报方式。这两种服务方式都由网络层提供。要注意$\color{green}{\text{数据报方式}}$和$\color{green}{\text{虚电路方式}}$是$\color{green}{\text{分组交换}}$的两种方式。

ATM网中存在虚电路:参考文献

数据报

作为通信子网用户的端系统发送一个报文时,在端系统中实现的高层协议先把报文拆成若干带有序号的数据单元,并在网络层加上地址等控制信息后形成数据报分组(即网络层的 PDU)。中间结点存储分组很短一段时间,找到最佳的路由后,尽快转发每个分组。不同的分组可以走不同的路径,也可以按不同的顺序到达目的结点。

我们用图2.5的例子来说明数据报服务的原理。假定主机A要向主机B发送分组。

1)主机A先将分组逐个发往与它直接相连的交换结点A,交换结点A缓存收到的分组。

2)然后查找自己的转发表。由于不同时刻的网络状态不同,因此转发表的内容可能不完全相同,所以有的分组转发给交换结点C,有的分组转发给交换结点D。

3)网络中的其他结点收到分组后,类似地转发分组,直到分组最终到达主机B。

图片详情找不到图片(Image not found)

当分组正在某-链路上传送时,分组并不占用网络的其他部分资源。因为采用存储转发技术,资源是共享的,所以主机A在发送分组时,主机B也可同时向其他主机发送分组。

通过上面的例子,我们可以总结出数据报服务具有如下特点:

1)发送分组前不需要建立连接。发送方可随时发送分组,网络中的结点可随时接收分组。

2)网络尽最大努力交付,传输不保证可靠性,所以可能丢失;为每个分组独立地选择路由,转发的路径可能不同,因而分组不一定按序到达目的结点。

3)发送的分组中要包括发送端和接收端的完整地址,以便可以独立传输。

4)分组在交换结点存储转发时,需要排队等候处理,这会带来一定的时延。通过交换结点的通信量较大或网络发生拥塞时,这种时延会大大增加,交换结点还可根据情况丢弃部分分组。

5)网络具有冗余路径,当某个交换结点或一条链路出现故障时,可相应地更新转发表,寻找另一条路径转发分组,对故障的适应能力强。

6)存储转发的延时一般较小, 提高了网络的吞吐量。

7)收发双方不独占某条链路,资源利用率较高。

虚电路

虚电路方式试图将数据报方式与电路交换方式结合起来,充分发挥两种方法的优点,以达到最佳的数据交换效果。在分组发送之前,要求在发送方和接收方建立一条逻辑上相连的虚电路,并且连接一旦建立,就固定了虚电路所对应的物理路径。与电路交换类似,整个通信过程分为三个阶段:虚电路建立、数据传输与虚电路释放。

在虚电路方式中,端系统每次建立虚电路时,选择一个未用过的虚电路号分配给该虚电路,以区别于本系统中的其他虚电路。在传送数据时,每个数据分组不仅要有分组号、校验和等控制信息,还要有它要通过的虚电路号,以区别于其他虚电路上的分组。在虚电路网络中的每个结点上都维持一张虚电路表,表中的每项记录了一个打开的虚电路的信息,包括在接收链路和发送链路上的虚电路号、前一结点和下一结点的标识。数据的传输是双向进行的,上述信息是在虚电路的建立过程中确定的。

虚电路方式的工作原理如图2.6所示。

1)为进行数据传输,主机A与主机B之间先建立一条逻辑通路,主机A发出一个特殊的“呼叫请求”分组,该分组通过中间结点送往主机B,若主机B同意连接,则发送“呼叫应答”分组予以确认。

2)虚电路建立后,主机A就可向主机B发送数据分组。当然,主机B也可在该虚电路上向主机A发送数据。

3)传送结束后主机A通过发送“释放请求”分组来拆除虚电路,逐段断开整个连接。

通过上面的例子,可以总结出虚电路服务具有如下特点:

1)虚电路通信链路的建立和拆除需要时间开销,对交互式应用和小量的短分组情况显得很浪费,但对长时间、频繁的数据交换效率较高。

2)虚电路的路由选择体现在连接建立阶段,连接建立后,就确定了传输路径。

3)虚电路提供了可靠的通信功能,能保证每个分组正确且有序到达。此外,还可以对两个数据端点的流量进行控制,当接收方来不及接收数据时,可以通知发送方暂缓发送。

4)虚电路有一个致命的弱点,即当网络中的某个结点或某条链路出现故障而彻底失效时,所有经过该结点或该链路的虚电路将遭到破坏。

图片详情找不到图片(Image not found)

5)分组首部不包含目的地址,包含的是虚电路标识符,相对于数据报方式,其开销小。

虚电路之所以是“虚”的,是因为这条电路不是专用的,每个结点到其他结点之间的链路可能同时有若干虚电路通过,也可能同时与多个结点之间建立虚电路。每条虚电路支持特定的两个端系统之间的数据传输,两个端系统之间也可以有多条虚电路为不同的进程服务,这些虚电路的实际路由可能相同也可能不同。

注意,图2.6所示的数据传输过程是有确认的传输(由高层实现),主机B收到分组后要发回相应分组的确认。网络中的传输是否有确认与网络层提供的两种服务没有任何关系。

数据报服务和虚电路服务的比较见表2.1。

图片详情找不到图片(Image not found)

传输介质

双绞线、同轴电缆、光纤与无线传输介质

传输介质也称传输媒体,它是数据传输系统中发送设备和接收设备之间的物理通路。传输介质可分为 $\color{red}{\text{导向传输介质}}$ 和 $\color{red}{\text{非导向传输介质}}$ 。在导向传输介质中,电磁波被导向沿着固体媒介(铜线或光纤)传播,而非导向传输介质可以是 $\color{green}{\text{空气}}$ 、 $\color{green}{\text{真空}}$ 或 $\color{green}{\text{海水}}$ 等。

$\color{red}{\text{双绞线}}$

双绞线是最常用的古老传输介质,它由两根采用一定规则并排绞合的、相互绝缘的铜导线组成。绞合可以减少对相邻导线的电磁干扰。为了进一步提高抗电磁干扰的能力,可在双绞线的外面再加上一层,即用金属丝编织成的屏蔽层,这就是 $\color{green}{\text{屏蔽双绞线}}$ (STP)。无屏蔽层的双绞线称为 $\color{green}{\text{非屏蔽双绞线}}$ (UTP)。它们的结构如图2.7所示。

双绞线的价格便宜,是最常用的传输介质之一,在局域网和传统电话网中普遍使用。双绞线的带宽取决于铜线的粗细和传输的距离。模拟传输和数字传输都可使用双绞线,其通信距离一般为几千米到数十千米。距离太远时,对于模拟传输,要用放大器放大衰减的信号;对于数字传输,要用中继器将失真的信号整形。

图片详情找不到图片(Image not found)
$\color{red}{\text{同轴电缆}}$

同轴电缆由 $\color{green}{\text{内导体}}$ 、 $\color{green}{\text{绝缘层}}$ 、 $\color{green}{\text{网状编织屏蔽层}}$ 和 $\color{green}{\text{塑料外层}}$ 构成,如图2.8所示。按特性阻抗数值的不同,通常将同轴电缆分为两类:50$\Omega$同轴电缆和75$\Omega$同轴电缆。其中,50$\Omega$同轴电缆主要用于传送基带数字信号,又称 $\color{green}{\text{基带同轴电缆}}$ ,它在 $\color{green}{\text{局域网}}$ 中应用广泛;75$\Omega$同轴电缆主要用于传送宽带信号,又称 $\color{green}{\text{宽带同轴电缆}}$ ,主要用于 $\color{green}{\text{有线电视系统}}$ 。

由于外导体屏蔽层的作用,同轴电缆具有良好的抗干扰特性,被广泛用于传输较高速率的数据,其传输距离更远,但价格较双绞线贵。

图片详情找不到图片(Image not found)
$\color{red}{\text{光纤}}$

光纤通信就是利用光导纤维(简称光纤)传递光脉冲来进行通信。有光脉冲表示1,无光脉冲表示0。可见光的频率约为$10^8$MHz,因此光纤通信系统的带宽范围极大。

光纤主要由 $\color{green}{\text{纤芯}}$ 和 $\color{green}{\text{包层}}$ 构成(见图2.9),纤芯很细,其直径只有8至100$\mu$m,光波通过纤芯进行传导,包层较纤芯有较低的折射率。当光线从高折射率的介质射向低折射率的介质时,其折射角将大于入射角。因此,只要入射角大于某个临界角度,就会出现 $\color{green}{\text{全反射}}$ ,即光线碰到包层时就会折射回纤芯,这个过程不断重复,光也就沿着光纤传输下去。

图片详情找不到图片(Image not found)

利用光的全反射特性,可以将从不同角度入射的多条光线在一根光纤中传输,这种光纤称为 $\color{green}{\text{多模光纤}}$ (见图2.10),多模光纤的光源为 $\color{green}{\text{发光二极管}}$ 。光脉冲在多模光纤中传输时会逐渐展宽,造成失真,因此多模光纤只适合于 $\color{green}{\text{近距离传输}}$ 。

图片详情找不到图片(Image not found)

光纤的直径减小到只有一个光的波长时,光纤就像一根波导那样,可使光线一直向前传播,而不会产生多次反射,这样的光纤就是 $\color{green}{\text{单模光纤}}$ (见图2.11)。单模光纤的纤芯很细,直径只有几微米,制造成本较高。同时,单模光纤的光源为定向性很好的半导体激光器,因此单模光纤的衰减较小,可传输数公里甚至数十千米而不必采用中继器,适合远距离传输。

图片详情找不到图片(Image not found)

光纤不仅具有通信容量非常大的优点,还具有如下特点:

1) $\color{green}{\text{传输损耗小}}$ ,中继距离长,对远距离传输特别经济。

2) $\color{green}{\text{抗雷电和电磁干扰性能好}}$ 。这在有大电流脉冲干扰的环境下尤为重要。

3) $\color{green}{\text{无串音干扰}}$ ,保密性好,也不易被窃听或截取数据。

4) $\color{green}{\text{体积小}}$ ,重量轻。这在现有电缆管道已拥塞不堪的情况下特别有利。

无线传输介质

无线通信已广泛应用于移动电话领域,构成蜂窝式无线电话网。随着便携式计算机的出现,以及在军事、野外等特殊场合下移动通信联网的需要,促进了数字化移动通信的发展,现在无线局域网产品的应用已非常普遍。

(1) $\color{green}{\text{无线电波}}$

无线电波具有较强的 $\color{green}{\text{穿透能力}}$ ,可以传输很长的距离,所以它被广泛应用于通信领域,如无线手机通信、计算机网络中的无线局域网(WLAN)等。因为无线电波使信号向 $\color{green}{\text{所有方向}}$ 散播,大大简化了通信连接,因此有效距离范围内的接收设备无须对准某个方向,就可与无线电波发射者进行通信连接,简化了通信连接。这也是无线电传输的最重要优点之一。

(2) $\color{green}{\text{微波、红外线和激光}}$

目前高带宽的无线通信主要使用三种技术:微波、红外线和激光。它们都需要发送方和接收方之间存在一条视线(Line-of-sight)通路,有很强的 $\color{green}{\text{方向性}}$ ,都沿直线传播,有时统称这三者为视线介质。不同的是,红外通信和激光通信把要传输的信号分别转换为各自的信号格式,即红外光信号和激光信号,再直接在空间中传播。

$\color{red}{\text{Q}}$:视线介质是什么?

微波通信的频率较高,频段范围也很宽,载波频率通常为2~40GHz,因而通信信道的容量大。例如,一个带宽为2MHz的频段可容纳500条语音线路,若用来传输数字信号,数据率可达数兆比特/秒。与通常的无线电波不同,微波通信的信号是沿直线传播的,因此在地面的传播距离有限,超过一定距离后就要用中继站来接力。

卫星通信利用地球同步卫星作为中继来转发微波信号,可以克服地面微波通信距离的限制。三颗相隔120°的同步卫星几乎能覆盖整个地球表面,因而基本能实现全球通信。卫星通信的优点是通信容量大、距离远、覆盖广,缺点是保密性差、端到端传播时延长。

物理层接口的特性

物理层考虑的是如何在连接到各种计算机的传输媒体上传输数据比特流,而不指具体的传输媒体。网络中的硬件设备和传输介质的种类繁多,通信方式也各不相同。物理层应尽可能屏蔽这些差异,让数据链路层感觉不到这些差异,使数据链路层只需考虑如何完成本层的协议和服务。
物理层的主要任务可以描述为确定与传输媒体的接口有关的一些特性:

1) $\color{red}{\text{机械特性}}$ 。指明接口所用接线器的 $\color{green}{\text{形状}}$ 和 $\color{green}{\text{尺寸}}$ 、 $\color{green}{\text{引脚数目}}$ 和 $\color{green}{\text{排列}}$ 、 $\color{green}{\text{固定}}$ 和 $\color{green}{\text{锁定装置}}$ 等。

2) $\color{red}{\text{电气特性}}$ 。指明在接口电缆的各条线上出现的 $\color{green}{\text{电压的范围}}$ 。

3) $\color{red}{\text{功能特性}}$ 。指明某条线上出现的某一电平的电压表示何种 $\color{green}{\text{意义}}$ 。

4) $\color{red}{\text{过程特性}}$ 。或称规程特性。指明对于不同功能的各种可能事件的 $\color{green}{\text{出现顺序}}$ 。常用的物理层接口标准有EIARS-232-C、ADSL和 SONET/SDH等。

物理层设备

中继器

中继器的主要功能是将信号整形并放大再转发出去,以消除信号经过一长段电缆后而产生的失真和衰减,使信号的波形和强度达到所需要的要求,进而扩大网络传输的距离。其原理是信号再生(而非简单地将衰减的信号放大)。中继器有两个端口,数据从一个端口输入,再从另一个端口发出。端口仅作用于信号的电气部分,而不管是否有错误数据或不适于网段的数据。

中继器是用来扩大网络规模的最简单廉价的互联设备。中继器两端的网络部分是 $\color{green}{\text{网段}}$ 而不是 $\color{green}{\text{子网}}$ ,使用中继器连接的几个网段仍然是一个局域网。中继器若出现故障,对相邻两个网段的工作都将产生影响。由于中继器工作在物理层,因此它不能连接两个具有不同速率的局域网。

  • $\color{red}{\text{Q}}$: 一个局域网,网段,子网,都是在讲些啥

注意:如果某个网络设备具有存储转发的功能,那么可以认为它能连接两个不同的协议;如果该网络设备没有存储转发功能,那么认为它不能连接两个不同的协议。中继器没有 $\color{green}{\text{存储转发}}$ 功能,因此它不能连接两个速率不同的网段,中继器两端的网段一定要使用 $\color{green}{\text{同一个协议}}$ 。

从理论上讲,中继器的使用数目是无限的,网络因而也可以无限延长。但事实上这不可能,因为网络标准中对信号的延迟范围做了具体的规定,中继器只能在此规定范围内进行有效的工作,否则会引起网络故障。例如,在采用粗同轴电缆的10BASE5 以太网规范中,互相串联的 $\color{green}{\text{中继器}}$ 的个数不能超过 $\color{green}{\text{4}}$ 个,而且用4个中继器串联的 $\color{green}{\text{5}}$ 段 $\color{green}{\text{通信介质}}$ 中只有 $\color{green}{\text{3}}$ 段可以挂接 $\color{green}{\text{计算机}}$ ,其余两段只能用作扩展通信范围的链路段,不能挂接计算机。这就是所谓的“5-4-3规则”。

注意:放大器和中继器都起放大作用,只不过 $\color{red}{\text{放大器}}$ 放大的是 $\color{green}{\text{模拟信号}}$ ,原理是将衰减的信号放大,而 $\color{red}{\text{中继器}}$ 放大的是 $\color{green}{\text{数字信号}}$ ,原理是将衰减的信号整形再生。

集线器

$\color{red}{\text{集线器}}$ (Hub)实质上是一个 $\color{green}{\text{多端口}}$ 的中继器。当Hub 工作时,一个端口接收到数据信号后,由于信号在从端口到Hub 的传输过程中已有衰减,所以Hub便将该信号进行整形放大,使之再生(恢复)到发送时的状态,紧接着转发到其他所有(除输入端口外)处于工作状态的端口。如果同时有两个或多个端口输入,那么输出时会发生冲突,致使这些数据都无效。从 Hub的工作方式可以看出,它在网络中只起信号放大和转发作用,目的是扩大网络的传输范围,而不具备信号的定向传送能力,即信号传输的方向是固定的,是一个标准的 $\color{green}{\text{共享式设备}}$ 。

Hub主要使用双绞线组建共享网络,是从服务器连接到桌面的最经济方案。在交换式网络中,Hub直接与交换机相连,将交换机端口的数据送到桌面上。使用Hub组网灵活,它把所有结点的通信集中在以其为中心的结点上,对结点相连的工作站进行集中管理,不让出问题的工作站影响整个网络的正常运行,并且用户的加入和退出也很自由。由Hub组成的网络是共享式网络,但逻辑上仍是一个 $\color{green}{\text{总线网}}$ 。Hub的每个端口连接的网络部分是同一个网络的不同网段,同时Hub也只能在半双工状态下工作,网络的吞吐率因而受到限制。

注意:多台计算机必然会发生同时通信的情形,因此集线器不能分割冲突域,所有集线器的端口都属于同一个 $\color{green}{\text{冲突域}}$ 。集线器在一个时钟周期中只能传输一组信息,如果一台集线器连接的机器数目较多,且多台机器经常需要同时通信,那么将导致信息碰撞,使得集线器的工作效率很差。比如,一个带宽为10Mb/s的集线器上连接了8台计算机,当这8台计算机同时工作时,每台计算机真正所拥有的带宽为10/8Mb/s = 1.25Mb/s。

本章小结及疑难点

传输媒体是物理层吗?传输媒体和物理层的主要区别是什么?

传输媒体并不是物理层。由于传输媒体在物理层的下面,而物理层是体系结构的第一层,因此有时称传输媒体为0层。在传输媒体中传输的是信号,但传输媒体并不知道所传输的信号代表什么。也就是说,传输媒体不知道所传输的信号什么时候是1什么时候是0。但物理层由于规定了电气特性,因此能够识别所传送的比特流。图2.12描述了上述概念。

图片详情找不到图片(Image not found)

什么是基带传输、频带传输和宽带传输?三者的区别是什么?

在计算机内部或在相邻设备之间近距离传输时,可以不经过调制就在信道上直接进行的传输方式称为 $\color{green}{\text{基带传输}}$ 。它通常用于局域网。数字基带传输就是在信道中直接传输数字信号,且传输媒体的整个带宽都被基带信号占用,双向地传输信息。最简单的方法是用两个高低电平来表示二.进制数字,常用的编码方法有不归零编码和曼彻斯特编码。例如,要传输1010,低电平代表0,高电平代表1,那么在基带传输下,1010需要向通信线路传输(高、低、高、低电平)。用数字信号对特定频率的载波进行调制(数字调制),将其变成适合于传送的信号后再进行传输,这种传输方式就是频带传输。远距离传输或无线传输时,数字信号必须用频带传输技术进行传输。利用频带传输,不仅解决了电话系统传输数字信号的问题,而且可以实现多路复用,进而提高传输信道的利用率。同样传输1010,经过调制,一个码元对应4个二进制位,假设码元A代表1010,那么在模拟信道上传输码元A就相当于传输了1010,这就是频带传输。

借助频带传输,可将链路容量分解成两个或多个信道,每个信道可以携带不同的信号,这就是 $\color{green}{\text{宽带传输}}$ 。宽带传输中所有的信道能同时互不干扰地发送信号,链路容量大大增加。比如把信道进行频分复用,划分为2条互不相关的子信道,分别在两条子信道上同时进行频带传输,链路容量就大大增加了,这就是宽带传输。

如何理解同步和异步?什么是同步通信和异步通信?

在计算机网络中,同步(Synchronous)的意思很广泛,没有统一的定义。例如,协议的三个要素之一就是“同步”。在网络编程中常提到的“同步”则主要指某函数的执行方式,即函数调用者需等待函数执行完后才能进入下一步。异步(Asynchronous)可简单地理解为“非同步”。

在数据通信中,同步通信与异步通信区别较大。

同步通信的通信双方必须先建立同步,即双方的时钟要调整到同一个频率。收发双方不停地发送和接收连续的同步比特流。主要有两种同步方式:一种是全网同步,即用一个非常精确的主时钟对全网所有结点上的时钟进行同步;另一种是准同步,即各结点的时钟之间允许有微小的误差,然后采用其他措施实现同步传输。同步通信数据率较高,但实现的代价也较高。

异步通信在发送字符时,所发送的字符之间的时间间隔可以是任意的,但接收端必须时刻做好接收的准备。发送端可以在任意时刻开始发送字符,因此必须在每个字符开始和结束的地方加上标志,即开始位和停止位,以便使接收端能够正确地将每个字符接收下来。异步通信也可以帧作为发送的单位。这时,帧的首部和尾部必须设有一些特殊的比特组合,使得接收端能够找出一帧的开始(即帧定界)。异步通信的通信设备简单、便宜,但传输效率较低(因为标志的开销所占比例较大)。图2.13给出了以字符、帧为单位的异步通信示意图。

图片详情找不到图片(Image not found)

奈氏准则和香农定理的主要区别是什么?这两个定理对数据通信的意义是什么?

奈氏准则指出,码元传输的速率是受限的,不能任意提高,否则接收端就不能正确判定码元所携带的比特是1还是0(因为存在码元之间的相互干扰)。

奈氏准则是在理想条件下推导出来的。在实际条件下,最高码元传输速率要比理想条件下得出的数值小很多。电信技术人员的任务就是要在实际条件下,寻找出较好的传输码元波形,将比特转换为较为合适的传输信号。

需要注意的是,奈氏准则并未限制信息传输速率(b/s)。要提高信息传输速率,就必须使每个传输的码元能够代表许多比特的信息,这就需要有很好的编码技术。但码元所载的比特数确定后,信道的极限数据率也就确定了。

香农定理给出了信息传输速率的极限,即对于一定的传输带宽(单位为Hz)和一定的信噪比,信息传输速率的上限就确定了,这个极限是不能突破的。要想提高信息传输速率,要么设法提高传输线路的带宽,要么设法提高所传信道的信噪比,此外没有其他任何办法。

香农定理告诉我们,若要得到无限大的信息传输速率,只有两个办法:要么使用无限大的传输带宽(这显然不可能),要么使信号的信噪比无限大,即采用没有噪声的传输信道或使用无限大的发送功率(显然这也不可能)。注意,奈氏准则和香农定理中“带宽”的单位都是Hz。

信噪比为S/N,为什么还要取对数10$log_{10}(S/N)$?

1)数字形式表示,即一般数值。如噪声功率为1,信号功率为100,信噪比为100/1 = 100。

2)以分贝形式表示,同样还是上面这些数字,以分贝形式表示的信噪比为10log1o(S/N) =10$log_{10}100$ = 20 dB

两者的区别在于,前者(数值)是没有单位的,后者必须加dB,代表分贝。两者数值上等价。采用分贝表示的原因是:很多时候,信号要比噪声强得多,比如信号比噪声强10亿倍,如果用数值表示的话,那么1后面有9个0,很容易丢失一个0。如果用分贝表示,那么仅为90dB,因此要简单得多,而且不容易出错。分贝对于表示特别大或特别小的数值极为有利,这种表示方式在电子通信领域用途很广。

比特率和波特率和数据传输速率的区别

$\color{red}{\text{比特率}}$ (bit rate)又称传信率、信息传输速率(简称信息速率,information rate)。其定义是:通信线路(或系统)单位时间(每秒)内传输的信息量,即每秒能传输的二进制位数,通常用Rb表示,其单位是比特/秒(bit/s或b/s,英文缩略语为bps)。

$\color{red}{\text{波特率}}$ (Baud rate)又称传码率、码元传输速率(简称码元速率)、信号传输速率(简称信号速率,signaling rate)或调制速率。其定义是:通信线路(或系统)单位时间(每秒)内传输的码元( $\color{green}{\text{脉冲}}$ )个数;

$\color{red}{\text{数据传输率}}$ (data transfer rate)又称数据传输速率、数据传送率。其定义是:通信线路(或系统)单位时间(每秒)内传输的字符个数;或者单位时间(每秒)内传输的码组(字块)数或比特数。其单位是字符/秒;或者码组/秒、比特/秒(可见,当数据传输率用 $\color{green}{\text{“bit/s”}}$ 作单位时,即等于 $\color{green}{\text{比特率}}$ )。

参考文献

MISC

通信领域的k,进位是1000

电路交换和分组交换的对比
  • 可以理解为赛车比赛,有十辆车,一个安全检车员匀速检查每辆车主的安全性,如果等10辆车都检查完了,再一起发车,检查完的车也要和没检查完的一起等到所有都检查完才能走;但检查一部车,发一部车,就不存在这样的阻塞(好像哪里不对-)
  • 配合计组的多通道内存传输的图,理解时间重叠

参考习题

电路交换和分组交换的对比找不到图片(Image not found)

数据链路层

【考纲内容】
(一)数据链路层的功能

(二)组帧

(三)差错控制

检错编码;纠错编码

(四)流量控制与可靠传输机制

流量控制、可靠传输与滑动窗口机制;停止-等待协议

后退N帧协议(GBN);选择重传协议(SR)

(五)介质访问控制

1.信道划分

频分多路复用、时分多路复用、波分多路复用、码分多路复用的概念和基本原理

2.随机访问

ALOHA协议;CSMA协议;CSMA/CD协议;CSMA/CA协议

3.轮询访问:令牌传递协议

(六)局域网
局域网的基本概念与体系结构;以太网与IEEE 802.3

IEEE 802.11;令牌环网的基本原理(2022考纲已删除) $\color{red}{\text{无线局域网(2022新增)}}$

$\color{red}{\text{VLAN基本概念与原理(2022新增)}}$

(七)广域网

广域网的基本概念;PPP协议;HDLC协议(2022考纲已删除)

(八)数据链路层设备

网桥的概念及其基本原理(2022考纲已删除);局域网交换机及其工作原理

【复习提示】

本章是历年考查的重点。要求在了解数据链路层基本概念和功能的基础上,重点掌握滑动窗口机制、三种可靠传输协议、各种 MAC协议、HDLC协议和PPP协议,特别是CSMA/CD协议和以太网帧格式,以及局域网的争用期和最小帧长的概念、二进制指数退避算法。此外,中继器、网卡、集线器、网桥和局域网交换机的原理及区别也要重点掌握。

数据链路层的功能

数据链路层在物理层提供服务的基础上向网络层提供服务,其主要作用是加强物理层传输原始比特流的功能,将物理层提供的可能出错的物理连接改造为 $\color{green}{\text{逻辑上无差错}}$ 的数据链路,使之对网络层表现为一条无差错的链路。下面具体介绍数据链路层的功能。

为网络层提供服务

对网络层而言,数据链路层的基本任务是将源机器中来自网络层的数据传输到目标机器的网络层。数据链路层通常可为网络层提供如下服务:

1) $\color{green}{\text{无确认的无连接服务}}$ 。源机器发送数据帧时不需先建立链路连接,目的机器收到数据帧时不需发回确认。对丢失的帧,数据链路层不负责重发而交给上层处理。适用于实时通信或误码率较低的通信信道,如以太网。

2) $\color{green}{\text{有确认的无连接服务}}$ 。源机器发送数据帧时不需先建立链路连接,但目的机器收到数据帧时必须发回确认。源机器在所规定的时间内未收到确定信号时,就重传丢失的帧,以提高传输的可靠性。该服务适用于误码率较高的通信信道,如无线通信。

3) $\color{green}{\text{有确认的面向连接服务}}$ 。帧传输过程分为三个阶段:建立数据链路、传输帧、释放数据链路。目的机器对收到的每一帧都要给出确认,源机器收到确认后才能发送下一-帧,因而该服务的可靠性最高。该服务适用于通信要求(可靠性、实时性)较高的场合。注意:有连接就一定要有确认,即不存在无确认的面向连接的服务。

链路管理

数据链路层连接的 $\color{green}{\text{建立}}$ 、 $\color{green}{\text{维持}}$ 和 $\color{green}{\text{释放}}$ 过程称为 $\color{red}{\text{链路管理}}$ ,它主要用于面向连接的服务。链路两端的结点要进行通信,必须首先确认对方已处于就绪状态,并交换一些必要的信息以对帧序号初始化,然后才能建立连接,在传输过程中则要能维持连接,而在传输完毕后要释放该连接。在多个站点共享同一物理信道的情况下(如在局域网中)如何在要求通信的站点间分配和管理信道也属于数据链路层管理的范畴。

帧定界、帧同步与透明传输

两台主机之间传输信息时,必须将网络层的分组封装成帧,以帧的格式进行传送。将一段数据的前后分别添加 $\color{green}{\text{首部}}$ 和 $\color{green}{\text{尾部}}$ ,就构成了 $\color{red}{\text{帧}}$ 。因此,帧长等于数据部分的长度加上首部和尾部的长度。首部和尾部中含有很多控制信息,它们的一个重要作用是确定帧的界限,即 $\color{green}{\text{帧定界}}$ 。而帧同步指的是接收方应能从接收到的二进制比特流中区分出帧的起始与终止。如在HDLC协议中,用标识位F (01111110)来标识帧的开始和结束。通信过程中,检测到帧标识位F即认为是帧的开始,然后一旦检测到帧标识位F即表示帧的结束。HDLC标准帧格式如图3.1所示。为了提高帧的传输效率,应当使帧的数据部分的长度尽可能地大于首部和尾部的长度,但每种数据链路层协议都规定了帧的数据部分的长度上限— $\color{green}{\text{最大传送单元}}$ (MTU)。

图3.1 HDLC标准帧格式找不到图片(Image not found)

如果在数据中恰好出现与帧定界符相同的比特组合(会误认为“传输结束”而丢弃后面的数据),那么就要采取有效的措施解决这个问题,即透明传输。更确切地说, $\color{red}{\text{透明传输}}$ 就是不管所传数据是什么样的比特组合,都应当能在链路上传送。

流量控制

由于收发双方各自的工作速率和缓存空间的差异,可能出现发送方的发送能力大于接收方的接收能力的现象,如若此时不适当限制发送方的发送速率(即链路上的信息流量),前面来不及接收的帧将会被后面不断发送来的帧“淹没”,造成帧的丢失而出错。因此,流量控制实际上就是限制发送方的数据流量,使其发送速率不超过接收方的接收能力。

这个过程需要通过某种反馈机制使发送方能够知道接收方是否能跟上自己,即需要有一些规则使得发送方知道在什么情况下可以接着发送下一帧,而在什么情况下必须暂停发送,以等待收到某种反馈信息后继续发送。

流量控制(见图3.2)并不是数据链路层特有的功能,许多高层协议中也提供此功能,只不过控制的对象不同而已。对于数据链路层来说,控制的是 $\color{green}{\text{相邻两结点}}$ 之间数据链路上的流量,而对于 $\color{red}{\text{运输层}}$ 来说,控制的则是从 $\color{green}{\text{源端}}$ 到 $\color{green}{\text{目的端}}$ 之间的流量。

图3.2数据链路层的流量控制找不到图片(Image not found)

差错控制

由于信道噪声等各种原因,帧在传输过程中可能会出现错误。用以使发送方确定接收方是否正确收到由其发送的数据的方法称为 $\color{green}{\text{差错控制}}$ 。通常,这些错误可分为位错和帧错。

位错指帧中某些位出现了差错。通常采用循环冗余校验(CRC)方式发现位错,通过 $\color{green}{\text{自动重传请求}}$ (Automatic Repeat reQuest,ARQ)方式来重传出错的帧。具体做法是:让发送方将要发送的数据帧附加一定的CRC冗余检错码一并发送,接收方则根据检错码对数据帧进行错误检测,若发现错误则丢弃,发送方超时重传该数据帧。这种差错控制方法称为ARQ法。ARQ法只需返回很少的控制信息就可有效地确认所发数据帧是否被正确接收。

帧错指帧的 $\color{green}{\text{丢失}}$ 、 $\color{green}{\text{重复}}$ 或 $\color{green}{\text{失序}}$ 等错误。在数据链路层引入定时器和编号机制,能保证每一帧最终都能有且仅有一次正确地交付给目的结点。

组帧

数据链路层之所以要把比特组合成帧为单位传输,是为了在出错时只重发出错的帧,而不必重发全部数据,从而提高效率。为了使接收方能正确地接收并检查所传输的帧,发送方必须依据一定的规则把网络层递交的分组封装成帧(称为组帧)。组帧主要解决帧定界、帧同步、透明传输等问题。通常有以下4种方法实现组帧。

注意:组帧时既要加首部,又要加尾部。原因是,在网络中信息是以帧为最小单位进行传输的,所以接收端要正确地接收帧,必须要清楚该帧在一串比特流中从哪里开始到哪里结束(因为接收端收到的是一串比特流,没有首部和尾部是不能正确区分帧的)。而分组(即IP数据报)仅是包含在帧中的数据部分(后面将详细讲解),所以不需要加尾部来定界。

字符计数法

如图3.3所示,字符计数法是指在 $\color{red}{\text{帧头部}}$ 使用一个 $\color{green}{\text{计数字段}}$ 来标明 $\color{green}{\text{帧内字符数}}$ 。目的结点的数据链路层收到字节计数值时,就知道后面跟随的字节数,从而可以确定帧结束的位置(计数字段提供的字节数包含自身所占用的一个字节)。

图3.3字符计数法找不到图片(Image not found)

这种方法最大的问题在于如果计数字段出错,即失去了帧边界划分的依据,那么接收方就无法判断所传输帧的结束位和下一帧的开始位,收发双方将失去同步,从而造成灾难性后果。

字符填充的首尾定界符法

字符填充法使用特定字符来定界一帧的开始与结束,在图3.4的例子中,控制字符SOH放在帧的最前面,表示帧的首部开始,控制字符EOT表示帧的结束。为了使信息位中出现的特殊字符不被误判为帧的首尾定界符,可在特殊字符前面填充一个转义字符(ESC)来加以区分(注意,转义字符是ASCII码中的控制字符,是一个字符,而非“E””S”“C”三个字符的组合),以实现数据的透明传输。接收方收到转义字符后,就知道其后面紧跟的是数据信息,而不是控制信息。

如图3.4(a)所示的字符帧,帧的数据段中出现EOT或SOH字符,发送方在每个EOT或SOH字符前再插入一个ESC字符[ 见图3.4(b) ],接收方收到数据后会自己删除这个插入的ESC字符,结果仍得到原来的数据[ 见图3.4(c) ]。这也正是字符填充法名称的 $\color{red}{\text{由来}}$ 。如果转义字符ESC $\color{green}{\text{也}}$ 出现在数据中,那么解决方法仍是在转义字符前 $\color{green}{\text{插入}}$ 一个转义字符。

图3.4字符填充法找不到图片(Image not found)

零比特填充的首尾标志法

如图3.5所示,零比特填充法允许数据帧包含任意个数的比特,也允许每个字符的编码包含任意个数的比特。它使用一个特定的比特模式,即 01111110来标志一帧的开始和结束。为了不使信息位中出现的比特流01111110被误判为帧的首尾标志,发送方的数据链路层在信息位中遇到5个连续的“1”时,将自动在其后插入一个“0”,而接收方做该过程的逆操作,即每收到5个连续的“1”时,自动删除后面紧跟的“0”,以恢复原信息。

图片详情找不到图片(Image not found)

零比特填充法很容易由硬件来实现,性能优于字符填充法。

  • $\color{red}{\text{Q}}$ :怎么知道现在连续的1是在信息位中,还是结尾字符呢

违规编码法

在物理层进行比特编码时,通常采用违规编码法。例如,曼彻斯特编码方法将数据比特编码成“高-低”电平对,将数据比特“0”编码成“低-高”电平对,而“高-高”电平对和“低-低”电平对在数据比特中是违规的(即没有采用)。可以借用这些违规编码序列来定界帧的起始和终止。局域网IEEE 802标准就采用了这种方法。

违规编码法不需要采用任何填充技术,便能实现数据传输的透明性,但它只适用于采用 $\color{green}{\text{冗余编码}}$ 的特殊编码环境。

由于字节计数法中计数字段的脆弱性和字符填充法实现上的复杂性与不兼容性,目前较常用的组帧方法是比特填充法和违规编码法。

差错控制

实际通信链路都不是理想的,比特在传输过程中可能会产生差错,1可能会变成0,0也可能会变成1,这就是比特差错。比特差错是传输差错中的一种,本节仅讨论比特差错。

通常利用编码技术进行差错控制,主要有两类: $\color{green}{\text{自动重传请求ARQ}}$ 和 $\color{green}{\text{前向纠错FEC}}$ 。在ARQ方式中,接收端检测出差错时,就设法通知发送端重发,直到接收到正确的码字为止。在FEC方式中,接收端不但能发现差错,而且能确定比特串的错误位置,从而加以纠正。因此,差错控制又可分为检错编码和纠错编码。

检错编码

检错编码都采用冗余编码技术,其核心思想是在有效数据(信息位)被发送前,先按某种关系附加一定的冗余位,构成一个符合某一规则的码字后再发送。当要发送的有效数据变化时,相应的冗余位也随之变化,使得码字遵从不变的规则。接收端根据收到的码字是否仍符合原规则来判断是否出错。常见的检错编码有奇偶校验码和循环冗余码。

注意:建议结合《计算机组成原理考研复习指导》第2章有关校验码的内容对比复习。

奇偶校验码

奇偶校验码是奇校验码和偶校验码的统称,是一种最基本的检错码。它由 $n$ -1位信息元和1位校验元组成,如果是奇校验码,那么在附加一个校验元后,码长为 $n$ 的码字中“1”的个数为奇数;如果是偶校验码,那么在附加一个校验元以后,码长为 $n$ 的码字中“1”的个数为偶数。它只能检测奇数位的出错情况,但并不知道哪些位错了,也不能发现偶数位的出错情况。

循环冗余码
图片详情找不到图片(Image not found)

通过循环冗余码(CRC)的检错技术,数据链路层做到了对帧的无差错接收。也就是说,凡是接收端数据链路层接收的帧,我们都认为这些帧在传输过程中没有产生差错;而接收端丢弃的帧虽然也收到了,但最终因为有差错而被丢弃,即未被接受。

注意:循环冗余码(CRC)是具有 $\color{green}{\text{纠错功能}}$ 的,只是 $\color{green}{\text{数据链路层}}$ 仅使用了它的 $\color{green}{\text{检错功能}}$ ,检测到帧出错则直接丢弃,因此本节将CRC放在检错编码中介绍。

  • 重点在不 $\color{green}{\text{借位}}$ , $\color{green}{\text{异或}}$

纠错编码

在数据通信的过程中,解决差错问题的一种方法是在每个要发送的数据块上附加足够的冗余信息,使接收方能够推导出发送方实际送出的应该是什么样的比特串。最常见的纠错编码是 $\color{green}{\text{海明码}}$ ,其实现原理是在有效信息位中加入几个校验位形成海明码,并把海明码的每个二进制位分配到几个奇偶校验组中。当某一位出错后,就会引起有关的几个校验位的值发生变化,这不但可以发现错位,而且能指出错位的位置,为自动纠错提供依据。

现以数据码1010为例讲述海明码的编码原理和过程。

海明码的编码原理和过程找不到图片(Image not found)

流量控制与可靠传输机制

流量控制、可靠传输与滑动窗口机制

流量控制涉及对链路上的帧的发送速率的控制,以使接收方有足够的缓冲空间来接收每个帧。例如,在面向帧的自动重传请求系统中,当待确认帧的数量增加时,有可能超出缓冲存储空间而造成过载。流量控制的基本方法是由接收方控制发送方发送数据的速率,常见的方式有两种:停止-等待协议和滑动窗口协议。

停止-等待流量控制基本原理

发送方每发送一帧,都要等待接收方的应答信号,之后才能发送下一帧;接收方每接收一帧,都要反馈一个应答信号,表示可接收下一帧,如果接收方不反馈应答信号,那么发送方必须一直等待。每次只允许发送一帧,然后就陷入等待接收方确认信息的过程中,因而传输效率很低。

滑动窗口流量控制基本原理

在任意时刻,发送方都维持一组连续的允许发送的帧的序号,称为 $\color{green}{\text{发送窗口}}$ ﹔同时接收方也维持一组连续的允许接收帧的序号,称为 $\color{green}{\text{接收窗口}}$ 。发送窗口用来对发送方进行流量控制,而发送窗口的大小W代表在还未收到对方确认信息的情况下发送方最多还可以发送多少个数据帧。同理,在接收端设置接收窗口是为了控制可以接收哪些数据帧和不可以接收哪些帧。在接收方,只有收到的数据帧的序号落入接收窗口内时,才允许将该数据帧收下。若接收到的数据帧落在接收窗口之 $\color{green}{\text{外}}$ ,则 $\color{green}{\text{一律}}$ 将其 $\color{green}{\text{丢弃}}$ 。

图3.7给出了发送窗口的工作原理,图3.8给出了接收窗口的工作原理。

图3.7发送窗口的工作原理找不到图片(Image not found)
图3.8接收窗口的工作原理找不到图片(Image not found)

发送端每收到一个确认帧,发送窗口就向前滑动一个帧的位置,当发送窗口内没有可以发送的帧(即窗口内的帧全部是已发送但未收到确认的帧)时,发送方就会停止发送,直到收到接收方发送的确认帧使窗口移动,窗口内有可以发送的帧后,才开始继续发送。

接收端收到数据帧后,将窗口向前移一个位置,并发回确认帧,若收到的数据帧落在接收窗口之外,则一律丢弃。

滑动窗口有以下重要特性:

1)只有接收窗口向前滑动(同时接收方发送了确认帧)时,发送窗口才有可能(只有发送方收到确认帧后才一定)向前 $\color{green}{\text{滑动}}$ 。

2)从滑动窗口的概念看,停止-等待协议、后退N帧协议和选择重传协议只在发送窗口大小与接收窗口大小上有所差别:

$\color{green}{\text{停止-等待协议}}$ :发送窗口大小= 1,接收窗口大小=1。

$\color{green}{\text{后退N帧协议}}$ :发送窗口大小>1,接收窗口大小=1。

$\color{green}{\text{选择重传协议}}$ :发送窗口大小>1,接收窗口大小>1。

3)接收窗口的大小为1时,可保证帧的 $\color{green}{\text{有序}}$ 接收。

4)数据链路层的滑动窗口协议中,窗口的大小在传输过程中是 $\color{green}{\text{固定的}}$ (注意与 $\color{red}{\text{第5章}}$ 传输层的滑动窗口协议的区别)。

可靠传输机制

数据链路层的可靠传输通常使用 $\color{green}{\text{确认}}$ 和 $\color{green}{\text{超时重传}}$ 两种机制来完成。确认是一种无数据的控制帧,这种控制帧使得接收方可以让发送方知道哪些内容被正确接收。有些情况下为了提高传输效率,将确认捎带在一个回复帧中,称为 $\color{green}{\text{捎带确认}}$ 。超时重传是指发送方在发送某个数据帧后就开启一个计时器,在一定时间内如果没有得到发送的数据帧的确认帧,那么就重新发送该数据帧,直到发送成功为止。

自动重传请求(Auto Repeat reQuest,ARQ)通过接收方请求发送方重传出错的数据帧来恢复出错的帧,是通信中用于处理信道所带来差错的方法之一。传统 $\color{red}{\text{自动重传请求}}$ 分为三种,即 $\color{green}{\text{停止-等待}}$ (Stop-and-Wait)ARQ、 $\color{green}{\text{后退N帧}}$ (Go-Back-N)ARQ和 $\color{green}{\text{选择性重传}}$ (Selective Repeat)ARQ。后两种协议是滑动窗口技术与请求重发技术的结合,由于窗口尺寸开到足够大时,帧在线路上可以连续地流动,因此又称其为 $\color{green}{\text{连续ARQ协议}}$ 。注意,在数据链路层中 $\color{green}{\text{流量控制机制}}$ 和 $\color{green}{\text{可靠传输机制}}$ 是 $\color{red}{\text{交织在一起}}$ 的。

注意:现有的实际有线网络的数据链路层很少采用可靠传输(不同于OSI参考模型的思路),因此大多数教材把这部分内容放在第5章运输层中讨论,本书按照408考纲,不做变动。

单帧滑动窗口与停止-等待协议

在停止-等待协议中,源站发送单个帧后必须等待确认,在目的站的回答到达源站之前,源站不能发送其他的数据帧。从滑动窗口机制的角度看,停止-等待协议相当于发送窗口和接收窗口大小均为1的滑动窗口协议。

在停止-等待协议中,除数据 $\color{green}{\text{帧丢失}}$ 外,还可能出现以下两种差错。

到达目的站的 $\color{green}{\text{帧}}$ 可能已遭 $\color{green}{\text{破坏}}$ ,接收站利用前面讨论过的差错检测技术检出后,简单地将该帧丢弃。为了对付这种可能发生的情况,源站装备了计时器。在一个帧发送之后,源站等待确认,如果在计时器计满时仍未收到确认,那么再次发送相同的帧。如此重复,直到该数据帧无错误地到达为止。

另一种可能的差错是数据帧正确而 $\color{green}{\text{确认帧被破坏}}$ ,此时接收方已收到正确的数据帧,但发送方收不到确认帧,因此发送方会重传已被接收的数据帧,接收方收到同样的数据帧时会丢弃该帧,并重传一个该帧对应的确认帧。发送的帧交替地用0和1来标识,肯定确认分别用ACK0和 ACK1来表示,收到的确认有误时,重传已发送的帧。对于停止-等待协议,由于每发送一个数据帧就停止并等待,因此用1bit 来编号就已足够。在停止-等待协议中,若连续出现相同发送序号的数据帧,表明发送端进行了超时重传。连续出现相同序号的确认帧时,表明接收端收到了重复帧。

此外,为了超时重发和判定重复帧的需要,发送方和接收方都须设置一个帧缓冲区。发送端在发送完数据帧时,必须在其发送缓存中保留此数据帧的副本,这样才能在出差错时进行重传。只有在收到对方发来的确认帧ACK时,方可清除此副本。

由图3.9可知,停止-等待协议通信信道的利用率很低。为了克服这一缺点,就产生了另外两种协议,即后退N帧协议和选择重传协议。

图3.9 停止-等待协议中数据帧和确认帧的发送时间关系找不到图片(Image not found)

多帧滑动窗口与后退N帧协议(GBN)

在后退N帧式ARQ中,发送方无须在收到上一个帧的ACK后才能开始发送下一帧,而是可以连续发送帧。当接收方检测出失序的信息帧后,要求发送方重发最后一个正确接收的信息帧之后的所有未被确认的帧;或者当发送方发送了N个帧后,若发现该N个帧的前一个帧在计时器超时后仍未返回其确认信息,则该帧被判为出错或丢失,此时发送方就不得不重传该出错帧及随后的N个帧。换句话说,接收方只允许 $\color{green}{\text{按顺序接收帧}}$ 。

如图3.10 所示,源站向目的站发送数据帧。当源站发完0号帧后,可以继续发送后续的1号帧、2号帧等。源站每发送完一帧就要为该帧设置超时计时器。由于连续发送了许多帧,所以确认帧必须要指明是对哪一帧进行确认。为了减少开销,GBN协议还规定接收端不一定每收到一个正确的数据帧就必须立即发回一个确认帧,而可以在连续收到好几个正确的数据帧后,才对最后一个数据帧发确认信息,或者可在自己有数据要发送时才将对以前正确收到的帧加以 $\color{green}{\text{捎带确认}}$ 。这就是说,对某一数据帧的确认就表明该数据帧和 $\color{green}{\text{此前所有}}$ 的数据帧均已 $\color{green}{\text{正确无误}}$ 地收到。在图3.10中,ACK $n$ 表示对第 $n$ 号帧的确认,表示接收方已正确收到第 $n$ 号帧及以前的所有帧,下一次期望收到第 $n+1$ 号帧(也可能是第0号帧)。接收端只按序接收数据帧。虽然在有差错的2号帧之后接着又收到了正确的6个数据帧,但接收端都必须将这些帧丢弃。接收端虽然丢弃了这些不按序的无差错帧,但应 $\color{green}{\text{重复发送}}$ 已发送的 $\color{green}{\text{最后一个确认帧}}$ ACK1(这是为了防止已发送的确认帧ACK1丢失)。

后退N帧协议的接收窗口为1,可以保证按序接收数据帧。若采用 $n$ 比特对帧编号,则其 $\color{red}{\text{发送窗口的尺寸}}$ $W_T$ 应满足 $1 \leq W_T \leq 2^n-1$ 。若 $\color{red}{\text{发送窗口的尺寸}}$ 大于 $2^n-1$ ,则会造成接收方无法分辨新帧和旧帧(请参考本章疑难点3)。

从图3.10不难看出,后退N帧协议一方面因连续发送数据帧而提高了信道的利用率,另一方面在重传时又必须把原来已传送正确的数据帧进行重传(仅因这些数据帧的前面有一个数据帧出了错),这种做法又使传送效率降低。由此可见,若信道的传输质量很差导致误码率较大时,后退N帧协议不一定优于停止-等待协议。

图3.10 GBN协议的工作原理:对出错数据帧的处理找不到图片(Image not found)

多帧滑动窗口与选择重传协议(SR)

为进一步提高信道的利用率,可设法只重传出现差错的数据帧或计时器超时的数据帧,但此时必须加大接收窗口,以便先收下发送序号不连续但仍处在接收窗口中的那些数据帧。等到所缺序号的数据帧收到后再一并送交主机。这就是选择重传ARQ协议。

在选择重传协议中,每个发送缓冲区对应一个计时器,当计时器超时时,缓冲区的帧就会重传。另外,该协议使用了比上述其他协议更有效的差错处理策略,即一旦接收方怀疑帧出错,就会发一个否定帧NAK给发送方,要求发送方对NAK中指定的帧进行重传,如图3.11所示。

选择重传协议的接收窗口尺寸 $WR$ 和发送窗口尺寸 $W_T$ 都大于1,一次可以发送或接收多个帧。若采用 $n$ 比特对帧编号,为了保证接收方向前移动窗口后,新窗口序号与旧窗口序号没有重叠部分,需要满足条件:接收窗口 $W_R$ +发送窗口 $W_T \leq 2^n$ 。假定仍然采用 $\color{green}{\text{累计确认}}$ 的方法,并且接收窗口 $W_R$ 显然不应超过发送窗口 $W_T$ (否则无意义),那么接收窗口尺寸不应超过序号范围的一半,即 $W_R \leq 2^{n-1}$ 。接收窗口为最大值时, $W{Tmax}$ = $W_{Rmax}=2^{(n-1)}$ 。需要提醒读者的是,一般情况下,在SR协议中,接收窗口的大小和发送窗口的大小是相同的。

图3.11选择重传协议找不到图片(Image not found)

选择重传协议可以避免重复传送那些本已正确到达接收端的数据帧,但在接收端要设置具有相当容量的缓冲区来暂存那些未按序正确收到的帧。接收端不能接收窗口下界以下或窗口上界以上的序号的帧,因此所需缓冲区的数目等于窗口的大小,而不是序号数目。

在往年统考真题中曾经出现过对“信道效率”“信道的吞吐率”等概念的考查,有些读者未接触过“通信原理”等相关的课程,可能对这些概念不太熟悉,在这里给读者补充一下。

信道的效率,也称信道利用率。可从不同的角度来定义 $\color{green}{\text{信道的效率}}$ ,这里给出一种从时间角度的定义:信道效率是对 $\color{green}{\text{发送方}}$ 而言的,是指发送方在一个 $\color{green}{\text{发送周期}}$ 的时间内, $\color{green}{\text{有效地}}$ 发送数据所需要的时间占整个发送周期的比率。

例如,发送方从开始发送数据到收到第一个确认帧为止,称为一个发送周期,设为T,发送方在这个周期内共发送L比特的数据,发送方的数据传输速率为C,则发送方用于发送有效数据的时间为L/C,在这种情况下,信道的利用率为(L/C)/T。

从上面的讨论可以发现,求信道的利用率主要是求周期时间T和有效数据发送时间L/C,在题目中,这两个量一般不会直接给出,需要读者根据题意自行计算。

$\color{green}{\text{信道吞吐率}}$ =信道利用率x发送方的发送速率。

本节习题有不少是关于信道利用率和信道吞吐率的,以帮助读者理解和记忆这两个概念。流量控制的三种滑动窗口协议的信道利用率是一个关键知识点,希望读者能结合习题,自行推导。

介质访问控制

介质访问控制所要完成的主要任务是,为使用介质的每个结点 $\color{green}{\text{隔离}}$ 来自同一信道上其他结点所传送的信号,以协调活动结点的传输。用来决定广播信道中信道分配的协议属于数据链路层的一个子层,称为 $\color{green}{\text{介质访问控制}}$ (Medium Access Control,MAC)子层。

图3.12是广播信道的通信方式,结点A、B、C、D、E共享广播信道,假设A要与C发生通信,B要与D发生通信,由于它们共用一条信道,如果不加控制,那么两对结点间的通信可能会因为互相干扰而失败。介质访问控制的内容是,采取一定的措施,使得两对结点之间的通信不会发生互相干扰的情况。

常见的 $\color{red}{\text{介质访问控制方法}}$ 有 $\color{green}{\text{信道划分介质访问控制}}$ 、 $\color{green}{\text{随机访问介质访问控制}}$ 和 $\color{green}{\text{轮询访问介质访问控制}}$ 。其中前者是静态划分信道的方法,而后两者是动态分配信道的方法。

图3.12广播信道的通信方式找不到图片(Image not found)

信道划分介质访问控制

信道划分介质访问控制将使用介质的每个设备与来自同一通信信道上的其他设备的通信隔离开来,把时域和频域资源合理地分配给网络上的设备。

下面介绍多路复用技术的概念。当传输介质的带宽超过传输单个信号所需的带宽时人们就通过在一条介质上同时携带多个传输信号的方法来提高传输系统的利用率,这就是所谓的多路复用,也是实现信道划分介质访问控制的途径。多路复用技术把多个信号组合在一条物理信道上进行传输,使多个计算机或终端设备共享信道资源,提高了信道的利用率。

采用多路复用技术可把多个输入通道的信息整合到一个复用通道中,在接收端把收到的信息分离出来并传送到对应的输出通道,如图3.13所示。

图3.13多路复用原理示意图找不到图片(Image not found)

信道划分的实质就是通过分时、分频、分码等方法把原来的一条广播信道,逻辑上分为几条用于两个结点之间通信的互不干扰的子信道,实际上就是把广播信道转变为点对点信道。

信道划分介质访问控制分为以下4种。

$\color{green}{\text{频分多路复用}}$ (FDM)

频分多路复用是一种将多路基带信号调制到不同频率载波上,再叠加形成一个复合信号的多路复用技术。在物理信道的可用带宽超过单个原始信号所需带宽的情况下,可将该物理信道的总带宽分割成若干与传输单个信号带宽相同(或略宽)的子信道,每个子信道传输一种信号,这就是频分多路复用,如图3.14所示。

每个子信道分配的带宽可不相同,但它们的总和必须不超过信道的总带宽。在实际应用中,为了防止子信道之间的干扰,相邻信道之间需要加入“保护频带”。

频分多路复用的优点在于充分利用了传输介质的带宽,系统效率较高;由于技术比较成熟,实现也较容易。

图3.14 频分多路复用原理示意图找不到图片(Image not found)
时分多路复用(TDM)
  • time-division multiplexing, TDM

时分多路复用是将一条物理信道按时间分成若干时间片,轮流地分配给多个信号使用。每个时间片由复用的一个信号占用,而不像 FDM那样,同一时间同时发送多路信号。这样,利用每个信号在时间上的交叉,就可以在一条物理信道上传输多个信号,如图3.15所示。

就某个时刻来看,时分多路复用信道上传送的仅是某一对设备之间的信号;就某段时间而言,传送的是按时间分割的多路复用信号。但由于计算机数据的突发性,一个用户对已经分配到的子信道的利用率一般不高。统计时分多路复用(STDM,又称异步时分多路复用)是TDM的一种改进,它采用STDM帧,STDM帧并不固定分配时隙,而按需动态地分配时隙,当终端有数据要传送时,才会分配到时间片,因此可以提高线路的利用率。例如,线路传输速率为8000b/s,4个用户的平均速率都为2000b/s,当采用TDM方式时,每个用户的最高速率为2000b/s,而在STDM方式下,每个用户的最高速率可达8000b/s。

图3.15时分多路复用原理示意图找不到图片(Image not found)
波分多路复用(WDM)

波分多路复用即光的频分多路复用,它在一根光纤中传输多种不同波长(频率)的光信号,由于波长(频率)不同,各路光信号互不干扰,最后再用波长分解复用器将各路波长分解出来。由于光波处于频谱的高频段,有很高的带宽,因而可以实现多路的波分复用,如图3.16所示。

图3.16 波分多路复用原理示意图找不到图片(Image not found)
码分多路复用(CDM)

码分多路复用是采用不同的编码来区分各路原始信号的一种复用方式。与FDM和TDM不同,它既共享信道的频率,又共享时间。下面举一个直观的例子来理解码分复用。

假设A站要向C站运输黄豆,B站要向C站运输绿豆,A与C、B与C之间有一条公共的道路,可以类比为广播信道,如图3.17所示。在频分复用方式下,公共道路被划分为两个牛道,分别提供给A到C的车和B到C的车行走,两类车可以同时行走,但只分到了公共车道的一半,因此频分复用(波分复用也一样)共享时间而不共享空间。在时分复用万式下,先让A到C的牛走一趟,再让B到C的车走一趟,两类车交替地占用公共车道。公共牛道没有划分,内此网千共享了空间,但不共享时间。码分复用与另外两种信道划分方式大为不同,在码分复用情况下,黄豆与绿豆放在同一辆车上运送,到达C后,由C站负责把车上的黄豆和绿豆分开。因此,黄豆和绿豆的运送,在码分复用的情况下,既共享了空间,也共享了时间。

图3.17共享信道的传输找不到图片(Image not found)

实际上,更常用的名词是 $\color{green}{\text{码分多址}}$ (Code Division Multiple Access,CDMA),其原理是每个比特时间再划分成m个短的时间槽,称为码片(Chip),通常m的值是64或128,下例中为简单起见,设m为8。每个站点被指派一个唯一的m位码片序列。发送1时,站点发送它的码片序列;发送0时,站点发送该码片序列的反码。当两个或多个站点同时发送时,各路数据在信道中线性相加。为从信道中分离出各路信号,要求各个站点的码片序列相互正交。

简单理解就是,A站向C站发出的信号用一个向量来表示,B站向C站发出的信号用另一个向量来表示,两个向量要求相互正交。向量中的分量,就是所谓的码片。

下面举例说明CDMA的原理

假如站点A的码片序列被指派为00011011,则A站发送00011011就表示发送比特1,发送11100100就表示发送比特0。为了方便,按惯例将码片中的0写为-1,将1写为+1,因此A站的码片序列是-1-1-1+1+1-1+1+1。

令向量S表示A站的码片向量,令T表示B站的码片向量。两个不同站的码片序列正交,即向量S和T的规格化内积(Inner Product)为0:

图片详情找不到图片(Image not found)

任何一个码片向量和该码片向量自身的规格化内积都是1,任何一个码片向量和该码片反码的向量的规格化内积是-1,如

图片详情找不到图片(Image not found)

令向量T为(-1-1+1-1+1+1+1-1)。

当A站向C站发送数据1时,就发送了向量(-1-1-1+1 +1-1+1 +1)。

当B站向C站发送数据0时,就发送了向量(+1+1-1 +1-1-1-1 +1)。两个向量到了公共信道上就进行叠加,实际上就是线性相加,得到

$\mathbf{S}$ - $\mathbf{T}$ =(0 0 -2 2 0 -2 0 2)

到达C站后,进行数据分离,如果要得到来自A站的数据,C站就必须知道A站的码片序列,让S与S–T进行规格化内积。根据叠加原理,其他站点的信号都在内积的结果中被过滤掉了,内积的相关项都是0,而只剩下A站发送的信号。得到

S $\cdot$ (S-T)= 1

所以A站发出的数据是1。同理,如果要得到来自B站的数据,那么

T $\cdot$ (S-T) = -1

因此从B站发送过来的信号向量是一个反码向量,代表0。

规格化内积是线性代数中的内容,它是在得到两个向量的内积后再除以向量的分量的个数。

码分多路复用技术具有频谱利用率高、抗干扰能力强、保密性强、语音质量好等优点,还可以减少投资和降低运行成本,主要用于无线通信系统,特别是移动通信系统。

随机访问介质访问控制

在随机访问协议中,不采用集中控制方式解决发送信息的次序问题,所有用户能根据自己的意愿随机地发送信息,占用信道全部速率。在总线形网络中,当有两个或多个用户同时发送信息时,就会产生帧的冲突(碰撞,即前面所说的相互干扰),导致所有冲突用户的发送均以失败告终。为了解决随机接入发生的碰撞,每个用户需要按照一定的规则反复地重传它的帧,直到该帧无碰撞地通过。这些规则就是随机访问介质访问控制协议,常用的协议有ALOHA协议、CSMA协议、CSMA/CD协议和 CSMA/CA 协议等,它们的核心思想都是:胜利者通过争用获得信道,从而获得信息的发送权。因此,随机访问介质访问控制协议又称 $\color{green}{\text{争用型协议}}$ 。

读者会发现,如果介质访问控制采用信道划分机制,那么结点之间的通信要么共享空间,要么共享时间,要么两者都共享;而如果采用随机访问控制机制,那么各结点之间的通信就可既不共享时间,也不共享空间。所以随机介质访问控制实质上是一种将 $\color{green}{\text{广播信道}}$ 转化为 $\color{green}{\text{点到点信道}}$ 的行为,如图3.18所示。

图3.18共享信道举例找不到图片(Image not found)
ALOHA协议

夏威夷大学早期研制的随机接入系统称为ALOHA,它是Additive Link On-line HAwaii system的缩写。ALOHA协议分为纯ALOHA协议和时隙ALOHA协议两种。

(1) $\color{green}{\text{纯ALOHA协议}}$

纯ALOHA协议的基本思想是,当网络中的任何一个站点需要发送数据时,可以不进行任何检测就发送数据。如果在一段时间内未收到确认,那么该站点就认为传输过程中发生了冲突。发送站点需要等待一段时间后再发送数据,直至发送成功。图3.19所示的模型不仅可代表总线形网络的情况,而且可以代表无线信道的情况。

图3.19ALOHA 协议的一般模型找不到图片(Image not found)

图3.20表示一个纯ALOHA协议的工作原理。每个站均自由地发送数据帧。为简化问题,不考虑由信道不良而产生的误码,并假定所有站发送的帧都是定长的,帧的长度不用比特而用发送这个帧所需的时间来表示,在图3.20中用 $T_0$ 表示这段时间。

在图3.20的例子中,当站1发送帧1时,其他站都未发送数据,所以站1的发送必定是成功的。但随后站2和站N-1发送的帧2和帧3在时间上重叠了一些(即发生了碰撞)。碰撞的结果是,碰撞双方(有时也可能是多方)所发送的数据出现了差错,因而都须进行重传。但是发生碰撞的各站并不能马上进行重传,因为这样做必然会继续发生碰撞。纯ALOHA系统采用的重传策略是让各站等待一段随机的时间,然后再进行重传。若再次发生碰撞,则需要再等待一段随机的时间,直到重传成功为止。图中其余一些帧的发送情况是帧4发送成功,而帧5和帧6发生碰撞。

图3.20纯ALOHA 协议的工作原理找不到图片(Image not found)

假设网络负载( $T_0$ 时间内所有站点发送成功的和未成功而重传的帧数)为G,则纯ALOHA网络的吞吐量( $T_0$ )时间内成功发送的平均帧数)为 $S=Ge^{-2G}$ 。当G=0.5时,S=0.5 $e^{-1}$ $\approx$ 0.184,这是吞吐量S可能达到的极大值。可见,纯ALOHA网络的吞吐量很低。为了克服这一缺点,人们在原始的纯ALOHA 协议的基础上进行改进,产生了时隙ALOHA 协议。

(2) $\color{green}{\text{时隙ALOHA 协议}}$

时隙ALOHA协议把所有各站在时间上同步起来,并将时间划分为一段段等长的 $\color{green}{\text{时隙}}$ (Slot),规定只能在每个时隙开始时才能发送一个帧。从而避免了用户发送数据的随意性,减少了数据产生冲突的可能性,提高了信道的利用率。

图3.21为两个站的时隙ALOHA 协议的工作原理示意图。时隙的长度 $T_0$ 。使得每个帧正好在一个时隙内发送完毕。每个帧在到达后,一般都要在缓存中等待一段小于 $T_0$ 的时间,然后才能发送出去。在一个时隙内有两个或两个以上的帧到达时,在下一个时隙将产生碰撞。碰撞后重传的策略与纯ALOHA的情况是相似的。

图3.21 时隙ALOHA 协议的工作原理找不到图片(Image not found)

时隙ALOHA网络的吞吐量S与网络负载G的关系是 $S=Ge^{-G}$ 。当G=1时, $S=e^{-1}$ $\approx$ 0.368。这是吞吐量S可能达到的极大值。可见,时隙ALOHA网络比纯ALOHA网络的吞吐量大了1倍。

CSMA协议

时隙ALOHA系统的效率虽然是纯ALOHA系统的两倍,但每个站点都是随心所欲地发送数据的,即使其他站点正在发送也照发不误,因此发送碰撞的概率很大。

若每个站点在发送前都先侦听一下共用信道,发现信道空闲后再发送,则就会大大降低冲突的可能,从而提高信道的利用率,载波侦听多路访问(Carrier Sense Multiple Access,CSMA)协议依据的正是这一思想。CSMA协议是在ALOHA协议基础上提出的一种改进协议,它与ALOHA协议的主要区别是多了一个载波侦听装置。

根据侦听方式和侦听到信道忙后的处理方式不同,CSMA 协议分为三种。

$\color{green}{\text{1-坚持CSMA}}$

1-坚持CSMA ( 1-persistent CSMA)的基本思想是:一个结点要发送数据时,首先侦听信道;如果信道空闲,那么立即发送数据;如果信道忙,那么等待,同时继续侦听直至信道空闲;如果发生冲突,那么随机等待一段时间后,再重新开始侦听信道。

“1-坚持”的含义是:侦听到信道忙后,继续坚持侦听信道;侦听到信道空闲后, $\color{green}{\text{发送帧的概率}}$ 为 $\color{green}{\text{1}}$ ,即立刻发送数据。

传播延迟对1-坚持CSMA 协议的性能影响较大。结点A开始发送数据时,结点B也正好有数据要发送,但这时结点A发出数据的信号还未到达结点B,结点B侦听到信道空闲,于是立即发送数据,结果必然导致冲突。即使不考虑延迟,1-坚持CSMA协议也可能产生冲突。例如,结点A正在发送数据时,结点B和C也准备发送数据,侦听到信道忙,于是坚持侦听,结果当结点A一发送完毕,结点B和C就会立即发送数据,同样导致冲突。

$\color{green}{\text{非坚持CSMA}}$

非坚持CSMA (Non-persistent CSMA)的基本思想是:一个结点要发送数据时,首先侦听信道;如果信道空闲,那么立即发送数据;如果信道忙,那么放弃侦听,等待一个随机的时间后再重复上述过程。

非坚持CSMA协议在侦听到信道忙后就放弃侦听,因此降低了多个结点等待信道空闲后同时发送数据导致冲突的概率,但也会增加数据在网络中的平均延迟。可见,信道利用率的提高是以增加数据在网络中的延迟时间为代价的。

$\color{green}{\text{p-坚持CSMA}}$

p-坚持CSMA (P-persistent CSMA)用于时分信道,其基本思想是:一个结点要发送数据时,首先帧听信道;如果信道忙,就持续侦听,直至信道空闲;如果信道空闲,那么以概率p 发送数据,以概率1-p推迟到下一个时隙;如果在下一个时隙信道仍然空闲,那么仍以概率p 发送数据,以概率1-p推迟到下一个时隙;这个过程一直持续到数据发送成功或因其他结点发送数据而检测到信道忙为止,若是后者,则等待下一个时隙再重新开始帧听。

p-坚持CSMA 在检测到信道空闲后,以概率p发送数据,以概率1-p推迟到下一个时隙,其目的是降低1-坚持CSMA协议中多个结点检测到信道空闲后同时发送数据的冲突概率;采用坚持“帧听”的目的是,试图克服非坚持CSMA协议中由于随机等待而造成的延迟时间较长的缺点。因此,p-坚持CSMA协议是非坚持CSMA协议和1-坚持CSMA协议的折中方案。

三种不同类型的CSMA协议比较如表3.1所示。

表3.1三种不同类型的CSMA 协议比较找不到图片(Image not found)
CSMA/CD 协议

载波侦听多路访问/碰撞检测(Carrier Sense Multiple Access with Collision Detection, CSMA/CD)协议是CSMA协议的改进方案,适用于总线形网络或半双工网络环境。“载波帧听”就是发送前先侦听,即每个站在发送数据之前先要检测一下总线上是否有其他站点正在发送数据,若有则暂时不发送数据,等待信道变为空闲时再发送。“碰撞检测”就是边发送边侦听,即适配器边发送数据边检测信道上信号电压的变化情况,以便判断自己在发送数据时其他站点是否也在发送数据。

CSMA/CD的工作流程可简单概括为“ $\color{green}{\text{先听后发}}$ , $\color{green}{\text{边听边发}}$ , $\color{green}{\text{冲突停发}}$ , $\color{green}{\text{随机重发}}$ ”。

1)适配器从网络层获得一个分组,封装成以太网帧,放入适配器的缓存,准备发送。

2)如果适配器侦听到信道空闲,那么它开始发送该帧。如果适配器侦听到信道忙,那么它持续侦听直至信道上没有信号能量,然后开始发送该帧。

3)在发送过程中,适配器持续检测信道。若一直未检测到碰撞,则顺利地把这个帧发送完毕。若检测到碰撞,则中止数据的发送,并发送一个拥塞信号,以让所有用户都知道。

4)在中止发送后,适配器就执行 $\color{green}{\text{指数退避}}$ 算法,等待一段随机时间后返回到步骤2)。

电磁波在总线上的传播速率总是有限的,因此,当某个时刻发送站检测到信道空闲时,此时信道并不一定是空闲的。如图3.22所示,设 $\tau$ 为单程传播时延。在t=0时,A发送数据。在t= $\tau - \sigma$ 时,A发送的数据还未到达B,由于B检测到信道空闲而发送数据。经过时间 $\sigma/2$ 后,即在t = $\tau-\sigma$ /2时,A发送的数据和B发送的数据发生碰撞,但这时A和B都不知道。在t= $\tau$ 时,B检测到碰撞,于是停止发送数据。在 $t =2\tau-\sigma$ 时,A检测到碰撞,也停止发送数据。显然,CSMA/CD 中的站不可能同时进行发送和接收,因此采用CSMA/CD协议的 $\color{green}{\text{以太网}}$ 只能进行 $\color{green}{\text{半双工通信}}$ 。

由图3.22可知,站A在发送帧后至多经过时间2 $\tau$ (端到端传播时延的2倍)就能知道所发送的帧有没有发生碰撞(当 $\sigma \to 0$ 时)。因此把以太网端到端往返时间 $2\tau$ 称为 $\color{green}{\text{争用期}}$ (又称 $\color{green}{\text{冲突窗口}}$ 或 $\color{green}{\text{碰撞窗口}}$ )。每个站在自己发送数据之后的一小段时间内,存在发生碰撞的可能性,只有经过争用期这段时间还未检测到碰撞时,才能确定这次发送不会发生碰撞。

图3.22 传播时延对载波帧听的影响找不到图片(Image not found)

为了确保发送站在发送数据的同时能检测到可能存在的碰撞,需要在发送完帧之前就能收到自己发送出去的数据,即帧的传输时延至少要两倍于信号在总线中的传播时延,所以CSMA/CD总线网中的所有数据帧都必须要大于一个 $\color{green}{\text{最小帧长}}$ 。任何站点收到帧长小于最小帧长的帧时,就把它当作无效帧立即丢弃。最小帧长的计算公式为

最小帧长=总线传播时延×数据传输速率×2

例如,以太网规定取51.2 $\mu$ s为争用期的长度。对于10Mb/s的以太网,在争用期内可发送512bit,即64B。在以太网发送数据时,如果前64B未发生冲突,那么后续数据也就不会发生冲突(表示已成功抢占信道)。换句话说,如果发生冲突,那么就一定在前64B。由于一旦检测到冲突就立即停止发送,因此这时发送出去的数据一定小于64B。因此,以太网规定最短帧长为64B,凡长度小于64B的帧都是由于冲突而异常中止的无效帧,收到这种无效帧时应立即 $\color{green}{\text{丢弃}}$ 。

如果只发送小于64B的帧,如40B的帧,那么需要在MAC子层中于数据字段的后面加入一个整数字节的填充字段,以保证以太网的MAC帧的长度不小于64B。

除检测冲突外,CSMA/CD还能从冲突中恢复。一旦发生了冲突,参与冲突的两个站点紧接着再次发送是没有意义的,如果它们这样做,那么将会导致无休止的冲突。CSMA/CD 采用 $\color{green}{\text{二进制指数退避算法}}$ 来解决碰撞问题。算法精髓如下:

1)确定基本退避时间,一般取两倍的总线端到端传播时延2 $\tau$ (即争用期)。

2)定义参数k,它等于重传次数,但k不超过10,即 k= min[重传次数,10]。当重传次数不超过10时,k等于重传次数;当重传次数大于10时,k就不再增大而 $\color{green}{\text{一直等于10}}$ (这个条件往往容易忽略,请读者注意)。

3)从离散的整数集合[0,1,…, $2^k$ -1]中随机取出一个数r,重传所需要退避的时间就是r倍的基本退避时间,即2r $\tau$ 。

4)当重传达 $\color{green}{\text{16次}}$ 仍不能成功时,说明网络太拥挤,认为此帧永远无法正确发出抛弃此帧并向高层报告出错(这个条件也容易忽略,请读者注意)。

现在来看一个例子。假设一个适配器首次试图传输一帧,当传输时,它检测到碰撞。第1次重传时,k= 1,随机数r从整数{0,1}中选择,因此适配器可选的重传推迟时间是0或2 $\tau$ 。若再次发送碰撞,则在第2次重传时,随机数r从整数{0,1,2,3}中选择,因此重传推迟时间是在0,2$\tau$,4$\tau$,6$\tau$这4个时间中随机地选取一个。以此类推。

使用二进制指数退避算法可使重传需要推迟的平均时间随重传次数的增大而增大(这也称 $\color{green}{\text{动态退避}}$ ),因而能降低发生碰撞的概率,有利于整个系统的稳定。

CSMA/CA协议

CSMA/CD 协议已成功应用于使用有线连接的局域网,但在无线局域网环境下,却不能简单地搬用CSMA/CD协议,特别是碰撞检测部分。主要有两个原因:

1)接收信号的强度往往会远小于发送信号的强度,且在无线介质上信号强度的动态变化范围很大,因此若要实现碰撞检测,则硬件上的花费就会过大。

2)在无线通信中,并非所有的站点都能够听见对方,即存在“ $\color{green}{\text{隐蔽站}}$ ”问题。

为此,802.11标准定义了广泛应用于无线局域网的CSMA/CA协议,它对CSMA/CD协议进行了修改,把碰撞检测改为碰撞避免(Collision Avoidance,CA)。“碰撞避免”并不是指协议可以完全避免碰撞,而是指协议的设计要尽量降低碰撞发生的概率。由于802.11无线局域网不使用碰撞检测,一旦站点开始发送一个帧,就会完全地发送该帧,但碰撞存在时仍然发送整个数据帧(尤其是长数据帧)会严重降低网络的效率,因此要采用碰撞避免技术降低碰撞的可能性。

由于无线信道的通信质量远不如有线信道,802.11使用链路层 $\color{green}{\text{确认}}$ / $\color{green}{\text{重传}}$ (ARQ)方案,即站点每通过无线局域网发送完一帧,就要在收到对方的确认帧后才能继续发送下一帧。

为了尽量避免碰撞,802.11规定,所有的站完成发送后,必须再等待一段很短的时间(继续监听)才能发送下一帧。这段时间称为 $\color{green}{\text{帧间间隔}}$ (InterFrame Space,IFS)。帧间间隔的长短取决于该站要发送的帧的类型。802.11使用了3种IFS:

1)SIFS(短 IFS):最短的IFS,用来分隔属于一次对话的各帧,使用SIFS的帧类型有ACK帧、CTS帧、分片后的数据帧,以及所有回答AP探询的帧等。

2)PIFS (点协调IFS):中等长度的IFS,在PCF操作中使用。

3)DIFS(分布式协调IFS):最长的IFS,用于异步帧竞争访问的时延。

CSMA/CA 的退避算法和CSMA/CD的稍有不同(见教材)。信道从忙态变为空闲态时,任何一个站要发送数据帧,不仅都要等待一个时间间隔,而且要进入争用窗口,计算随机退避时间以便再次试图接入信道,因此降低了碰撞发生的概率。当且仅当检测到信道空闲且这个数据帧是要发送的第一个数据帧时,才不使用退避算法。其他所有情况都必须使用退避算法,具体为:①在发送第一个帧前检测到信道忙;②每次重传;③每次成功发送后要发送下一帧。

CSMA/CA算法归纳如下:

1)若站点最初有数据要发送(而不是发送不成功再进行重传),且检测到信道空闲,在等待时间DIFS后,就发送整个数据帧。

2)否则,站点执行CSMA/CA退避算法,选取一个随机回退值。一旦检测到信道忙, $\color{green}{\text{退避计时器}}$ 就保持不变。只要信道空闲,退避计时器就进行倒计时。

3)当退避计时器减到0时(这时信道只可能是空闲的),站点就发送整个帧并等待确认。

4)发送站若收到确认,就知道已发送的帧被目的站正确接收。这时如果要发送第二帧,就要从步骤2)开始。

若发送站在规定时间内没有收到确认帧ACK(由重传计时器控制),就必须重传该帧,再次使用CSMA/CA协议争用该信道,直到收到确认,或经过若干次重传失败后放弃发送。

处理隐蔽站问题: $\color{green}{\text{RTS}}$(request to send,rts) 和 $\color{green}{\text{CTS}}$ (clear to send,cts)

在图3.23中,站A和B都在AP的覆盖范围内,但A和B相距较远,彼此都听不见对方。当A和B检测到信道空闲时,都向AP发送数据,导致碰撞的发生,这就是隐蔽站问题。

为了避免该问题,802.11允许发送站对信道进行预约,源站要发送数据帧之前先广播一个所持续的短请求发送 RTS 控制帧,它包括源地址、目的地址和这次通信(含相应的确认帧)时间,该帧能被其范围内包括AP在内的所有站点听到。若信道空闲,则 AP广播一个允许发送CTS 控制帧,它包括这次通信所需的持续时间(从RTS帧复制),该帧也能被其范围内包括A和B在内的所有站点听到。B和其他站听到CTS后,在CTS帧中指明的时间内将抑制发送,如图3.24所示。CTS帧有两个目的:①给源站明确的发送许可;②指示其他站点在预约期内不要发送。

这种机制实质上是在发送数据帧之前先对信道进行预约。使用RTS和 CTS帧会使网络效率有所下降,但这两种帧都很短,与数据帧相比开销不算大。相反,若不使用这种控制帧,一旦发生碰撞而导致数据帧重发,则浪费的时间更多。因此,协议设有三种情况供用户选择:第一种是使用RTS和 CTS帧;第二种是只有当数据帧的长度超过某一阈值时才使用RTS和CTS帧(显然数据帧本身很短,再使用RTS和CTS帧只能增加开销);第三种是不使用RTS和CTS 帧。

图3.23 A和B同时向AP发送信号,发生碰撞 图3.24 使用RTS和CTS帧的碰撞避免找不到图片(Image not found)

CSMA/CD与CSMA/CA主要有如下区别:

1)CSMA/CD可以检测冲突,但无法避免;CSMA/CA发送数据的同时不能检测信道上有无冲突,本结点处没有冲突并不意味着在接收结点处就没有冲突,只能尽量避免。

2) $\color{green}{\text{传输介质}}$ 不同。CSMA/CD 用于总线形以太网,CSMA/CA用于无线局域网802.11a/b/g/n等。

3) $\color{green}{\text{检测方式}}$ 不同。CSMA/CD通过电缆中的电压变化来检测;而CSMA/CA采用能量检测、载波检测和能量载波混合检测三种检测信道空闲的方式。

总结:CSMA/CA 协议的基本思想是在发送数据时先广播告知其他结点,让其他结点在某段时间内不要发送数据,以免出现碰撞。CSMA/CD协议的基本思想是发送前侦听,边发送边侦听,一旦出现碰撞马上停止发送。

*轮询访问介质访问控制:令牌传递协议

在轮询访问中,用户不能随机地发送信息,而要通过一个集中控制的监控站,以循环方式轮询每个结点,再决定信道的分配。当某结点使用信道时,其他结点都不能使用信道。典型的轮询访问介质访问控制协议是令牌传递协议,它主要用在令牌环局域网中。

在令牌传递协议中,一个令牌在各结点间以某个固定次序交换。令牌是由一组特殊的比特组合而成的帧。当环上的一个站希望传送帧时,必须等待令牌。一旦收到令牌,站点便可启动发送帧。帧中包括目的站的地址,以标识哪个站应接收此帧。帧在环上传送时,不管该帧是否是发给本站点的,所有站点都进行转发,直到该帧回到它的始发站,并由该始发站撤销该帧。帧的目的站除转发帧外,应针对该帧维持一个副本,并通过在帧的尾部设置“响应比特”来指示已收到此副本。站点在发送完一帧后,应释放令牌,以便让其他站使用。

当计算机都不需要发送数据时,令牌就在环形网上游荡,而需要发送数据的计算机只有在拿到该令牌后才能发送数据帧,因此不会发送冲突(因为令牌只有一个)。

在令牌传递网络中,传输介质的物理拓扑不必是一个环,但是为了把对介质访问的许可从一个设备传递到另一个设备,令牌在设备间的传递通路逻辑上必须是一个环。

轮询介质访问控制非常适合负载很高的广播信道。所谓负载很高的信道,是指多个结点在同一时刻发送数据概率很大的信道。可以想象,如果这样的广播信道采用随机介质访问控制,那么发生冲突的概率将会很大,而采用轮询介质访问控制则可以很好地满足各结点间的通信需求。

轮询介质访问控制既不共享时间,也不共享空间,它实际上是在随机介质访问控制的基础上,限定了有权力发送数据的结点只能有一个。

即使是广播信道也可通过介质访问控制机制使广播信道逻辑上变为点对点的信道,所以说数据链路层研究的是“点到点”之间的通信。

局域网

局域网的基本概念和体系结构

局域网(Local Area Network,LAN)是指在一个较小的地理范围(如一所学校)内,将各种计算机、外部设备和数据库系统等通过双绞线、同轴电缆等连接介质互相连接起来,组成资源和信息共享的计算机互联网络。主要特点如下:

1)为一个单位所拥有,且地理范围和站点数目均有限。

2)所有站点共享较高的总带宽(即较高的数据传输速率)。

3)较低的时延和较低的误码率。

4)各站为平等关系而非主从关系。

5)能进行广播和组播。

局域网的特性主要由 $\color{red}{\text{三个要素}}$ 决定: $\color{green}{\text{拓扑结构}}$ 、 $\color{green}{\text{传输介质}}$ 、 $\color{green}{\text{介质访问控制方式}}$ ,其中最重要的是介质访问控制方式,它决定着局域网的技术特性。

常见的局域网拓扑结构主要有以下 $\color{red}{\text{4大类}}$ : $\color{green}{\text{①星形结构}}$ ; $\color{green}{\text{②环形结构}}$ ; $\color{green}{\text{③总线形结构}}$ ; $\color{green}{\text{④星形和总线形结合的复合型结构}}$ 。

局域网可以使用 $\color{green}{\text{双绞线}}$ 、 $\color{green}{\text{铜缆}}$ 和 $\color{green}{\text{光纤}}$ 等多种 $\color{red}{\text{传输介质}}$ ,其中双绞线为主流传输介质。

局域网的 $\color{red}{\text{介质访问控制方法}}$ 主要有 $\color{green}{\text{CSMA/CD}}$ 、 $\color{green}{\text{令牌总线}}$ 和 $\color{green}{\text{令牌环}}$ ,其中前两种方法主要用于总线形局域网,令牌环主要用于环形局域网。

三种特殊的局域网拓扑实现如下:

  • $\color{green}{\text{以太网}}$ (目前使用范围最广的局域网)。 $\color{red}{\text{逻辑拓扑}}$ 是 $\color{green}{\text{总线形}}$ 结构, $\color{red}{\text{物理拓扑}}$ 是 $\color{green}{\text{星形}}$ 或拓展星形结构。
  • $\color{green}{\text{令牌环}}$ (Token Ring,IEEE 802.5)。逻辑拓扑是环形结构,物理拓扑是 $\color{green}{\text{星形结构}}$ 。
  • $\color{green}{\text{FDDI}}$ (光纤分布数字接口,IEEE 802.8)。逻辑拓扑是环形结构,物理拓扑是 $\color{green}{\text{双环结构}}$ 。

IEEE 802标准定义的局域网参考模型只对应于OSI参考模型的 $\color{green}{\text{数据链路层}}$ 和 $\color{green}{\text{物理层}}$ ,并将数据链路层拆分为两个子层: $\color{green}{\text{逻辑链路控制}}$ (LLC)子层和 $\color{green}{\text{媒体接入控制}}$ (MAC)子层。与接入传输媒体有关的内容都放在MAC子层,它向上层屏蔽对物理层访问的各种差异,提供对物理层的统一访问接口,主要功能包括: $\color{green}{\text{组帧}}$ 和 $\color{green}{\text{拆卸帧}}$ 、比特传输 $\color{green}{\text{差错检测}}$ 、 $\color{green}{\text{透明传输}}$ 。LLC子层与传输媒体无关,它向网络层提供无确认无连接、面向连接、带确认无连接、高速传送4种不同的连接服务类型。

由于以太网在局域网市场中取得垄断地位,几乎成为局域网的代名词,而802委员会制定的LLC子层作用已经不大,因此现在许多网卡仅装有MAC协议而没有LLC协议。IEEE 802协议层与OSI参考模型的比较如图3.25所示。

需要提醒读者的是,局域网的各类协议和广域网的各类协议也是统考的重点,容易出选择题,需要大家认真记忆。

图3.25 IEEE 802协议层与OSI模型的比较找不到图片(Image not found)

以太网与IEEE 802.3

IEEE 802.3标准是一种基带总线形的局域网标准,它描述物理层和数据链路层的MAC子层的实现方法。随着技术的发展,该标准又有了大量的补充与更新,以支持更多的传输介质和更高的传输速率。

以太网逻辑上采用总线形拓扑结构,以太网中的所有计算机共享同一条总线,信息以广播方式发送。为了保证数据通信的方便性和可靠性,以太网简化了通信流程并使用了CSMA/CD方式对总线进行访问控制。

严格来说,以太网应当是指符合DIX Ethernet V2标准的局域网,但 DIX Ethernet V2标准与IEEE 802.3标准只有很小的差别,因此通常将802.3局域网简称为 $\color{green}{\text{以太网}}$ 。

以太网采用两项措施以简化通信:①采用无连接的工作方式,不对发送的数据帧编号,也不要求接收方发送确认,即以太网尽最大努力交付数据,提供的是不可靠服务,对于差错的纠正则由高层完成;②发送的数据都使用曼彻斯特编码的信号,每个码元的中间出现一次电压转换,接收端利用这种电压转换方便地把位同步信号提取出来。

以太网的传输介质与网卡

以太网常用的传输介质有4种:粗缆、细缆、双绞线和光纤。各种传输介质的适用情况见表3.2。

图片详情找不到图片(Image not found)

注意:10BASE-T非屏蔽双绞线以太网拓扑结构为星形网,星形网中心为集线器,但使用集线器的以太网在逻辑上仍然是一个总线网,属于一个冲突域。上表的内容是常识,例如题目中出现10BASE5时,是不会显式地告诉你它的传输媒体、编码方式、拓扑结构等信息的。

计算机与外界局域网的连接是通过主机箱内插入的一块网络接口板「又称 $\color{green}{\text{网络适配器(Adapter)}}$ 或 $\color{green}{\text{网络接口卡(Network Interface Card,NIC)}}$ 」实现的。网卡上装有处理器和存储器,是工作在数据链路层的网络组件。网卡和局域网的通信是通过电缆或双绞线以串行方式进行的,而网卡和计算机的通信则是通过计算机主板上的IO总线以并行方式进行的。因此,网卡的重要功能就是进行数据的串并转换。网卡不仅能实现与局域网传输介质之间的物理连接和电信号匹配,还涉及帧的发送与接收、帧的封装与拆封、介质访问控制、数据的编码与解码及数据缓存功能等。

全世界的每块网卡在出厂时都有一个唯一的代码,称为介质访问控制(MAC)地址,这个地址用于控制主机在网络上的数据通信。数据链路层设备(网桥、交换机等)都使用各个网卡的MAC地址。另外,网卡控制着主机对介质的访问,因此网卡也工作在物理层,因为它只关注比特,而不关注任何地址信息和高层协议信息。

以太网的MAC帧

每块网卡中的MAC地址也称物理地址;MAC地址长6字节,一般用由连字符(或冒号)分隔的12个十六进制数表示,如 02-60-8c-e4-b1-21。高24位为厂商代码,低24位为厂商自行分配的网卡序列号。严格来讲,局域网的“地址”应是每个站的“名字”或标识符。

由于总线上使用的是广播通信,因此网卡从网络上每收到一个MAC帧,首先要用硬件检查MAC帧中的 MAC地址。如果是发往本站的帧,那么就收下,否则丢弃。

以太网MAC帧格式有两种标准:DIX Ethernet V2标准(即以太网V2标准)和IEEE 802.3标准。这里先介绍最常用的以太网V2的 MAC帧格式,如图3.26所示。

$\color{green}{\text{前导码}}$ :使接收端与发送端时钟同步。在帧前面插入的8字节可再分为两个字段:第一个字段共7字节,是前同步码,用来快速实现MAC帧的比特同步;第二个字段是帧开始定界符,表示后面的信息就是MAC帧。

图3.26以太网V2标准的MAC帧格式找不到图片(Image not found)

注意:MAC 帧并不需要帧结束符,因为以太网在传送帧时,各帧之间必须有一定的间隙。因此,接收端只要找到帧开始定界符,其后面连续到达的比特流就都属于同一个MAC 帧,所以图3.26只有帧开始定界符。但不要误以为以太网MAC帧不需要尾部,在数据链路层上,帧既要加首部,也要加尾部。

$\color{green}{\text{地址}}$ :通常使用6字节(48bit)地址(MAC地址)。

$\color{green}{\text{类型}}$ :2字节,指出数据域中携带的数据应交给哪个协议实体处理。

$\color{green}{\text{数据}}$ :46~1500字节,包含高层的协议消息。由于CSMA/CD算法的限制,以太网帧必须满足最小长度要求64字节,数据较少时必须加以填充(0~46字节)。

注意:46和1500是怎么来的?首先,由CSMA/CD算法可知以太网帧的最短帧长为64B,而MAC帧的首部和尾部的长度为18字节,所以数据字段最短为64-18=46字节。其次,最大的1500字节是规定的,没有为什么。

$\color{green}{\text{填充}}$ :0~46字节,当帧长太短时填充帧,使之达到64字节的最小长度。

$\color{green}{\text{校验码(FCS)}}$ :4字节,校验范围从目的地址段到数据段的末尾,算法采用32位循环冗余码(CRC),不但需要检验MAC帧的数据部分,还要检验目的地址、源地址和类型字段,但不校验前导码。

802.3帧格式与DIX以太帧格式的不同之处在于用长度域替代了DIX帧中的类型域,指出数据域的长度。在实践中,前述长度/类型两种机制可以并存,由于IEEE 802.3数据段的最大字节数是1500,所以长度段的最大值是1500,因此从1501到65535的值可用于类型段标识符。

高速以太网

速率达到或超过100Mb/s的以太网称为高速以太网。

$\color{green}{\text{100BASE-T以太网}}$

100BASE-T以太网是在双绞线上传送100Mb/s基带信号的星形拓扑结构以太网,它使用CSMA/CD 协议。这种以太网既支持全双工方式,又支持半双工方式,可在全双工方式下工作而无冲突发生。因此,在全双工方式下不使用CSMA/CD协议。

MAC帧格式仍然是802.3标准规定的。保持最短帧长不变,但将一个网段的最大电缆长度减小到100m。帧间时间间隔从原来的9.6us改为现在的0.96us。

$\color{green}{\text{吉比特以太网}}$

吉比特以太网又称千兆以太网,允许在1Gb/s下用全双工和半双工两种方式工作。使用802.3协议规定的帧格式。在半双工方式下使用CSMA/CD协议(全双工方式不需要使用CSMA/CD协议)。与10BASE-T和100BASE-T技术向后兼容。

10吉比特以太网

10吉比特以太网与10Mb/s、100Mb/s和 1Gb/s以太网的帧格式完全相同。10吉比特以太网还保留了802.3标准规定的以太网最小和最大帧长,便于升级。10吉比特以太网不再使用铜线而只使用光纤作为传输媒体。10吉比特以太网只工作在 $\color{green}{\text{全双工}}$ 方式,因此没有争用问题,也不使用CSMA/CD 协议。

以太网从10Mb/s到10Gb/s的演进证明了以太网是可扩展的(从10Mb/s到10Gb/s)、灵活的(多种传输媒体、全/半双工、共享/交换),易于安装,稳健性好。

IEEE 802.11

无线局域网可分为两大类:有固定基础设施无线局域网和无固定基础设施移动自组织网络。所谓“固定基础设施”,是指预先建立的、能覆盖一定地理范围的固定基站。

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

对于有固定基础设施的无线局域网,IEEE制定了无线局域网的802.11系列协议标准,包括802.11a/b/g/n等。802.11使用星形拓扑,其中心称为 $\color{green}{\text{接入点}}$ (Access Point,AP),在MAC层使用CSMA/CA协议。使用802.11系列协议的局域网又称Wi-Fi。

802.11标准规定无线局域网的最小构件是 $\color{green}{\text{基本服务集BSS}}$ (Basic Service Set,BSS)。一个基本服务集包括一个基站和若干移动站。所有的站在本 BSS内都可以直接通信,但在和本 BSS 外的站通信时都必须通过本BSS的基站。上面提到的AP就是基本服务集中的基站(base station)。安装AP时,必须为该AP分配一个不超过32字节的 $\color{green}{\text{服务集标识符}}$ (Service Set IDentifier,SSID)和一个信道。一个基本服务集覆盖的地理范围称为一个 $\color{green}{\text{基本服务区}}$ (Basic Service Area,BSA),无线局域网的基本服务区的直径一般不超过100m。

一个基本服务集可以是孤立的,也可通过AP连接到一个 $\color{green}{\text{分配系统}}$ (Distribution System,DS),然后连接到另一个基本服务集,构成一个 $\color{green}{\text{扩展的服务集}}$ (Extended Service Set,ESS),ESS还可以通过一种称为Portal (门桥)的设备为无线用户提供到有线连接的以太网的接入。门桥的作用相当于一个网桥。在图3.27中,移动站A如果要和另一个基本服务集中的移动站B通信,就必须经过两个接入点 $AP_1$ 和 $AP_2$ ,即 A $\to$ $AP_1$ $\to$ $AP_2$ $\to$ B,注意 $AP_1$ 到 $AP_2$ 的通信是使用有线传输的。

图3.27基本服务集和扩展服务集找不到图片(Image not found)

移动站A从某个基本服务集漫游到另一个基本服务集时(图3.27中的A’),仍然可保持与另一个移动站B的通信。但A在不同的基本服务集使用的AP改变了。

无固定基础设施移动自组织网络

另一种无线局域网是无固定基础设施的无线局域网,又称自组网络(ad hoc network )。自组网络没有上述基本服务集中的 AP,而是由一些平等状态的移动站相互通信组成的临时网络(见图3.28)。各结点之间地位平等,中间结点都为转发结点,因此都具有路由器的功能。

自组网络通常是这样构成的:一些可移动设备发现在它们附近还有其他的可移动设备,并且要求和其他移动设备进行通信。自组网络中的每个移动站都要参与网络中其他移动站的路由的发现和维护,同时由移动站构成的网络拓扑可能随时间变化得很快,因此在固定网络中行之有效的一些路由选择协议对移动自组网络已不适用,需引起特别的关注。

图3.28 由一些处于平等状态的便携机构成的自组网络找不到图片(Image not found)

自组网络和移动IP并不相同。移动IP技术使漫游的主机可以用多种方法连接到因特网,其核心网络功能仍然是基于固定网络中一直使用的各种路由选择协议。而自组网络是把移动性扩展到无线领域中的自治系统,具有自己特定的路由选择协议,并且可以不和因特网相连。

令牌环网的基本原理

令牌环网的基本原理如图3.29所示。令牌环网的每一站通过电缆与环接口干线耦合器(TCU)相连。TCU的主要作用是,传递所有经过的帧,为接入站发送和接收数据提供接口。与此对应,TCU的状态也有两个:收听状态和发送状态。数据总是在某个特定的方向上从一个TCU到下一个TCU逐比特地依次传送,每个TCU重新产生并重新传输每一比特。

图3.29令牌环网的基本原理找不到图片(Image not found)

令牌环网的媒体接入控制机制采用的是分布式控制模式的循环方法。在令牌环网中有一个令牌(Token)沿着环形总线在入网结点计算机间依次传递,令牌实际上是一个特殊格式的MAC控制帧,它本身并不包含信息,仅控制信道的使用,确保在同一时刻只有一个结点能够独占信道。站点只有取得令牌后才能发送数据帧,因此令牌环网不会发生碰撞。由于令牌在网环上是按顺序依次传递的,因此对所有入网计算机而言,访问权是公平的。

令牌环网中令牌和数据的传递过程如下:

1)网络空闲时,环路中只有令牌帧在循环传递。

2)令牌传递到有数据要发送的站点处时,该站点就修改令牌中的一个标志位,并在令牌中附加自己需要传输的数据,将令牌变成一个数据帧,然后将这个数据帧发送出去。

3)数据帧沿着环路传输,接收到的站点一边转发数据,一边查看帧的目的地址。如果目的地址和自己的地址相同,那么接收站就复制该数据帧以便进一步处理。

4)数据帧沿着环路传输,直到到达该帧的源站点,源站点接收到自己发出去的数据帧后便不再进行转发。同时,发送方可以通过检验返回的数据帧来查看数据传输过程中是否有错,若有错则重传该帧。

5)源站点传送完数据后,重新产生一个令牌,并将令牌传递给下一个站点,以交出对媒体
的访问权限。

令牌环网在物理上采用星形拓扑结构,但逻辑上仍是环形拓扑结构,其标准由IEEE 802.5定义。图3.29中的环并不是由通信线路连接而成的物理环。

广域网

广域网的基本概念

广域网通常是指覆盖范围很广(远超一个城市的范围)的长距离网络。广域网是因特网的核心部分,其任务是长距离运送主机所发送的数据。连接广域网各结点交换机的链路都是高速链路,它可以长达几千千米的光缆线路,也可以是长达几万千米的点对点卫星链路。因此广域网首要考虑的问题是通信容量必须足够大,以便支持日益增长的通信量。

广域网不等于互联网,互联网可以连接不同类型的网络(既可以连接 $\color{green}{\text{局域网}}$ ,又可以连接 $\color{green}{\text{广域网}}$ ),通常使用 $\color{green}{\text{路由器}}$ 来连接。图3.30显示了由相距较远的局域网通过路由器与厂域网相连而成的一个覆盖范围很广的互联网。因此,局域网可以通过广域网与另一个相隔很远的局域网通信。

图3.30由局域网和广域网组成的互联网找不到图片(Image not found)

从层次上考虑,广域网和局域网的区别很大,因为局域网使用的协议主要在数据链路层(还有少量在物理层),而广域网使用的协议主要在网络层。怎么理解“局域网使用的协议主要在数据链路层,而广域网使用的协议主要在网络层”这句话呢?如果网络中的两个结点要进行数据交换,那么结点除要给出数据外,还要给数据“包装”上一层控制信息,用于实现检错纠错等功能。如果这层控制信息是数据链路层协议的控制信息,那么就称使用了数据链路层协议,如果这层控制信息是网络层的控制信息,那么就称使用了网络层协议。

它们的区别与联系见表3.3。

表3.3广域网和局域网的区别与联系找不到图片(Image not found)

广域网中的一个重要问题是路由选择和分组转发。路由选择协议负责搜索分组从某个结点到目的结点的最佳传输路由,以便构造路由表,然后从路由表再构造出转发分组的转发表。分组是通过转发表进行转发的。

PPP协议和HDLC 协议是目前最常用的两种广域网数据链路层控制协议。

PPP协议

PPP (Point-to-Point Protocol)是使用串行线路通信的面向字节的协议,该协议应用在直接连接两个结点的链路上。设计的目的主要是用来通过拨号或专线方式建立点对点连接发送数据,使其成为各种主机、网桥和路由器之间简单连接的一种共同的解决方案。

PPP协议是在 $\color{green}{\text{SLIP}}$ 协议的基础上发展而来的,它既可以在异步线路上传输,又可在同步线路上使用;不仅用于Modem链路,也用于租用的路由器到路由器的线路。

背景:SLIP主要完成数据报的传送,但没有寻址、数据检验、分组类型识别和数据压缩等功能,只能传送IP分组。如果上层不是IP协议,那么无法传输,并且此协议对一些高层应用也不支持,但实现比较简单。为了改进SLIP 的缺点,于是制定了点对点协议(PPP)。

PPP协议有三个组成部分:

1) $\color{green}{\text{链路控制协议}}$ (LCP)。一种扩展链路控制协议,用于建立、配置、测试和管理数据链路。

2) $\color{green}{\text{网络控制协议}}$ (NCP)。PPP协议允许同时采用多种网络层协议,每个不同的网络层协议要用一个相应的NCP来配置,为网络层协议建立和配置逻辑连接。

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

PPP帧的格式如图3.31所示。PPP帧的前3个字段和最后2个字段与HDLC帧是一样的, $\color{green}{\text{标志字段}}$ (F)仍为7E(01111110),前后各占1字节,若它出现在信息字段中,就必须做 $\color{green}{\text{字节填充}}$ ,使用的控制转义字节是7D(01111101)。但在PPP中, $\color{green}{\text{地址字段(A)}}$ 占1字节,规定为0xFF, $\color{green}{\text{控制字段(C)}}$ 占1字节,规定为0x03,两者的内容始终是固定不变的。PPP是面向字节的,因而所有PPP帧的长度都是整数个字节。

图3.31 PPP帧的格式找不到图片(Image not found)

第4个字段是 $\color{green}{\text{协议段}}$ ,占2字节,在HDLC中没有该字段,它是说明信息段中运载的是什么种类的分组。以比特0开始的是诸如IP、IPX和AppleTalk 这样的网络层协议;以比特1开始的被用来协商其他协议,包括LCP及每个支持的网络层协议的一个不同的NCP。

第5段 $\color{green}{\text{信息段}}$ 的长度是可变的,大于等于0且小于等于1500B。为了实现透明传输,当信息段中出现和标志字段一样的比特组合时,必须采用一些措施来改进。

注意:因为PPP是点对点的,并不是总线形,所以无须采用CSMA/CD协议,自然就没有最短帧,所以信息段占0~1500字节,而不是46~1500字节。另外,当数据部分出现和标志位一样的比特组合时,就需要采用一些措施来实现透明传输。

第6个字段是 $\color{green}{\text{帧检验序列}}$ (FCS,Frame Check Sequence),占2字节,即循环冗余码检验中的冗余码。检验区包括地址字段、控制字段、协议字段和信息字段。

图3.32给出了PPP链路建立、使用、撤销所经历的状态图。当线路处于静止状态时,不存在物理层连接。当线路检测到载波信号时,建立物理连接,线路变为建立状态。此时,LCP开始选项商定,商定成功后就进入身份验证状态。双发身份验证通过后,进入网络状态。这时,采用NCP配置网络层,配置成功后,进入打开状态,然后就可进行数据传输。当数据传输完成后,线路转为终止状态。载波停止后则回到静止状态。

图3.32 PPP协议的状态图找不到图片(Image not found)

注意:

1) PPP提供差错检测但不提供纠错功能,只保证无差错接收(通过硬件进行CRC校验)它是不可靠的传输协议,因此也不使用序号和确认机制。

2)它仅支持 $\color{green}{\text{点对点}}$ 的链路通信,不支持多点线路。

3 ) PPP只支持 $\color{green}{\text{全双工}}$ 链路。

4)PPP的两端可以运行不同的网络层协议,但仍然可使用同一个PPP进行通信。

5)PPP是面向字节的,当信息字段出现和标志字段一致的比特组合时,PPP有两种不同的处理方法:若PPP用在异步线路(默认),则采用 $\color{green}{\text{字节填充法}}$ ;若 PPP用在SONET/SDH等同步线路,则协议规定采用硬件来完成 $\color{green}{\text{比特填充}}$ (和HDLC的做法一样)。

*HDLC协议

高级数据链路控制(High-level Data Link Control,HDLC)协议是ISO制定的面向比特(记住PPP协议是面向字节的)的数据链路层协议。该以以个依簇了HT个T丁通信。有较高的数据可透明传输,用于实现透明传输的“0比特插入法”易于硬件实现;全双工通信,有较高的数据链路传输效率;所有帧采用CRC检验,对信息帧进行顺序编号,可防止漏收或重发,传输可靠性高;传输控制功能与处理功能分离,具有较大的灵活性。

HDLC适用于链路的两种基本配置:非平衡配置和平衡配置。

1)非平衡配置的特点是由一个主站控制整个链路的工作。

2)平衡配置的特点是链路两端的两个站都是复合站,每个复合站都可以平等地发起数据传输,而不需要得到对方复合站的允许。

HDLC有3种站类型:主站、从站和复合站。主站负责控制链路的操作,主站发出的帧称为命令帧。从站受控于主站,按主站的命令进行操作;发出的帧称为响应帧。另外,有些站既具有主站的功能,又具有从站的功能,所以这类站称为复合站,它可以发出命令帧和响应帧。

数据操作方式

HDLC有3种数据操作方式:

1) $\color{green}{\text{正常响应方式}}$ 。这是一种非平衡结构操作方式,即主站向从站传输数据,从站响应传输但从站只有在收到主站的许可后,才可进行响应。

2) $\color{green}{\text{异步平衡方式}}$ 。这是一种平衡结构操作方式。在这种方式中,每个复合站都可以进行对另一站的数据传输。

3) $\color{green}{\text{异步响应方式}}$ 。这是一种非平衡结构操作方式。在这种方式中,从站即使未受到主站的允许,也可进行传输。

HDLC帧

图3.33所示为HDLC的帧格式,它由标志、地址、控制、信息和帧校验序列(FCS)等字段构成。

图3.33 HDLC的帧格式找不到图片(Image not found)

标志字段F,为01111110。在接收端只要找到标志字段就可确定一个帧的位置。HDLC 协议采用比特填充的首尾标志法实现透明传输。在发送端,当一串比特流数据中有5个连续的1时,就立即在其后填入一个0。接收帧时,先找到F字段以确定帧的边界,接着对比特流进行扫描。每当发现5个连续的1时,就将其后的一个0删除,以还原成原来的比特流。

地址字段A,共8位,在使用非平衡方式传送数据时,站地址字段总是写入从站的地址;在使用平衡方式传送数据时,站地址字段填入的是应答站的地址。

控制字段C,共8位,是最复杂的字段。HDLC的许多重要功能都靠控制字段来实现。根据其第1位或第1、2位的取值,可将HDLC 帧划分为三类:

1)信息帧(I),第1位为0,用来传输数据信息,或使用捎带技术对数据进行确认。

2)监督帧(S),第1、2位分别为1、0,用于流量控制和差错控制,执行对信息帧的确认、请求重发和请求暂停发送等功能;

3)无编号帧(U),第1、2位均为1,用于提供对链路的建立、拆除等多种控制功能。由图3.31和图3.33可知,PPP帧和 HDLC帧的格式很相似。但两者有以下几点不同:

由图3.31和图3.33可知,PPP帧和HDLC帧的格式很相似。但两者有以下几点不同:

1)PPP协议是面向字节的,HDLC协议是面向比特的。

2)PPP帧比HDLC帧多一个2字节的协议字段。当协议字段值为0x0021时,表示信息字段
是P数据报。

3)PPP协议不使用序号和确认机制,只保证无差错接收(通过硬件进行CRC检验),而端
到端差错检测由高层协议负责。HDLC 协议的信息帧使用了编号和确认机制,能够提供可靠传输。

数据链路层设备

*网桥的概念及其基本原理

两个或多个以太网通过网桥连接后,就成为一个覆盖范围更大的以太网,而原来的每个以太网就称为一个网段。网桥工作在链路层的MAC子层,可以使以太网各网段成为隔离开的碰撞域。如果把网桥换成工作在物理层的转发器,那么就没有这种过滤通信量的功能。由于各网段相对独立,因此一个网段的故障不会影响到另一个网段的运行。

注意:网桥处理数据的对象是帧,所以它是工作在数据链路层的设备,中继器、放大器处理数据的对象是信号,所以它是工作在物理层的设备。

网络1和网络2通过网桥连接后,网桥接收网络1发送的数据帧,检查数据帧中的地址,如果是网络2的地址,那么就转发给网络2;如果是网络1的地址,那么就将其丢弃,因为源站和目的站处在同一个网段,目的站能够直接收到这个帧而不需要借助网桥转发。

如图3.34所示,设每个网段的数据率都是10Mb/s,那么三个网段合起来的最大吞吐量就变成了30Mb/s。如果把两个网桥换成集线器或转发器,那么整个网络仍然是一个碰撞域(即冲突域),当A和B通信时,所有其他站点都不能通信,整个碰撞域的最大吞吐量仍然是10Mb/s。

网桥的基本特点:①网桥必须具备寻址和路径选择能力,以确定帧的传输方向;②从源网络接收帧,以目的网络的介质访问控制协议向目的网络转发该帧;③网桥在不同或相同类型的LAN之间存储并转发帧,必要时还进行链路层上的协议转换。注意,一股情况下,仔T投反尖仅奋排能进行协议转换,即连接的两个网段可以使用不同的协议;④网桥对接收到的帧个似仕何修以,或只对帧的封装格式做很少的修改;⑤网桥可以通过执行帧翻译互联不同类型的局域网,即把原协议的信息段的内容作为另一种协议的信息部分封装在帧中;⑥网桥应有足够大的缓冲空间,因为在短时间内帧的到达速率可能高于转发速率。

图3.34网桥使各网段成为隔离开的碰撞域找不到图片(Image not found)

网桥的优点:①能过滤通信量;②扩大了物理范围;③可使用不同的物理层;④可互联不同类型的局域网;⑤提高了可靠性;⑥性能得到改善。

网桥的缺点:①增大了时延;②MAC子层没有流量控制功能(流量控制需要用到编号机制,编号机制的实现在LLC子层);③不同MAC子层的网段桥接在一起时,需要进行帧格式的转换;④网桥只适合于用户数不多和通信量不大的局域网,否则有时还会因传播过多的广播信息而产生网络拥塞,这就是所谓的广播风暴。

网桥必须具有路径选择的功能,接收到帧后,要决定正确的路径,将该帧转送到相应的目的局域网站点。根据路径选择算法的不同,可将网桥分为透明网桥和源路由网桥。

透明网桥(选择的不是最佳路由)

透明网桥以混杂方式工作,它接收与之连接的所有LAN传送的每一帧。到达帧的路由选择过程取决于源LAN和目的LAN:①如果源LAN和目的LAN相同,那么丢弃该帧;②如果源LAN和目的LAN不同,那么转发该帧;③如果目的LAN未知,那么扩散该帧。

当网桥刚连接到以太网时,其转发表是空的,网桥按照自学习算法处理收到的帧。该算法的基本思想是:若从站A发出的帧从某端口进入网桥,那么从这个端口出发沿相反方向一定可把一个帧传送到站A。所以网桥每收到一个帧,就记下其源地址和进入网桥的端口,作为转发表中的一个项目(源地址、进入的接口和时间)。在建立转发表时,把帧首部中的源地址写在“地址”一栏的下面。在转发帧时,则根据收到的帧首部中的目的地址来转发。这时就把在“地址”栏下面已经记下的源地址当作目的地址,而把记下的进入端口当作转发端口。网桥就是在这样的转发过程中逐渐将其转发表建立起来的。

为了避免转发的帧在网络中不断地“兜圈子”,透明网桥使用了一种生成树算法(无环),以确保每个源到每个目的地只有唯一的路径。生成树使得整个扩展局域网在逻辑上形成树形结构,所以工作时逻辑上没有环路,但生成树一般不是最佳路由。

源路由网桥(选择的是最佳路由)

在源路由网桥中,路由选择由发送数据帧的源站负责,网桥只根据数据真正的路由信息对帧进行接收和转发。

源路由网桥对主机是不透明的,主机必须知道网桥的亦佐o连按到哪个网权上。p出远开口发送帧的源站负责,那么源站如何知道应当选择什么样的路由呢?为了找到取住的路出,源项女广播方式向目的站发送一个发现帧(Discovery Frame)作为探测之用。源路出的T从过任Ni人未知路径前,源站要先发送一个发现帧;途中的每个网桥都转发此明,取资该尺境队中从少白途径到达目的站;目的站也将一一发送应答帧;每个应答帧将逋过原路在伛凹,迷红的内.2r1LH己的标志记录在应答帧中;源站选择出一个最佳路由。以后,凡从这个源站向该目的站发送的帧的首部,都必须携带这一路由信息。

此外,发送帧还可以帮助源站确定整个网络可以通过的帧的最大长度。由于发现帧的数量指数式增加,可能会使网络严重拥塞。

两种网桥的比较

使用源路由网桥可以利用最佳路由。若在两个以太网之间使用并联的源路由网桥,则还可使通信量较平均地分配给每个网桥。采用透明网桥时,只能使用生成树,而使用生成树一般并不能保证所用的路由是最佳的,也不能在不同的链路中进行负载均衡。

注意:透明网桥和源路由网桥中提到的最佳路由并不是经过路由器最少的路由,而可以是发送帧往返时间最短的路由,这样才能真正地进行负载平衡,因为往返时间长说明中间某个路由器可能超载了,所以不走这条路,换个往返时间短的路走。

局域网交换机及其工作原理

局域网交换机

桥接器的主要限制是在任一时刻通常只能执行一个帧的转发操作,于是出现了局域网交换机,又称以太网交换机。从本质上说,以太网交换机是一个多端口的网桥,它工作在数据链路层。交换机能经济地将网络分成小的冲突域,为每个工作站提供更高的带宽。

以太网交换机对工作站是透明的,因此管理开销低廉,简化了网络结点的增加、移动和网络变化的操作。利用以太网交换机还可以方便地实现虚拟局域网(Virtual LAN,VLAN), $\color{red}{\text{VLAN}}$ 不仅可以隔离 $\color{green}{\text{冲突域}}$ ,而且可以隔离 $\color{green}{\text{广播域}}$ 。

原理

以太网交换机的原理是,它检测从以太端口来的数据帧的源和目的地的MAC(介质访问层)地址,然后与系统内部的动态查找表进行比较,若数据帧的MAC地址不在查找表中,则将该地址加入查找表,并将数据帧发送给相应的目的端口。

特点

以太网交换机的特点如下:

1)以太网交换机的每个端口都直接与单台主机相连(普通网桥的端口往往连接到以太网的一个网段),并且一般都工作在 $\color{green}{\text{全双工}}$ 方式。

2)以太网交换机能同时连通许多对端口,使每对相互通信的主机都能像独占通信媒体那样无碰撞地传输数据。

3)以太网交换机也是一种即插即用设备(和透明网桥一样),其内部的帧的转发表也是通过自学习算法自动地逐渐建立起来的。

4)以太网交换机由于使用了专用的交换结构芯片,因此交换速率较高。

5)以太网交换机独占传输媒体的带宽。

对于传统10Mb/s的共享式以太网,若共有N个用户,则每个用户占有的平均带宽只有总带宽(10Mb/s)的1/N。在使用以太网交换机时,虽然在每个端口到主机的带宽还是10Mb/s,但由于一个用户在通信时是独占而不是和其他网络用户共享传输媒体的带宽,因此拥有N个端口的交换机的总容量为N×1OMb/s。这正是交换机的最大优点。

以太网交换机一般都具有多种速率的端口,例如可以具有10Mb/s、100Mb/s和 1Gb/s的端口的各种组合,因此大大方便了各种不同情况的用户。

两种交换模式

目前,以太网交换机主要采用两种交换模式,即直通式和存储转发式。

1) $\color{green}{\text{直通式交换机}}$ 只检查帧的目的地址,这使得帧在接收后几乎能马上被传出去。这种方式速度快,但缺乏智能性和安全性,也无法支持具有不同速率的端口的交换。

2) $\color{green}{\text{存储转发式交换机}}$ 先将接收到的帧缓存到高速缓存器中,并检查数据是否正确,确认无误后通过查找表转换成输出端口将该帧发送出去。如果发现帧有错,那么就将其丢弃。存储转发式的优点是可靠性高,并能支持不同速率端口间的转换,缺点是延迟较大。

本章小结及疑难点

“链路”和“数据链路”有何区别?“电路接通” 与“数据链路接通”有何区别?

所谓 $\color{green}{\text{链路}}$ (Link),是指从一个结点到相邻结点的一段物理线路,其中间没有其他任何的交换结点。在进行数据通信时,两台计算机之间的通信路径往往要经过许多段这样的链路。可见,链路只是一条路径的组成部分。

$\color{green}{\text{数据链路}}$ (Data Link)则是另一个概念。因为在一条线路上传送数据时,除必须有一条物理线路外,还必须有一些通信协议来控制这些数据的传输。若把实现这些协议的硬件和软件加到链路上,就构成了数据链路。有时也把链路分为物理链路和逻辑链路。物理链路就是指上面所说的链路,逻辑链路就是上面的数据链路,即物理链路加上必要的通信协议。

“电路接通”表示链路两端的结点交换机已经开机,物理连接已经能够传送比特流,但数据传输并不可靠,在物理连接基础上,再建立数据链路连接,才能说“数据链路接通”。此后,由于数据链路连接具有检测、确认和重传功能,才使得不太可靠的物理链路变成可靠的数据链路,进行可靠的数据传输。当数据链路断开连接时,物理电路连接不一定跟着断开连接。

在停止-等待协议中,确认帧为什么不需要序号(如用ACKO和 ACK1) ?

在停止-等待协议中,发送方每发送一帧,都需要在收到接收方的确认帧后,才能进行下一帧的发送,而发送方收到的确认帧也一定是自己刚刚发出去的数据帧的确认帧,无须加序号标记。

说明用 $n$ 比特进行编号时,若接收窗口的大小为1,则只有在发送窗口的大小 $W_T \leq 2^n-1$ 时,连续ARQ协议才能正确运行。

举一个具体的例子进行说明。例如用3比特可编出8个不同的序号,因而发送窗口的最大值似乎应为8。但实际上,设置发送窗口为8将使协议在某些情况下无法工作。现在我们就来说明这一点。

设发送窗口 $W_T$ = 8,发送端发送完0~7号共8个数据帧。因发送窗口已满,发送暂停。假定这8个数据帧均已正确到达接收端,并且对每个数据帧,接收端都发送出确认帧。下面考虑两种不同的情况。

第一种情况是:所有确认帧都正确到达了发送端,因而发送端接着又发送8个新的数据帧,其编号应是0~7。注意,序号是循环使用的。因此序号虽然相同,但8个帧都是新的帧。

第二种情况是:所有确认帧都丢失了。经过一段由超时计时器控制的时间后,发送端重传这8个旧的数据帧,其编号仍为0~7。

于是,当接收端第二次收到编号为0~7的8个数据帧时,就无法判定这是8个新的数据帧还是8个重传的旧数据帧。

因此,将发送窗口设置为8显然是不行的。

证明:对于选择重传协议,若有 $n$ 比特进行编号,则接收窗口的最大值为 $W_R \leq 2^{n-1}$ 。

设发送窗口大小为 $W_T$ 。因为 $W_T$ + $W_R \leq 2^n$, $W_T=W_R$ ,WR取最大值 $2^n/2$ = $2^{n-1}$ 。

注意,如果题目没有特别说明,那么一般情况下选择重传协议的发送窗口和接收窗口的大小是相等的。大家试想一下,SR协议中接收窗口值大于1,接收窗口要等到接收范围内所有帧收到才能更新,发送窗口要等接收窗口更新后才会更新,那么发送窗口比接收窗口多出来的那部分窗口就没有意义了。

数据链路层使用PPP协议或CSMA/CD协议时,既然不保证可靠传输,为什么要对所传输的帧进行差错检验?

当数据链路层使用PPP协议或CSMA/CD协议时,在数据链路层的接收端对所传输的帧进行差错检验是为了不将已发现有差错的帧(不管是什么原因造成的)接收下来。如果在接收端不进行差错检测,那么接收端上交给主机的帧就可能包括在传输中出』左销队的帐A什沿有传输差端主机是没有用处的。换言之,接收端进行差错检测的目的是:“上交主机的帧都是没有传输差错的,有差错的都已经丢弃了”,或者更加严格地说:“我们以很接近于1的概率认为,凡是上交主机的帧都是没有传输差错的”。

为什么PPP协议不使用帧的编号和确认机制来实现可靠传输?

PPP不使用序号和确认机制是出于以下考虑:

若使用能够实现可靠传输的数据链路层协议(如 HDLC),开销就会增大。当数据链路层出现差错的概率不大时,使用比较简单的PPP较为合理。

在因特网环境下,PPP的信息字段放入的数据是IP数据报。假定我们采用了能实现可靠传输但十分复杂的数据链路层协议,当数据帧在路由器中从数据链路层上升到网络层后,仍有可能因网络拥塞而被丢弃。因此,数据链路层的可靠传输并不能保证网络层的传输也是可靠的。

PPP在帧格式中有帧校验序列FCS字段。对于每个收到的帧,PPP都要使用硬件进行CRC检验。若发现有差错,则丢弃该帧(一定不能把有差错的帧交给上一层)。端到端的差错控制最后由高层协议负责。因此,PPP可以保证无差错接收。

两台计算机通过计算机网络传输一个文件时,有两种可行的确认策略。第一种是由发送端将文件分割成分组,接收端逐个确认分组;但就整体而言,文件并没有得到确认。第二种策略是接收端不确认单个分组,而是当文件全部收到后,对整个文件予以接收确认。试比较这两种方式的优缺点,以及它们各自适用的场合。

在计算机网络中,数据的传输过程可能会引起数据的丢失、出错等,因此一个可靠的传输需要一定的差错控制机制,确认是实现差错控制的一个辅助手段。上面的两种确认策略都是可行的,但它们的性能取决于所应用的网络环境。

具体地说,当网络传输可靠性较低且分组容易丢失时,第一种策略即对每个分组逐一确认较好,此时仅需重传丢失或出错的分组。如果网络的传输可靠性较高,那么在不发生差错的情况下,即使仅对整个文件进行一次确认,从而减少了确认的次数,节省了网络带宽和网络资源;不过有单个分组丢失或出错,也需要重传整个文件。

局域网、广域网和因特网之间的关系总结。

为方便理解,可将广域网视为一个大的局域网,专业地讲,就是通过交换机连接多个局域网,组成更大的局域网,即广域网。因此,广域网仍然是一个网络。而因特网是多个网络之间的互联,即因特网由大局域网(广域网)和小局域网共同通过路由器相连。因此局域网可以通过广域网与另一个相隔很远的局域网进行通信。

IEEE 802局域网参考模型与OSI参考模型有何异同之处?

局域网的体系结构只有OSI 参考模型的下两层(物理层和数据链路层),而没有第三层以上的层次。即使是下两层,由于局域网是共享广播信道,而且产品的种类繁多,涉及多种媒体访问方法,所以两者存在明显的差别。

在局域网中,与OSI参考模型的物理层相同的是:该层负责物理连接并在媒体上传输比特流,主要任务是描述传输媒体接口的一些特性。在局域网中,数据链路层的主要作用与OSI参考模型的数据链路层相同:都通过一些数据链路层协议,在不可靠的传输信道上实现可靠的数据传输;负责帧的传送与控制,但在局域网中,由于各站共享网络公共信道,因此数据链路层必须具有媒体访问控制功能(如何分配信道、如何避免或解决信道争用)。又由于局域网采用的拓扑结构与传输媒体多种多样,相应的媒体访问控制方法也有多种,因此在数据链路功能中应该将与传输媒体有关的部分和无关的部分分开。这样,IEEE 802局域网参考模型中的数据链路层就划分为两个子层:媒体访问控制(MAC)子层和逻辑链路控制(LLC)子层。

与OSI参考模型不同的是:在IEEE 802局域网参考模型中没有网络层。局域网中,在任意两个结点之间只有唯一的一条链路,不需要进行路由选择和流量控制,所以在局域网中不单独设置网络层。

由上面的分析可知,局域网的参考模型只相当于OSI参考模型的最低两层,且两者的物理层和数据链路层之间也有很大差别。在 IEEE 802系列标准中,各个子标准的物理层和媒体访问控制(MAC)子层是有区别的,而逻辑链路控制(LLC)子层是相同的,也就是说,LLC子层实际上是高层协议与任何一种 MAC子层之间的标准接口。

在IEEE802.3标准以太网中,为什么说如果有冲突,那么冲突一定发生在冲突窗口内?或者说一个帧如果在冲突窗口内没有发生冲突,那么该帧就不会再发生冲突?

结点发送数据时,先侦听信道是否有载波,如果有,表示信道忙,那么继续侦听,直至检测到空闲为止;一个数据帧在从结点A向最远的结点传输的过程中,如果有其他结点也正在发送数据,那么此时就会发生冲突,冲突后的信号需要经过冲突窗口时间后传回结点A,结点A会检测到冲突,所以说如果有冲突,那么一定发生在冲突窗口内,如果在冲突窗口内没有发生冲突,之后如果其他结点再要发送数据,那么就会侦听到信道忙,而不会发送数据,从而不会再发生冲突。

一个以太网的速率从10Mb/s升级到100Mb/s,满足CSMA/CD冲突条件。为使其正常工作,需做哪些调整?为什么?

由于10BASE-T 要比10BASE2和10BASE5的优越性更明显,因此所有快速以太网系统都使用集线器(Hub),而不使用同轴电缆。100BASE-T MAC 与10Mb/s的经典以太网MAC几乎一样,唯一不同的参数就是帧际间隙时间,10Mb/s 以太网是9.6 $\mu$ s(最小值),快速以太网(100Mb/s)是0.96 $\mu$ s(最小值)。另外,为了维持最小分组尺寸不变,需要减小最大冲突域直径。所有这些调整的主要原因是速率提高到了原来以太网的10倍。

HDLC协议是PPP协议的基础,它使用位填充来实现透明传输。但PPP协议却使用字符填充而不使用位填充,为什么?

PPP被明确地设计成以软件形式实现,而不像HDLC协议那样几乎总以硬件形式实现。对于软件实现,完全用字节操作比用单个位操作简单得多。此外,PPP被设计成与调制解调器一道使用,而调制解调器是以一个字节而非一个比特为单元接收和发送数据的。

假定连接到透明网桥上的一台计算机把-一个数据帧发给网络上的一个不存在的设备,网桥将如何处理这个帧?

网桥不知道网络上是否存在该设备,它只知道在其转发表中没有这个设备的MAC地址。因此,当网桥收到这个目的地址未知的帧时,它将扩散该帧,即把该帧发送到所连接的除输入网段外的所有其他网段。

关于冲突域(碰撞域)和广播域辨析。

一块网卡发送信息时,只要有可能和另一块网卡冲突,那么这些可能冲突的网卡就构成冲突域。一块网卡发出一个广播时,能收到这个广播的所有网卡的集合称为一个广播域。一般来说,-一个网段就是一个冲突域,一个局域网就是一个广播域。

关于物理层、数据链路层、网络层设备对于隔离冲突域和广播域的总结。

图片详情找不到图片(Image not found)

与传统共享式局域网相比,使用局域网交换机的交换式局域网为什么能改善网络的性能和服务质量?

传统共享式局域网的核心设备是集线器,而交换式局域网的核心是以太网交换机。在使用共享式集线器的传统局域网中,在任何时刻只能有一个结点能够通过共享通信信道发送数据;在使用交换机的交换式局域网中,交换机可以在它的多个端口之间建立多个并发连接,从而实现结点之间数据的并发传输,有效地改善网络性能和服务质量。

试分析中继器、集线器、网桥和交换机这四种网络互联设备的区别与联系。

这四种设备都是用于互联、扩展局域网的连接设备,但它们工作的层次和实现的功能不同。

$\color{green}{\text{中继器}}$ 工作在物理层,用来连接两个速率相同且数据链路层协议也相同的网仅,共力肥足们除数字信号在基带传输中由于经过一长段电缆而造成的失具和装减,便史信亏的波形个’独度o到从需的要求;其原理是信号再生。

$\color{green}{\text{集线器}}$ (Hub)也工作在物理层,相当于一个多接口的中继器,它可将多个结点连接成一个共享式的局域网,但任何时刻都只能有一个结点通过公共信道发送数据。

$\color{green}{\text{网桥}}$ 工作在数据链路层,可以互联不同的物理层、不同的MAC子层及不同速率的以太网。网桥具有过滤帧及存储转发帧的功能,可以隔离冲突域,但不能隔离广播域。

$\color{green}{\text{交换机}}$ 工作在数据链路层,相当于一个多端口的网桥,是父换式同域网的核心仅备。匕叶端口之间建立多个并发连接,实现多个结点之间的并发传输。因此,父换机的母个项口结点所白用的带宽不会因为端口结点数目的增加而减少,且整个交换机的忌带苋会阻看项口给点的增加增加。交换机一般工作在全双工方式,有的局域网交换机采用存储转发万式进仃转反,也有的父换机采用直通交换方式(即在收到帧的同时立即按帧的目的 MAC地址状疋以似的将及作,心不必先缓存再处理)。另外,利用交换机可以实现虚拟局域网(VLAN),VLAN不仅可以隔离冲突域,而且可以隔离广播域。

交换机和网桥的不同之处。

尽管交换机也称多端口网桥,但两者仍有许多不同之处。主要包括以下3点:

1)网桥的端口一般连接局域网,而交换机的端口一般直接与局域网的主机相连。

2)交换机允许多对计算机同时通信,而网桥仅允许每个网段上的计算机同时通信。

3)网桥采用存储转发进行转发,而以太网交换机还可以采用直通方式进行转发,且以太网交换机采用了专用的交换结构芯片,转发速度比网桥快。

网络层

【考纲内容】

(一)网络层的功能

异构网络互联;路由与转发; $\color{red}{\text{SDN基本概念}}$ (2022新增);拥塞控制

(二)路由算法

静态路由与动态路由;距离-向量路由算法;链路状态路由算法;层次路由

(三)IPv4

IPv4分组;IPv4地址与NAT;子网划分与子网掩码、CIDR、路由聚合、ARP、DHCP与ICMP

(四)IPv6

IPv6的主要特点;IPv6地址

(五)路由协议
自治系统;域内路由与域间路由;RIP路由协议;OSPF路由协议;BGP路由协议

(六)IP组播

组播的概念;IP组播地址

(七)移动IP

移动IP的概念;移动IP通信过程

(八)网络层设备

路由器的组成和功能;路由表与路由转发

【复习提示】

本章是历年考查的重中之重,尤其是结合第3章、第5章、第6章出综合题的概率很大。其中IPv4以及路由的相关知识点是核心,历年真题都有涉及,因此必须牢固掌握其原理,也要多做题,以便灵活应用。本章的其他知识点,如IP组播、移动IP、IPv6也要有所了解。

RIP和OSPF在概念上存在一点微妙的互补,导致有点混乱

  • RIP只向相邻路由器交换信息,但交换整个自治系统的信息
  • OSPF向所有路由器发送信息,只发送相邻路由器的链路状态信息

网络层的功能

互联网在网络层的 $\color{red}{\text{设计思路}}$ 是,向上只提供 $\color{green}{\text{简单灵活的}}$ 、 $\color{green}{\text{无连接的}}$ 、 $\color{green}{\text{尽最大努力交付}}$ 的 $\color{green}{\text{数据报服务}}$ 。也就是说,所传送的分组可能出错、去失、重复、天序或超的,这肌使守内给THA中器比较简单,而且价格低廉。如果主机中的进程之间的通信需要是可靠的,那么可以由更高层的传输层来负责。采用这种设计思路的好处是:网络的造价大大降低,运行方式灵活,能够适应多种应用。互联网能够发展到今日的规模,充分证明了当初采用这种设计思想的正确性。

异构网络互联

要在全球范围内把数以百万计的网络互联起来,并且能够互相通信,是一项非常复杂的任务,此时需要解决许多问题,比如不同的寻址方案、不同的网络接入机制、不同的差错处理方法、不同的路由选择机制等。用户的需求是多样的,没有一种单一的网络能适应所有用户的需求。网络层所要完成的任务之一就是使这些异构的网络实现互联。

所谓网络互联,是指将两个以上的计算机网络,通过一定的方法,用一种或多种通信处理设备(即中间设备)相互连接起来,以构成更大的网络系统。中间设备又称 $\color{green}{\text{中间系统}}$ 或 $\color{green}{\text{中继系统}}$ 。根据所在的层次,中继系统分为以下4种:

1) $\color{red}{\text{物理层中继系统}}$ :中继器,集线器(Hub)。

2) $\color{red}{\text{数据链路层中继系统}}$ :网桥或交换机。

3) $\color{red}{\text{网络层中继系统}}$ :路由器。

4) $\color{red}{\text{网络层以上的中继系统}}$ :网关。

使用物理层或数据链路层的中继系统时,只是把一个网络扩大了,而从网络层的角度看,它仍然是同一个网络,一般并不称为网络互联。因此网络互联通常是指用路由器进行网络互联和路由选择。路由器是一台专用计算机,用于在互联网中进行路由选择。

注意:由于历史原因,许多有关TCP/IP的文献也把网络层的路由器称为网关。

TCP/IP体系在网络互联上采用的做法是在网络层(即IP层)采用标准化协议,但相互连接的网络可以是异构的。图4.1(a)表示用许多计算机网络通过一些路由器进行互联。由于参加互联的计算机网络都使用相同的网际协议(Internet Protocol,IP),因此可以把互联后的计算机网络视为如图4.1(b)所示的一个虚拟IP网络。

图4.1 IP网的概念找不到图片(Image not found)

虚拟互联网络也就是逻辑互联网络,即互联起来的各种物理网络的异构性本来是客观存在的,但是通过P就可以使这些性能各异的网络在网络层上看起来好像是一个统一的网络。这种使用IP的虚拟互联网络可简称为IP网络。

使用虚拟互联网络的好处是:当互联网上的主机进行通信时,就好像在一个网络上通信一样,而看不见互联的具体的网络异构细节(如具体的编址方案、路由选择协议等)。

路由与转发

路由器主要完成两个功能:一是路由选择(确定哪一条路径),二是分组转发(当一个分组到达时所采取的动作)。前者是根据特定的路由选择协议构造出路由表,同时经常或定期地和相邻路由器交换路由信息而不断地更新和维护路由表。后者处理通过路由器的数据流,关键操作是转发表查询、转发及相关的队列管理和任务调度等。

1) $\color{green}{\text{路由选择}}$ 。指按照复杂的分布式算法,根据从各相邻路由器所得到的关于整个网络拓扑的变化情况,动态地改变所选择的路由。

2) $\color{green}{\text{分组转发}}$ 。指路由器根据转发表将用户的IP数据报从合适的端口转发出去。

路由表是根据路由选择算法得出的,而转发表是从路由表得出的。转发表的结构应当使查找过程最优化,路由表则需要对网络拓扑变化的计算最优化。在讨论路由选择的原理时,往往不去区分转发表和路由表,而是笼统地使用路由表一词。

拥塞控制

在通信子网中,因出现过量的分组而引起网络性能下降的现象称为拥塞。例如,某个路由器所在链路的带宽为RB/s,如果IP分组只从它的某个端口进入,那么其速率为 $r{in}$ B/s。当 $r{in}$ =R时,可能看起来是件“好事”,因为链路带宽被充分利用。但是,如图4.2所示,当分组到达路由器的速率接近R时,平均时延急剧增加,并且会有大量的分组被丢弃(路由器端口的缓冲区是有限的),整个网络的吞吐量会骤降,源与目的地之间的平均时延也会变得近乎无穷大。

图4.2分组发送速率与时延的关系找不到图片(Image not found)

判断网络是否进入拥塞状态的方法是,观察网络的吞吐量与网络负载的关系:如果随着网络负载的增加,网络的吞吐量明显小于正常的吞吐量,那么网络就可能已进入“轻度拥塞”状态;如果网络的吞吐量随着网络负载的增大而下降,那么网络就可能已进入拥塞状态;如果网络的负载继续增大,而网络的吞吐量下降到零,那么网络就可能已进入死锁状态。

为避免拥塞现象的出现,要采用能防止拥塞的一系列方法对子网进行拥塞控制。拥塞控制主要解决的问题是如何获取网络中发生拥塞的信息,从而利用这些信息进行控制,以避免由于拥塞而出现分组的丢失,以及严重拥塞而产生网络死锁的现象。

拥塞控制的作用是确保子网能够承载所达到的流量,这是一个全局性的过程,涉及各方面的行为:主机、路由器及路由器内部的转发处理过程等。单一地增加资源并不能解决拥塞。

流量控制和拥塞控制的区别:流量控制往往是指在发送端和接收端之间的点对点通信量的控制。流量控制所要做的是抑制发送端发送数据的速率,以便使接收端来得及接收。而拥塞控制必须确保通信子网能够传送待传送的数据,是一个全局性的问题,涉及网络中所有的主机、路由器及导致网络传输能力下降的所有因素。

拥塞控制的方法有两种:

1) $\color{green}{\text{开环控制}}$ 。在设计网络时事先将有关发生拥塞的因素考虑周到,力求网络在工作时不产生拥塞。这是一种静态的预防方法。一旦整个系统启动并运行,中途就不再需要修改。开环控制手段包括确定何时可接收新流量、何时可丢弃分组及丢弃哪些分组,确定何种调度策略等。所有这些手段的共性是,在做决定时不考虑当前网络的状态。

2) $\color{green}{\text{闭环控制}}$ 。事先不考虑有关发生拥塞的各种因素,采用监测网络系统去监视,及时检测哪里发生了拥塞,然后将拥塞信息传到合适的地方,以便调整网络系统的运行,并解决出现的问题。闭环控制是基于反馈环路的概念,是一种动态的方法。

路由算法

静态路由与动态路由

路由器转发分组是通过路由表转发的,而路由表是通过各种算法得到的。从能否随网络的通信量或拓扑自适应地进行调整变化来划分,路由算法可以分为如下两大类。

$\color{green}{\text{静态路由算法}}$ (又称非自适应路由算法)。指由网络管理员手工配置的路由信息。当网络的拓扑结构或链路的状态发生变化时,网络管理员需要手工去修改路由表中相关的静态路由信息。它不能及时适应网络状态的变化,对于简单的小型网络,可以采用静态路由。

$\color{green}{\text{动态路由算法}}$ (又称自适应路由算法)。指路由器上的路由表项是通过相互连接的路由器之间彼此交换信息,然后按照一定的算法优化出来的,而这些路由信息会在一定时间间隙里不断更新,以适应不断变化的网络,随时获得最优的寻路效果。

静态路由算法的特点是简便和开销较小,在拓扑变化不大的小网络中运行效果很好。动态路由算法能改善网络的性能并有助于流量控制;但算法复杂,会增加网络的负担,有时因对动态变化的反应太快而引起振荡,或反应太慢而影响网络路由的一致性,因此要仔细设计动态路由算法,以发挥其优势。常用的动态路由算法可分为 $\color{red}{\text{两类}}$ : $\color{green}{\text{距离-向量路由算法}}$ 和 $\color{green}{\text{链路状态路由算法}}$ 。

距离-向量路由算法

在距离-向量路由算法中,所有结点都定期地将它们的整个路由选择表传送给所有与之直接相邻的结点。这种路由选择表包含:

  • 每条路径的目的地(另一结点)。
  • 路径的代价(也称距离)。

注意:这里的距离是一个抽象的概念,如RIP就将距离定义为“跳数”。跳数指从源端口到达目的端口所经过的路由器个数,每经过一个路由器,跳数加1。

在这种算法中,所有结点都必须参与距离向量交换,以保证路由的有效性和一致性,也就是说,所有的结点都监听从其他结点传来的路由选择更新信息,并在下列情况下更新它们的路由选择表:

1)被通告一条新的路由,该路由在本结点的路由表中不存在,此时本地系统加入这条新的路由。

2)发来的路由信息中有一条到达某个目的地的路由,该路由与当前使用的路由相比,有较短的距离(较小的代价)。此种情况下,就用经过发送路由信息的结点的新路由替换路由表中到达那个目的地的现有路由。

距离-向量路由算法的实质是,迭代计算一条路由中的站段数或延迟时间,从而得到到达一个目标的最短(最小代价)通路。它要求每个结点在每次更新时都将它的全部路由表发送给所有相邻的结点。显然,更新报文的大小与通信子网的结点个数成正比,大的通信子网将导致很大的更新报文。由于更新报文发给直接邻接的结点,所以所有结点都将参加路由选择信息交换。基于这些原因,在通信子网上传送的路由选择信息的数量很容易变得非常大。

最常见的距离-向量路由算法是 $\color{green}{\text{RIP算法}}$ ,它采用“跳数”作为距离的度量。

链路状态路由算法

链路状态路由算法要求每个参与该算法的结点都具有完全的网络拓扑信息,它们执行下述两项任务。第一,主动测试所有邻接结点的状态。两个共享一条链接的结点是相邻结点,它们连接到同一条链路,或者连接到同一广播型物理网络。第二,定期地将链路状态传播给所有其他结点(或称路由结点)。典型的链路状态算法是 $\color{green}{\text{OSPF算法}}$ 。

在一个链路状态路由选择中,一个结点检查所有直接链路的状态,并将所得的状态信息发送给网上的所有其他结点,而不是仅送给那些直接相连的结点。每个结点都用这种方式从网上所有其他的结点接收包含直接链路状态的路由选择信息。

每当链路状态报文到达时,路由结点便使用这些状态信息去更新自己的网络拓扑和状态“视野图”,一旦链路状态发生变化,结点就对更新的网络图利用Dijkstra $\color{green}{\text{最短路径算法}}$ 重新计算路由,从单一的源出发计算到达所有目的结点的最短路径。

链路状态路由算法主要有三个特征:

1)向本自治系统中所有路由器发送信息,这里使用的方法是泛洪法,即路由器通过所有端口向所有相邻的路由器发送信息。而每个相邻路由器又将此信息发往其所有相邻路由器(但不再发送给刚刚发来信息的那个路由器)。

2)发送的信息是与路由器相邻的所有路由器的链路状态,但这只是路由器所知道的部分信息。所谓“链路状态”,是指说明本路由器与哪些路由器相邻及该链路的“度量”。对于OSPF 算法,链路状态的“度量”主要用来表示费用、距离、时延、带宽等。

3)只有当链路状态发生变化时,路由器才向所有路由器发送此信息。

由于一个路由器的 $\color{green}{\text{链路状态}}$ 只涉及 $\color{green}{\text{相邻路由器}}$ 的连通状态,而与整个互联网的规模并无直接关系,因此链路状态路由算法可以用于大型的或路由信息变化聚敛的互联网环境。

链路状态路由算法的主要优点是,每个路由结点都使用同样的原始状态数据独立地计算路径,而不依赖中间结点的计算;链路状态报文不加改变地传播,因此采用该算法易于查找故障。当一个结点从所有其他结点接收到报文时,它可以在本地立即计算正确的通路,保证一步汇聚。最后,由于链路状态报文仅运载来自单个结点关于直接链路的信息,其大小与网络中的路由结点数目无关,因此链路状态算法比距离-向量算法有更好的规模可伸展性。

距离-向量路由算法与链路状态路由算法的比较:在距离-向量路由算法中,每个结点仅与它的直接邻居交谈,它为它的邻居提供从自己到网络中所有其他结点的最低费用估计。在链路状态路由算法中,每个结点通过广播的方式与所有其他结点交谈,但它仅告诉它们与它直接相连的链路的费用。相较之下,距离-向量路由算法有可能遇到 $\color{green}{\text{路由环路}}$ 等问题。

层次路由

当网络规模扩大时,路由器的路由表成比例地增大。这不仅会消耗越来越多的路由器缓冲区空间,而且需要用更多CPU时间来扫描路由表,用更多的带宽来交换路由状态信息。因此路由选择必须按照层次的方式进行。

因特网将整个互联网划分为许多较小的自治系统(注意一个自治系统中包含很多局域网),每个自治系统有权自主地决定本系统内应采用何种路由选择协议。如果两个自治系统需要通信,那么就需要一种在两个自治系统之间的协议来屏蔽这些差异。据此,因特网把路由选择协议划分为两大类:

1)一个自治系统内部所使用的路由选择协议称为 $\color{green}{\text{内部网关协议}}$ (IGP),也称域内路由选择,具体的协议有RIP和 OSPF等。

2)自治系统之间所使用的路由选择协议称为 $\color{green}{\text{外部网关协议}}$ (EGP)(Exterior Gateway Protocol),也称域间路由选择,用在不同自治系统的路由器之间交换路由信息,并负责为分组在不同自治系统之间选择最优的路径。具体的协议有BGP。

使用层次路由时,OSPF将一个自治系统再划分为若干区域(Area),每个路由器都知道在本区域内如何把分组路由到目的地的细节,但不用知道其他区域的内部结构。

采用分层次划分区域的方法虽然会使交换信息的种类增多,但也会使OSPF协议更加复杂。但这样做却能使每个区域内部交换路由信息的通信量大大减小,因而使OSPF协议能够用于规模很大的自治系统中。

IPv4

  • 可以配合期末的总结

IPv4分组

IPv4即现在普遍使用的IP(版本4)。IP定义数据传送的基本单元-—IP分组及其确切的数据格式。IP也包括一套规则,指明分组如何处理、错误怎样控制。特别是IP还包含非可靠投递的思想,以及与此关联的分组路由选择的思想。

IPv4分组的格式

一个IP分组由首部和数据部分组成。首部前一部分的长度固定,共20B,是所有IP分组必须具有的。在首部固定部分的后面是一些可选字段,其长度可变,用来提供错误检测及安全等机制。IP数据报的格式如图4.3所示。

图4.3 IP数据报的格式找不到图片(Image not found)

IP首部的部分重要字段含义如下:

1)版本。指IP的版本,目前广泛使用的版本号为4。

2)首部长度。占4位,可以表示的最大十进制数是15。以32位为单位,最大值为60B(15x4B)。最常用的首部长度是20B,此时不使用任何选项(即可选字段)。

3)总长度。占16位。指首部和数据之和的长度,单位为字节,因此数据报的最大长度为 $2^{16}$ -1=65535B。以太网帧的最大传送单元(MTU)为1500B,因此当一个IP数据报封装成帧时,数据报的总长度(首部加数据)一定不能超过下面的数据链路层的MTU值。

4)标识。占16位。它是一个计数器,每产生一个数据报就加1,并赋值给标识字段。但它并不是“序号”(因为IP是无连接服务)。当一个数据报的长度超过网络的MTU时,必须分片,此时每个数据报片都复制一次标识号,以便能正确重装成原来的数据报。

5)标志。占3位。标志字段的最低位为MF,MF = 1表示后面还有分片,MF =0表示最后一个分片。标志字段中间的一位是DF,只有当DF=0时才允许分片。【格式为0、DF、MF】

6)片偏移。占13位。它指出较长的分组在分片后,某片在原分组中的相对位置。片偏移以8个字节为偏移单位,即每个分片的长度一定是8B(64位)的整数倍。

7)生存时间(TTL)。占8位。数据报在网络中可通过的路由器数的最大值,标识分组在网络中的寿命,以确保分组不会永远在网络中循环。路由器在转发分组前,先把TTL减1。若TTL被减为0,则该分组必须丢弃。

8)协议。占8位。指出此分组携带的数据使用何种协议,即分组的数据部分应交给哪个传输层协议,如TCP、UDP等。其中值为6表示TCP,值为17表示UDP。

9)首部校验和。占16位。IP数据报的首部校验和只校验分组的首部,而不校验数据部分。10)源地址字段。占4B,标识发送方的IP地址。

11)目的地址字段。占4B,标识接收方的IP地址。

注意:在IP数据报首部中有三个关于长度的标记,一个是首部长度、一个是总长度、一个是片偏移,基本单位分别为4B、1B、8B(这个一定要记住)。题目中经常会出现这几个长度之间的加减运算。另外,读者要熟悉IP数据报首部的各个字段的意义和功能,但不需要记忆IP数据报的首部,正常情况下如果需要参考首部,题目都会直接给出。第5章学到的TCP、UDP的首部也是一样的。

数据报分片

一个数据链路层数据报能承载的最大数据量称为最大传送单元(MTU)。因为IP数据报被封装在数据链路层数据报中,因此数据链路层的 MTU严格地限制着IP数据报的长度,而且在IP数据报的源与目的地路径上的各段链路可能使用不同的数据链路层协议,有不同的MTU。例如,以太网的MTU为1500B,而许多广域网的MTU不超过576B。当IP数据报的总长度大于链路MTU时,就需要将IP数据报中的数据分装在两个或多个较小的IP数据报中,这些较小的数据报称为 $\color{green}{\text{片}}$ 。

片在目的地的网络层被重新组装。目的主机使用IP 首部中的标识、标志和片偏移字段来完成对片的重组。创建一个IP数据报时,源主机为该数据报加上一个标识号。当一个路由器需要将一个数据报分片时,形成的每个数据报(即片)都具有原始数据报的标识号。当目的主机收到来自同一发送主机的一批数据报时,它可以通过检查数据报的标识号来确定哪些数据报属于同一个原始数据报的片。P首部中的标志位有3比特,但只有后2比特有意义,分别是MF位.(MoreFragment)和DF位(Don’t Fragment)。只有当DF =0时,该IP数据报才可以被分片。MF则用来告知目的主机该IP数据报是否为原始数据报的最后一个片。当MF= 1时,表示相应的原始数据报还有后续的片;当MF= 0时,表示该数据报是相应原始数据报的最后一个片。 $\color{red}{\text{目的主机}}$ 在 $\color{green}{\text{对片进行重组}}$ 时,使用片偏移字段来确定片应放在原始数据报的哪个位置。

IP分片涉及一定的计算。例如,一个长4000B的IP数据报(首部20B,数据部分3980B)到达一个路由器,需要转发到一条MTU为1500B 的链路上。这意味着原始数据报中的3980B数据必须被分配到3个独立的片中(每片也是一个IP数据报)。假定原始数据报的标识号为777,那么分成的3片如图4.4所示。可以看出,由于偏移值的单位是8B,所以除最后一个片外,其他所有片中的有效数据载荷都是8的倍数。

图4.4 IP分片的例子找不到图片(Image not found)
网络层转发分组的流程

网络层的路由器执行的分组转发算法如下:

1)从数据报的首部提取目的主机的IP地址D,得出目的网络地址N。

2)若网络N与此路由器直接相连,则把数据报直接交付给目的主机 D,这称为路由器的直接交付;否则是间接交付,执行步骤3)。

3)若路由表中有目的地址为D的特定主机路由(对特定的目的主机指明一个特定的路由,通常是为了控制或测试网络,或出于安全考虑才采用的),则把数据报传送给路由表中所指明的下一跳路由器;否则,执行步骤4)。

4)若路由表中有到达网络N的路由,则把数据报传送给路由表指明的下一跳路由器;否则,执行步骤5)。

5)若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器;否则,执行步骤6)。

6)报告转发分组出错。

注意:得到下一跳路由器的IP地址后并不是直接将该地址填入待发送的数据报,而是将该IP地址转换成MAC地址(通过ARP),将其放到MAC帧首部中,然后根据这个MAC地址找到下一跳路由器。在不同网络中传送时,MAC帧中的源地址和目的地址要发生变化,但是网桥在转发帧时,不改变帧的源地址,请注意区分。

IPv4地址与NAT

IPv4地址

连接到因特网上的每台主机(或路由器)都分配一个32比特的全球唯一标识符,即IP地址。传统的IP地址是分类的地址,分为A、B、C、D、E五类。

无论哪类IP地址,都由网络号和主机号两部分组成。即IP地址::={<网络号>,<主机号>}。其中网络号标志主机(或路由器)所连接到的网络。一个网络号在整个因特网范围内必须是唯一的。主机号标志该主机(或路由器)。一台主机号在它前面的网络号所指明的网络范围内必须是唯一的。由此可见,一个IP地址在整个因特网范围内是唯一的。

分类的IP地址如图4.5所示。

图4.5分类的IP地址找不到图片(Image not found)

在各类IP地址中,有些IP地址具有特殊用途,不用做主机的IP地址:

  • 主机号全为0表示本 $\color{green}{\text{网络本身}}$ ,如202.98.174.0。
  • 主机号全为1表示本网络的 $\color{green}{\text{广播地址}}$ ,又称 $\color{green}{\text{直接广播地址}}$ ,如202.98.174.255。
  • 127.0.0.0保留为 $\color{green}{\text{环回自检(Loopback Test)地址}}$ ,此地址表示任意主机本身,目的地址为环回地址的IP数据报永远不会出现在任何网络上。
  • 32位全为0,即0.0.0.0表示本网络上的本主机。
  • 32位全为1,即255.255.255.255表示整个TCP/IP网络的广播地址,又称 $\color{green}{\text{受限广播地址}}$ 。

  • 127.0.0.0到127.255.255.255都是保留地址,参考文献

  • 图片详情找不到图片(Image not found)

实际使用时,由于路由器对广播域的隔离,255.255.255.255等效为 $\color{green}{\text{本网络的广播地址}}$ 。

表4.1 常用的三种类别IP地址的使用范围找不到图片(Image not found)

在表4.1中,A类地址可用的网络数为 $2^7$ -2,减2的原因是:第一,网络号字段全为0的IP地址是保留地址,意思是“本网络”;第二,网络号为127的IP地址是环回自检地址。B类地址的可用网络数为 $2^{14}$ -1,减1的原因是128.0这个网络号是 $\color{green}{\text{不可指派}}$ 的。C类地址的可用网络数为 $2^{21}$ -1,减1的原因是网络号为192.0.0的网络是 $\color{green}{\text{不可指派}}$ 的。

IP地址有以下重要特点:

1)每个IP地址都由网络号和主机号两部分组成,因此IP地址是一种分等级的地址结构。分等级的好处是:①IP地址管理机构在分配IP地址时只分配网络号(第一级),而主机号(第二级)则由得到该网络的单位自行分配,方便了IP地址的管理;②路由器仅根据目的主机所连接的网络号来转发分组(而不考虑目标主机号),从而减小了路由表所占的存储空间。

2)IP地址是标志一台主机(或路由器)和一条链路的接口。当一台主机同时连接到两个网络时,该主机就必须同时具有两个相应的IP地址,每个IP地址的网络号必须与所在网络的网络号相同,且这两个IP地址的网络号是不同的。因此IP网络上的一个路由器必然至少应具有两个IP地址(路由器每个端口必须至少分配一个IP地址)。

3)用转发器或桥接器(网桥等)连接的若干LAN仍然是同一个网络(同一个广播域),因此该LAN中所有主机的IP地址的网络号必须相同,但主机号必须不同。

4)在IP地址中,所有分配到网络号的网络(无论是LAN还是WAN)都是平等的。

5)在同一个局域网上的主机或路由器的IP地址中的网络号必须是一样的。路由器总是具有 $\color{green}{\text{两个}}$ 或 $\color{green}{\text{两个以上}}$ 的IP地址,路由器的每个端口都有一个不同网络号的IP地址。

网络地址转换

网络地址转换(NAT)是指通过将专用网络地址(如 Intranet)转换为公用地址(如Internet),从而对外隐藏内部管理的IP地址。它使得整个专用网只需要一个全球IP地址就可以与因特网连通,由于专用网本地IP地址是可重用的,所以NAT大大节省了IP地址的消耗。同时,它隐藏了内部网络结构,从而降低了内部网络受到攻击的风险。

此外,为了网络安全,划出了部分IP地址为私有IP地址。私有IP地址只用于LAN,不用于WAN连接(因此私有IP地址不能直接用于Internet,必须通过网关利用NAT 把私有IP地址转换为Internet中合法的全球IP地址后才能用于Internet),并且允许私有IP地址被LAN重复使用。这有效地解决了IP地址不足的问题。私有IP地址网段如下:

A类:1个A类网段,即 $\color{green}{\text{10}}$ .0.0.0~ $\color{green}{\text{10}}$ .255.255.255。

B类:16个B类网段,即 $\color{green}{\text{172.16}}$ .0.0~ $\color{green}{\text{172.31}}$ .255.255。

C类:256个C类网段,即 $\color{green}{\text{192.168.0}}$ .0~ $\color{green}{\text{192.168.255}}$ .255。

在因特网中的所有路由器,对目的地址是私有地址的数据报一律不进行转发。这种采用私有IP地址的互联网络称为 $\color{green}{\text{专用互联网}}$ 或 $\color{green}{\text{本地互联网}}$ 。私有IP地址也称 $\color{green}{\text{可重用地址}}$ 。

下面以宿舍共享宽带上网为例进行说明。假设某个宿舍办理了2Mbit/s的电信宽带,那么这个宿舍就获得了一个全球IP地址(如138.76.29.7),而宿舍内4台主机使用私有地址(如192.168.0.0网段)。宿舍的网关路由器应该开启NAT功能,并且某时刻路由器上的NAT 转换表见表4.2。那么,当路由器从LAN端口收到源IP及源端口号为192.168.0.2:2233的数据报时,就将其映射成138.76.29.7: 5001,然后从WAN端口发送到因特网上。当路由器从WAN端口收到目的IP及目的端口号为138.76.29.7:5060的数据报时,就将其映射成192.168.0.3: 1234,然后从LAN端口发送给相应的本地主机。这样,只需要一个全球地址,就可以让多台主机同时访问因特网。

注意:普通路由器在转发IP数据报时,不改变其源IP地址和目的IP地址。而NAT路由器在转发IP数据报时,一定要更换其IP地址(转换源IP地址或目的IP地址)。普通路由器仅工作在网络层,而NAT路由器转发数据报时需要查看和转换传输层的端口号。

表4.2一个典型的NAT转换表找不到图片(Image not found)

子网划分与子网掩码、CIDR

子网划分

两级IP地址的缺点:IP地址空间的利用率有时很低;给每个物理网络分配一个网络号会使路由表变得太大而使网络性能变坏;两级的IP地址不够灵活。

从1985年起,在IP地址中又增加了一个“子网号字段”,使两级IP地址变成了三级IP地址。这种做法称为 $\color{green}{\text{子网划分}}$ 。子网划分已成为因特网的正式标准协议。

子网划分的基本思路如下:

  • 子网划分纯属一个单位内部的事情。单位对外仍然表现为没有划分子网的网络。
  • 从主机号借用若干比特作为子网号,当然主机号也就相应减少了相同的比特。三级IP地址的结构如下:IP地址={<网络号>,<子网号>,<主机号>}。
  • 凡是从其他网络发送给本单位某台主机的IP数据报,仍然是根据IP数据报的目的网络号,先找到连接到本单位网络上的路由器。然后该路由器在收到IP数据报后,按目的网络号和子网号找到目的子网。最后把IP数据报直接交付给目的主机。

注意:

1)划分子网只是把IP地址的主机号这部分进行再划分,而不改变IP地址原来的网络号。因此,从一个IP地址本身或IP数据报的首部,无法判断源主机或目的主机所连接的网络是否进行了子网划分。

2) RFC 950规定,对分类的IPv4地址进行子网划分时,子网号不能为全1或全0。但随着CIDR的广泛使用,现在全1和全0的子网号也可使用,但一定要谨慎使用,要弄清你的路由器所用的路由选择软件是否支持 $\color{green}{\text{全0}}$ 或 $\color{green}{\text{全1}}$ 的子网号。

3)不论是分类的IPv4地址还是CIDR,其子网中的主机号为全0或全1的地址都 $\color{green}{\text{不能被指派}}$ 。子网中主机号全0的地址为子网的网络号,主机号全1的地址为子网的广播地址。

子网掩码

为了告诉主机或路由器对一个A类、B类、C类网络进行了子网划分,使用子网掩码来表达对原网络中主机号的借位。

子网掩码是一个与IP地址相对应的、长32bit的二进制串,它由一串1和跟随的一串0组成。其中,1对应于IP地址中的网络号及子网号,而0对应于主机号。计算机只需将IP地址和其对应的子网掩码逐位“与”(逻辑AND运算),就可得出相应子网的网络地址。

现在的因特网标准规定:所有的网络都必须使用子网掩码。如果一个网络未划分子网,那么就采用默认子网掩码。A、B、C类地址的默认子网掩码分别为255.0.0.0、255.255.0.0、255.255.255.0。例如,某主机的IP地址192.168.5.56,子网掩码为255.255.255.0,进行逐位“与”运算后,得出该主机所在子网的网络号为192.168.5.0。

由于子网掩码是一个网络或一个子网的重要属性,所以路由器在相互之间交换路由信息时,必须把自己所在网络(或子网)的子网掩码告诉对方。路由表中的每个条目,除要给出目的网络地址和下跳地址外,还要同时给出该目的网络的子网掩码。

在使用子网掩码的情况下:

1)一台主机在设置IP地址信息的同时,必须设置子网掩码。
2)同属于一个子网的所有主机及路由器的相应端口,必须设置相同的子网掩码。
3)路由器的路由表中,所包含信息的主要内容必须有目的网络地址、子网掩码、下一跳地址。

使用子网掩码时路由器的分组转发算法如下:

1)从收到的分组的首部提取目的IP地址,记为D。

2)先判断是否为直接交付。对路由器直接相连的网络逐个进行检查:用各网络的子网掩码和D逐位相“与”,看结果是否和相应的网络地址匹配。若匹配,则将分组直接交付,否则间接交付,执行步骤3)。

3)若路由表中有目的地址为D的特定主机路由,则将分组传送给路由表中所指明的下一跳路由器;否则,执行4)。

4)对路由表中的每一行(目的网络地址、子网掩码、下一跳地址)中的子网掩码和D逐位相“与”,其结果为N。若N与该行的目的网络地址匹配,则将分组传送给该行指明的下一跳路由器;否则,执行步骤5)。

5)若路由表中有一个默认路由,则将分组传送给路由表中所指明的默认路由器;否则,执行步骤6)。

6)报告转发分组出错。

无分类域间路由选择(CIDR)

pp.161

无分类域间路由选择是在变长子网掩码的基础上提出的一种消除传统A、B、C类网络划分,并且可以在软件的支持下实现超网构造的一种IP地址的划分方法。

例如,如果一个单位需要2000个地址,那么就给它分配一个2048地址的块(8个连续的C类网络),而不是一个完全的B类地址。这样可以大幅度提高IP地址空间的利用率,减小路由器的路由表大小,提高路由转发能力。CIDR的主要特点如下:

1)消除了传统A、B、C类地址及划分子网的概念,因而可以更有效地分配IPv4的地址空间。CIDR使用“网络前缀”的概念代替子网络的概念。因此,IP地址的无分类两级编址为:IP:={<网络前缀>,<主机号>}。

CIDR还使用“斜线记法”(或称CIDR记法),即 IP地址/网络前缀所占比特数。其中,网络前缀所占比特数对应于网络号的部分,等效于子网掩码中连续1的部分。例如,对于128.14.32.5/20这个地址,它的掩码是20个连续的1和后续12个连续的0,通过逐位相“ $\color{green}{\text{与}}$ ”的方法可以得到该地址的网络前缀(或直接截取前20位):

图片详情找不到图片(Image not found)

CIDR虽然不使用子网,但仍然使用“掩码”一词。”CIDR不使用子网”是指CIDR并没有在32位地址中指明若干位作为子网字段。但分配到一个CIDR地址块的组织,仍可以在本组织内根据需要划分出一些子网。例如,某组织分配到地址块/20,就可以再继续划分为8个子网(从主机号中借用3位来划分子网),这时每个子网的网络前缀就变成了23位。全0和全1的主机号地址一般不使用。

2)将网络前缀都相同的连续IP地址组成“CIDR地址块”。一个CIDR地址块可以表示很多地址,这种地址的聚合称为 $\color{green}{\text{路由聚合}}$ ,或称 $\color{green}{\text{构成超网}}$ 。路由聚合使得路由表中的一个项目可以表示多个原来传统分类地址的路由,有利于减少路由器之间的路由选择信息的交换,从而提高网络性能。

例如,在如图4.6所示的网络中,如果不使用路由聚合,那么R1的路由表中需要分别有到网络1和网络2的路由表项。不难发现,网络1和网络2的网络前缀在二进制表示的情况下,前16位都是相同的,第17位分别是0和1,并且从R1到网络1和网络2的路由的下一跳皆为R2。若使用路由聚合,在R1看来,网络1和网络2可以构成一个更大的地址块206.1.0.0/16,到网络1和网络2的两条路由就可以聚合成一条到206.1.0.0/16的路由。

图4.6路由聚合的例子找不到图片(Image not found)

CIDR地址块中的地址数一定是2的整数次幂,实际可指派的地址数通常为 $2^N$ -2,N表示主机号的位数,主机号全0代表网络号,主机号全1为广播地址。网络前缀越短,其地址块所包含的地址数就越多。而在三级结构的IP地址中,划分子网使网络前缀变长。

CIDR的优点在于网络前缀长度的灵活性。由于上层网络的前缀长度较短,因此相应的路由表的项目较少。而内部又可采用延长网络前缀的方法来灵活地划分子网。

最长前缀匹配(最佳匹配):使用CIDR时,路由表中的每个项目由“网络前缀”和“下一跳地址”组成。在查找路由表时可能会得到不止一个匹配结果。此时,应当从匹配结果中选择具有最长网络前缀的路由,因为网络前缀越长,其地址块就越小,因而路由就越具体。

CIDR查找路由表的方法:为了更加有效地查找最长前缀匹配,通常将无分类编址的路由表存放在一种层次式数据结构中,然后自上而下地按层次进行查找。这里最常用的数据结构就是 $\color{green}{\text{二叉线索}}$ 。

ARP、DHCP 与ICMP

IP地址与硬件地址

IP地址是网络层使用的地址,它是分层次等级的。硬件地址是数据链路层使用的地址(如MAC地址),它是平面式的。在网络层及网络层之上使用IP地址,IP地址放在IP数据报的首部.而MAC地址放在MAC帧的首部。通过数据封装,把IP数据报分组封装为MAC帧后,数据链路层看不见数据报分组中的IP地址。

由于路由器的隔离,IP网络中无法通过广播方式依靠MAC地址来完成跨网络的寻址,因此在IP网络的网络层只使用IP地址来完成寻址。寻址时,每个路由器依据其路由表(依靠静态路由或动态路由协议生成)选择到目标网络(即主机号全为0的网络地址)需要转发到的下一跳(路由器的物理端口号或下一网络地址),而IP分组通过多次路由转发到达目标网络后,改为在目标LAN中通过数据链路层的 MAC地址以广播方式寻址。这样可以提高路由选择的效率。

1)在IP层抽象的互联网上只能看到IP数据报。

2)虽然在IP数据报首部中有完整的源IP地址和目的IP地址,但路由器只根据目的地址的网络号进行路由选择。

3)在局域网的数据链路层,只能看见 MAC帧。而通过路由器转发IP分组时,此IP分组在每个网络中都被路由器解封装和重新封装。因此IP数据报在被路由器转发时,其数据链路层封装所使用的MAC地址是不断改变的。这也决定了无法使用MAC地址跨网络通信。

4)尽管互联在一起的网络的硬件地址体系各不相同,但IP层抽象的互联网却屏蔽了下层这些复杂的细节。只要我们在网络层上讨论问题,就能够使用统一的、抽象的IP地址研究主机与主机或路由器之间的通信。

地址解析协议(ARP)

无论网络层使用什么协议,在实际网络的链路上传送数据帧时,最终必须使用硬件地址。所以需要一种方法来完成IP地址到 MAC地址的映射,这就是 $\color{green}{\text{地址解析协议}}$ (Address ResolutionProtocol,ARP)。每台主机都设有一个ARP 高速缓存,用来存放本局域网上各主机和路由器的IP地址到MAC地址的映射表,称ARP表。使用ARP来动态维护此ARP表。

ARP 工作在网络层,其工作原理如下:主机A欲向本局域网上的某台主机B发送IP数据报时,先在其ARP高速缓存中查看有无主机B的IP地址。如有,就可查出其对应的硬件地址,再将此硬件地址写入MAC 帧,然后通过局域网将该MAC帧发往此硬件地址。如果没有,那么就通过使用目的MAC地址为 $\color{green}{\text{FF-FF-FF-FF-FF-FF}}$ 的帧来封装并 $\color{green}{\text{广播ARP请求分组}}$ ,使同一个局域网里的所有主机收到ARP请求。主机B收到该ARP请求后,向主机A发出响应ARP分组,分组中包含主机B的IP与MAC地址的映射关系,主机A在收到后将此映射写入ARP缓存,然后按查询到的硬件地址发送MAC帧。 $\color{red}{\text{ARP}}$ 由于“看到了”IP地址,所以它工作在 $\color{green}{\text{网络层}}$ ,而NAT路由器由于“看到了” $\color{red}{\text{端口}}$ ,所以它工作在 $\color{green}{\text{传输层}}$ 。对于某个协议工作在哪个层次,读者应该能通过协议的工作原理进行猜测。

注意:ARP用于解决 $\color{green}{\text{同一个局域网上}}$ 的主机或路由器的IP地址和硬件地址的映射问题。如果所要找的主机和源主机不在同一个局域网上,那么就要通过ARP找到一个位于本局域网上的某个路由器的硬件地址,然后把分组发送给这个路由器,让这个路由器把分组转发给下一个网络。剩下的工作就由下一个网络来做,尽管ARP请求分组是广播发送的,但ARP响应分组是普通的单播,即从一个源地址发送到一个目的地址。

ARP的4种典型情况总结如下:

1)发送方是主机时,要把IP数据报发送到本网络上的另一台主机。这时用ARP找到目的主机的硬件地址。

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

3)发送方是路由器时,要把IP数据报转发到本网络上的一台主机。这时用ARP找到目的主机的硬件地址。

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

从IP 地址到硬件地址的解析是自动进行的,主机的用户并不知道这种地址解析过程。只要主机或路由器和本网络上的另一个已知IP地址的主机或路由器进行通信,ARP 就会自动地将这个IP地址解析为数据链路层所需要的硬件地址。

动态主机配置协议(DHCP)

动态主机配置协议(Dynamic Host Configuration Protocol,DHCP)常用于给主机动态地分配IP地址,它提供了即插即用的联网机制,这种机制允许一台计算机加入新的网络和获取IP地址而不用手工参与。DHCP是 $\color{green}{\text{应用层}}$ 协议,它是基于 $\color{green}{\text{UDP}}$ 的。

DHCP 的工作原理如下:使用客户/服务器方式。需要IP地址的主机在启动时就向 DHCP服务器广播发送发现报文,这时该主机就成为DHCP客户。本地网络上所有主机都能收到此广播报文,但只有DHCP服务器才回答此广播报文。DHCP服务器先在其数据库中查找该计算机的配置信息。若找到,则返回找到的信息。若找不到,则从服务器的IP地址池中取一个地址分配给该计算机。DHCP服务器的回答报文称为 $\color{green}{\text{提供报文}}$ 。

DHCP服务器聚合DHCP客户端的交换过程如下:

1)DHCP客户机广播“DHCP发现”消息,试图找到网络中的DHCP 服务器,以便从 DHCP服务器获得一个IP地址。

2)DHCP服务器收到“DHCP发现”消息后,向网络中广播“DHCP提供”消息,其中包括提供 DHCP客户机的IP地址和相关配置信息。

3)DHCP客户机收到“DHCP提供”消息,如果接收DHCP服务器所提供的相关参数,那么通过广播“DHCP请求”消息向DHCP服务器请求提供IP地址。

4)DHCP服务器广播“DHCP确认”消息,将IP地址分配给DHCP客户机。

DHCP 允许网络上配置多台DHCP服务器,当DHCP客户机发出 DHCP请求时,有可能收到多个应答消息。这时,DHCP客户机只会挑选其中的一个,通常挑选最先到达的。

DHCP服务器分配给DHCP客户的地址是临时的,因此 DHCP客户只能在一段有限的时间内使用这个分配到的IP地址。DHCP称这段时间为租用期。租用期的数值应由 DHCP服务器自己决定,DHCP客户也可在自己发送的报文中提出对租用期的要求。

DHCP是应用层协议,因为它是通过客户/服务器方式工作的,DHCP客户端向DHCP服务器请求服务。读者在后面的学习中会了解到,应用层协议有两种工作方式:客户/服务器方式和P2P方式,而其他层次的协议是没有这两种工作方式的。

DHCP的客户端和服务器端需要通过广播方式来进行交互,原因是在DHCP执行初期,客户端不知道服务器端的IP地址,而在执行中间,客户端并未被分配IP地址,从而导致两者之间的通信必须采用广播的方式。采用UDP而不采用TCP的原因也很明显:TCP需要建立连接,如果连对方的IP地址都不知道,那么更不可能通过双方的套接字建立连接。

网际控制报文协议(ICMP)

为了提高IP数据报交付成功的机会,在网络层使用了网际控制报文协议(Internet ControlMessage Protocol,ICMP)来让主机或路由器报告差错和异常情况。ICMP报文作为IP层数据报的数据,加上数据报的首部,组成IP数据报发送出去。ICMP是 $\color{green}{\text{IP层协议}}$ 。

ICMP报文的种类有两种,即 $\color{green}{\text{ICMP差错报告报文}}$ 和 $\color{green}{\text{ICMP询问报文}}$ 。

ICMP差错报告报文用于目标主机或到目标主机路径上的路由器向源主机报告差错和异常情况。共有以下5种类型:

1) $\color{green}{\text{终点不可达}}$ 。当路由器或主机不能交付数据报时,就向源点发送终点不可达报文。

2) $\color{green}{\text{源点抑制}}$ 。当路由器或主机由于 $\color{green}{\text{拥塞}}$ 而丢弃数据报时,就向源点发送源点抑制报文,使源点知道应当把数据报的发送速率放慢。

3) $\color{green}{\text{时间超过}}$ 。当路由器收到生存时间(TTL)为零的数据报时,除丢弃该数据报外,还要向源点发送时间超过报文。当终点在预先规定的时间内不能收到一个数据报的全部数据报片时,就把已收到的数据报片都丢弃,并向源点发送时间超过报文。

4) $\color{green}{\text{参数问题}}$ 。当路由器或目的主机收到的数据报的首部中有的字段的值不正确时,就丢弃该数据报,并向源点发送参数问题报文。

5) $\color{green}{\text{改变路由}}$ (重定向)。路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器(可通过更好的路由)。

不应发送ICMP 差错报告报文的几种情况如下:

1)对ICMP差错报告报文不再发送ICMP差错报告报文。

2)对第一个分片的数据报片的所有后续数据报片都不发送ICMP差错报告报文。

3)对具有组播地址的数据报都不发送ICMP差错报告报文。

4)对具有特殊地址(如127.0.0.0或0.0.0.0)的数据报不发送ICMP差错报告报文。

ICMP询问报文有4种类型:回送请求和回答报文、时间戳请求和回答报文、掩码地址请求和回答报文、路由器询问和通告报文,最常用的是前两类。

ICMP的两个常见应用是分组网间探测 PING(用来测试两台主机之间的连通性)和 Traceroute(UNIX中的名字,在 Windows 中是 Tracert,可以用来跟踪分组经过的路由)。其中 PING使用ICMP回送请求和回答报文,Traceroute ( Tracert)使用了ICMP时间超过报文。

注意:PING工作在应用层,它直接使用网络层的ICMP,而未使用传输层的TCP或UDP.Traceroute/Tracert 工作在网络层。

IPv6

IPv6的主要特点

解决“IP地址耗尽”问题的措施有以下三种:①采用无类别编址CIDR,使IP地址的分配更加合理;②采用网络地址转换(NAT)方法以节省全球IP地址;③采用具有更大地址空间的新版本的 IPv6。其中前两种方法只是延长了IPv4地址分配完毕的时间,只有第三种方法从根本上解决了IP地址的耗尽问题。

IPv6的主要特点如下:

1)更大的地址空间。IPv6将地址从IPv4的32位增大到了128位。IPv6的字节数(16B)是 IPv4字节数(4B)的平方。

2)扩展的地址层次结构。

3)灵活的首部格式。

4)改进的选项。

5)允许协议继续扩充。

6)支持即插即用(即自动配置)。

7)支持资源的预分配。

8)IPv6只有在包的源结点才能分片,是端到端的,传输路径中的路由器不能分片,所以从一般意义上说,IPv6 $\color{green}{\text{不允许分片}}$ (不允许类似IPv4的路由分片)。

9)IPv6首部长度必须是8B的整数倍,而IPv4首部是4B的整数倍。

10)增大了安全性。身份验证和保密功能是IPv6的关键特征。

虽然IPv6与IPv4不兼容,但总体而言它与所有其他的因特网协议兼容,包括TCP、UDP、ICMP、IGMP、OSPF、BGP 和 DNS,只是在少数地方做了必要的修改(大部分是为了处理长的地址)。IPv6相当好地满足了预定的目标,主要体现在:

1)首先也是最重要的,IPv6有比IPv4长得多的地址。IPv6的地址用16个字节表示,地址空间是IPv4的 $2^{128-32}$ = $2^{96}$ 倍,从长远来看,这些地址是绝对够用的。

2)简化了IP分组头,它包含8个域(IPv4是12个域)。这一改变使得路由器能够更快地处理分组,从而可以改善吞吐率。

3)更好地支持选项。这一改变对新的分组首部很重要,因为一些从前必要的段现在变成了可选段。此外,表示选项的方式的改变还能加快分组的处理速度。

  • IPv6的首部长度是 $\color{green}{\text{固定的}}$
  • IPv6没有校验和字段
  • 使用零压缩法时,双冒号“::”在一个地址中只能出现一次。也就是说,当有多处不相邻的0时,只能用“::”代表其中的一处。

参考文献

IPv6的头部找不到图片(Image not found)

IPv6地址

IPv6数据报的目的地址可以是以下三种基本类型地址之一:

1) $\color{green}{\text{单播}}$ 。单播就是传统的点对点通信。

2) $\color{green}{\text{多播}}$ 。多播是一点对多点的通信,分组被交付到一组计算机的每台计算机。

3) $\color{green}{\text{任播}}$ 。这是IPv6增加的一种类型。任播的目的站是一组计算机,但数据报在交付时只交付其中的一台计算机,通常是距离最近的一台计算机。

IPv4地址通常使用点分十进制表示法。如果IPv6也使用这种表示法,那么地址书写起来将会相当长。在IPv6标准中指定了一种比较紧凑的表示法,即把地址中的每4位用一个十六进制数表示,并用冒号分隔每16位,如4BF5:AA12:0216:FEBC:BA5F:039A:BE9A:2170。

通常可以把Pv6地址缩写成更紧凑的形式。当16位域的开头有一些0时,可以采用一种缩写表示法,但在域中必须至少有一个数字。例如,可以把地址4BF5:0000:0000:0000:BA 5F:039A:000A:2176缩写为4BF5:0:0:0:BA5F:39A:A:2176。

IPv6扩展了IPv4地址的分级概念,它使用以下3个等级: $\color{green}{\text{第一级}}$ (顶级)指明全球都知道的公共拓扑; $\color{green}{\text{第二级}}$ (场点级)指明单个场点; $\color{green}{\text{第三级}}$ 指明单个网络接口。IPv6地址采用多级体系主要是为了使路由器能够更快地查找路由。

IPv4向IPv6过渡只能采用逐步演进的办法,同时还必须使新安装的IPv6系统能够向后兼容。IPv6系统必须能够接收和转发IPv4分组,并且能够为IPv4分组选择路由。

IPv4向IPv6过渡可以采用 $\color{green}{\text{双协议栈}}$ 和 $\color{green}{\text{隧道技术}}$ 两种策略:双协议栈技术是指在一台设备上同时装有IPv4和 IPv6协议栈,那么这台设备既能和IPv4网络通信,又能和IPv6网络通信。如果这台设备是一个路由器,那么在路由器的不同接口上分别配置了IPv4地址和IPv6地址,并很可能分别连接了IPv4网络和IPv6网络;如果这台设备是一台计算机,那么它将同时拥有IPv4地址和IPv6地址,并具备同时处理这两个协议地址的功能。隧道技术是将整个IPv6数据报封装到IPv4数据报的数据部分,使得IPv6数据报可以在 IPv4网络的隧道中传输。

路由协议

自治系统

自治系统(Autonomous System,AS):单-一技术管理下的一组路由器,这些路由器使用一种AS内部的路由选择协议和共同的度量来确定分组在该AS内的路由,同时还使用一种AS之间的路由选择协议来确定分组在AS之间的路由。

一个自治系统内的所有网络都由一个行政单位(如一家公司、一所大学、一个政府部门等)管辖,一个自治系统的所有路由器在本自治系统内都必须是连通的。

域内路由与域间路由

自治系统内部的路由选择称为 $\color{green}{\text{域内路由选择}}$ ,自治系统之间的路由选择称为 $\color{green}{\text{域间路由选择}}$ 。因特网有两大类路由选择协议。

内部网关协议(Interior Gateway Protocol,IGP)

内部网关协议即在一个自治系统内部使用的路由选择协议,它与互联网中其他自治系统选用什么路由选择协议无关。目前这类路由选择协议使用得最多,如RIP和OSPF。

外部网关协议(External Gateway Protocol,EGP)

若源站和目的站处在不同的自治系统中,当数据报传到一个自治系统的边界时(两个自治系统可能使用不同的IGP),就需要使用一种协议将路由选择信息传递到另一个自治系统中。这样的协议就是外部网关协议(EGP)。目前使用最多的外部网关协议是BGP-4。

图4.7是两个自治系统互联的示意图。每个自治系统自己决定在本自治系统内部运行哪个内部路由选择协议(例如,可以是RIP,也可以是OSPF),但每个自治系统都有一个或多个路由器(图中的路由器R1和R2)。除运行本系统的内部路由选择协议外,还要运行自治系统间的路由选择协议(如 BGP-4)。

图4.7自治系统和内部网关协议、外部网关协议找不到图片(Image not found)

路由信息协议(RIP)

路由信息协议(Routing Information Protocol,RIP)是 $\color{green}{\text{内部网关协议}}$ (IGP)中最先得到广泛应用的协议。RIP是一种分布式的基于 $\color{green}{\text{距离向量}}$ 的路由选择协议,其最大优点就是简单。

RIP规定

1)网络中的每个路由器都要维护从它自身到其他每个目的网络的距离记录(因此这是一组距离,称为距离向量)。

2)距离也称跳数(Hop Count),规定从一个路由器到直接连接网络的距离(跳数)为1。而每经过一个路由器,距离(跳数)加1。

3)RIP认为好的路由就是它通过的路由器的数目少,即优先选择跳数少的路径。

4)RIP允许一条路径最多只能包含15个路由器(即最多允许15跳)。因此距离等于 $\color{green}{\text{16}}$ 时,它表示网络不可达。可见 RIP只适用于小型互联网。距离向量路由可能会出现环路的情况,规定路径上的最高跳数的目的是为了防止数据报不断循环在环路上,减少网络拥塞的可能性。

5)RIP默认在任意两个使用RIP的路由器之间每30秒广播一次RIP路由更新信息,以便自动建立并维护路由表(动态维护)。

6)在RIP中不支持子网掩码的RIP广播,所以RIP中每个网络的子网掩码必须相同。但在新的RIP2中,支持变长子网掩码和CIDR。

RIP的特点(注意与OSPF的特点比较)

1)仅和相邻路由器交换信息。

2)路由器交换的信息是当前路由器所知道的全部信息,即自己的路由表。

3)按固定的时间间隔交换路由信息,如每隔30秒。

RIP通过距离向量算法来完成路由表的更新。最初,每个路由器只知道与自己直接相连的网络。通过每30秒的RIP广播,相邻两个路由器相互将自己的路由表发给对方。于是经过第一-次RIP广播,每个路由器就知道了与自己相邻的路由器的路由表(即知道了距离自己跳数为1的网络的路由)。同理,经过第二次RIP广播,每个路由器就知道了距离自己跳数为2的网络的路由……因此,经过若干RIP广播后,所有路由器都最终知道了整个IP网络的路由表,成为RIP最终是收敛的。通过RIP收敛后,每个路由器到每个目标网络的路由都是距离最短的(即跳数最少,最短路由),哪怕还存在另一条高速(低时延)但路由器较多的路由。

距离向量算法

每个路由表项目都有三个关键数据:<目的网络N,距离d,下一跳路由器地址X>。对于每个相邻路由器发送过来的RIP报文,执行如下步骤:

1)对地址为X的相邻路由器发来的RIP报文,先修改此报文中的所有项目:把“下一跳”字段中的地址都改为X,并把所有“距离”字段的值加1。

2)对修改后的RIP报文中的每个项目,执行如下步骤:

2)对修改后的RIP报文中的每个项目,执行如下步骤:

①当原来的路由表中没有目的网络N时,把该项目添加到路由表中。

${\textstyle\unicode{x2461}}$ 当原来的路由表中有目的网络N,且下一跳路由器的地址是X时,用收到的项目替换原路由表中的项目。

${\textstyle\unicode{x2462}}$ 当原来的路由表中有目的网络N,且下一跳路由器的地址不是X时,如果收到的项目中的距离d小于路由表中的距离,那么就用收到的项目替换原路由表中的项目;否则什么也不做。

3)如果180秒(RIP默认超时时间为 $\color{green}{\text{180秒}}$ )还没有收到相邻路由器的更新路由表,那么把此相邻路由器记为不可达路由器,即把距离设置为16(距离为16表示不可达)。

4)返回。

RIP最大的优点是实现简单、开销小、收敛过程较快。RIP 的缺点如下:

RIP最大的优点是实现简单、开销小、收敛过程较快。RI的缺点如下:1)RIP限制了网络的规模,它能使用的最大距离为15(16表示不可达)。

2)路由器之间交换的是路由器中的完整路由表,因此网络规模越大,开销也越大。

3)网络出现故障时,会出现慢收敛现象(即需要较长时间才能将此信息传送到所有路由器),俗称“坏消息传得慢”,使更新过程的收敛时间长。

RIP是应用层协议,它使用UDP传送数据( $\color{green}{\text{端口520}}$ )。RIP选择的路径不一定是时间最短的,但一定是具有最少路由器的路径。因为它是根据最少跳数进行路径选择的。

开放最短路径优先(OSPF)协议

OSPF协议的基本特点

开放最短路径优先(OSPF)协议是使用分布式 $\color{green}{\text{链路状态路由算法}}$ 的典型代表,也是 $\color{green}{\text{内部网关协议}}$ (IGP)的一种。OSPF与RIP相比有以下4点主要区别:

1)OSPF向本自治系统中的所有路由器发送信息,这里使用的方法是 $\color{green}{\text{洪泛法}}$ 。而RIP仅向自己相邻的几个路由器发送信息。

2)发送的信息是与本路由器相邻的所有路由器的链路状态,但这只是路由器所知道的部分信息。“链路状态”说明本路由器和哪些路由器相邻及该链路的“度量”(或代价)。而在RIP中,发送的信息是本路由器所知道的全部信息,即整个路由表。

3)只有当链路状态发生变化时,路由器才用洪泛法向所有路由器发送此信息,并且更新过程收敛得快,不会出现RIP“坏消息传得慢”的问题。而在 RIP中,不管网络拓扑是否发生变化,路由器之间都会定期交换路由表的信息。

4)OSPF是 $\color{green}{\text{网络层协议}}$ ,它不使用UDP或TCP,而直接用IP数据报传送(其IP数据报首部的协议字段为 $\color{green}{\text{89}}$ )。而RIP是 $\color{green}{\text{应用层协议}}$ ,它在传输层使用UDP。

除以上区别外,OSPF 还有以下特点:

1)OSPF对不同的链路可根据IP分组的不同服务类型(TOS)而设置成不同的代价。因此OSPF对于不同类型的业务可计算出不同的路由,十分灵活。

2)如果到同一个目的网络有多条相同代价的路径,那么可以将通信量分配给这几条路径。这称为多路径间的 $\color{green}{\text{负载平衡}}$ 。

3)所有在OSPF 路由器之间交换的分组都具有鉴别功能,因而保证了仅在可信赖的路由器之间交换链路状态信息。

4)支持可变长度的子网划分和无分类编址CIDR。

5)每个链路状态都带上一个32位的序号,序号越大,状态就越新。

OSPF的基本工作原理

由于各路由器之间频繁地交换链路状态信息,因此所有路由器最终都能建立一个链路状态数据库。这个数据库实际上就是全网的拓扑结构图,它在全网范围内是一致的(称为链路状态数据库的同步)。然后,每个路由器根据这个全网拓扑结构图,使用Dijkstra最短路径算法计算从自己到各目的网络的最优路径,以此构造自己的路由表。此后,当链路状态发生变化时,每个路由器重新计算到各目的网络的最优路径,构造新的路由表。

注意:虽然使用Dijkstra算法能计算出完整的最优路径,但路由表中不会存储完整路径,而只存储“下一跳”(只有到了下一跳路由器,才能知道再下一跳应当怎样走)。

为使OSPF 能够用于规模很大的网络,OSPF 将一个自治系统再划分为若干更小的范围,称为 $\color{green}{\text{区域}}$ 。划分区域的好处是,将利用洪泛法交换链路状态信息的范围局限于每个区域而非整个自治系统,减少了整个网络上的通信量。在一个区域内部的路由器只知道本区域的完整网络拓扑,而不知道其他区域的网络拓扑情况。这些区域也有层次之分。处在上层的域称为主干区域,负责连通其他下层的区域,并且还连接其他自治域。

OSPF的五种分组类型

OSPF 共有以下五种分组类型:

1) $\color{green}{\text{问候分组}}$ ,用来发现和维持邻站的可达性。

2) $\color{green}{\text{数据库描述分组}}$ ,向邻站给出自己的链路状态数据库中的所有链路状态项目的摘要信息。

3) $\color{green}{\text{链路状态请求分组}}$ ,向对方请求发送某些链路状态项目的详细信息。

4) $\color{green}{\text{链路状态更新分组}}$ ,用洪泛法对全网更新链路状态。

5) $\color{green}{\text{链路状态确认分组}}$ ,对链路更新分组的确认。

通常每隔10秒,每两个相邻路由器要交换一次问候分组,以便知道哪些站可达。在路由器刚开始工作时,OSPF让每个路由器使用数据库描述分组和相邻路由器交换本数据库中已有的链路状态摘要信息。然后,路由器使用链路状态请求分组,向对方请求发送自己所缺少的某些链路状态项目的详细信息。经过一系列的这种分组交换,就建立了全网同步的链路数据库。图4.8给出了OSPF的基本操作,说明了两个路由器需要交换的各种类型的分组。

图4.8 OSPF的基本操作找不到图片(Image not found)

在网络运行的过程中,只要一个路由器的链路状态发生变化,该路由器就要使用链路状态更新分组,用洪泛法向全网更新链路状态。其他路由器在更新后,发送链路状态确认分组对更新分组进行确认。

为了确保链路状态数据库与全网的状态保持一致,OSPF还规定每隔一段时间(如30分钟)就刷新一次数据库中的链路状态。由于一个路由器的链路状态只涉及与相邻路由器的连通状态,因而与整个互联网的规模并无直接关系。因此,当互联网规模很大时,OSPF 要比RIP好得多,而且 OSPF协议没有“坏消息传播得慢”的问题。

注意:教材上说OSPF 协议不使用UDP数据报传送,而是直接使用IP数据报传送,在此解释一下什么称为用UDP传送,什么称为用IP数据报传送。用UDP传送是指将该信息作为UDP报文的数据部分,而直接使用IP 数据报传送是指将该信息直接作为IP数据报的数据部分。RIP报文是作为UDP 数据报的数据部分。

边界网关协议(BGP)

边界网关协议(Border Gateway Protocol,BGP)是不同自治系统的路由器之间交换路由信息的协议,是一种外部网关协议。边界网关协议常用于互联网的网关之间。路由表包含已知路由器的列表、路由器能够达到的地址及到达每个路由器的路径的跳数。

内部网关协议主要设法使数据报在一个AS 中尽可能有效地从源站传送到目的站。在一个 AS内部不需要考虑其他方面的策略。然而BGP使用的环境却不同,主要原因如下:

1)因特网的规模太大,使得自治系统之间路由选择非常困难。

2)对于自治系统之间的路由选择,要寻找最佳路由是很不现实的。

3)自治系统之间的路由选择必须考虑有关策略。

边界网关协议(BGP)只能力求寻找一条能够到达目的网络且比较好的路由(不能兜圈子),而并非寻找一条最佳路由。BGP采用的是路径向量路由选择协议,它与距离向量协议和链路状态协议有很大的区别。BGP是 $\color{green}{\text{应用层}}$ 协议,它是 $\color{green}{\text{基于TCP}}$ 的。

BGP的工作原理如下:每个自治系统的管理员要选择至少一个路由器(可以有多个)作为该自治系统的“BGP发言人”。一个BGP发言人与其他自治系统中的BGP发言人要交换路由信息,就要先建立TCP连接(可见BGP报文是通过TCP传送的,也就是说BGP报文是TCP报文的数据部分),然后在此连接上交换BGP报文以建立BGP会话,再利用BGP会话交换路由信息。当所有BGP发言人都相互交换网络可达性的信息后,各BGP发言人就可找出到达各个自治系统的较好路由。

每个BGP发言人除必须运行BGP 外,还必须运行该AS所用的内部网关协议,如 OSPF或RIP。BGP所交换的网络可达性信息就是要到达某个网络(用网络前缀表示)所要经过的一系列AS。图4.9给出了一个BGP发言人交换路径向量的例子。

1) BGP交换路由信息的结点数量级是自治系统的数量级,要比这些自治系统中的网络数少很多。

2)每个自治系统中BGP发言人(或边界路由器)的数目是很少的。这样就使得自治系统之间的路由选择不致过分复杂。

图4.9 主干网与自治系统间路径向量的交换找不到图片(Image not found)

3)BGP支持CIDR,因此 BGP 的路由表也就应当包括目的网络前缀、下一跳路由器,以及到达该目的网络所要经过的各个自治系统序列。

4)在BGP刚运行时,BGP 的邻站交换整个BGP路由表,但以后只需在发生变化时更新有变化的部分。这样做对节省网络带宽和减少路由器的处理开销都有好处。

BGP-4共使用4种报文:

1)打开(Open)报文。用来与相邻的另一个BGP发言人建立关系。

2)更新(Update)报文。用来发送某一路由的信息,以及列出要撤销的多条路由。

3)保活(Keepalive)报文。用来确认打开报文并周期性地证实邻站关系。

4)通知(Notification)报文。用来发送检测到的差错。

RIP、OSPF与 BGP的比较如表4.3所示。

表4.3三种路由协议的比较找不到图片(Image not found)

IP组播

组播的概念

为了能够支持像视频点播和视频会议这样的多媒体应用,网络必须实施某种有效的组播机制。使用多个单播传送来仿真组播总是可能的,但这会引起主机上大量的处理开销和网络上太多的交通量。人们所需要的组播机制是让源计算机一次发送的单个分组可以抵达用一个组地址标识的若干目标主机,并被它们正确接收。

组播一定仅应用于 $\color{green}{\text{UDP}}$ ,它对将报文同时送往多个接收者的应用来说非常重要。而TCP是一个面向连接的协议,它意味着分别运行于两台主机(由IP地址来确定)内的两个进程(由端号来确定)之间存在一条连接,因此会一对一地发送。

使用组播的缘由是,有的应用程序要把一个分组发送给多个目的地主机。不是让源主机给每个目的地主机都发送一个单独的分组,而是让源主机把单个分组发送给一个组播地址,该组播地址标识一组地址。网络(如因特网)把这个分组的副本投递给该组中的每台主机。主机可以选择加入或离开一个组,因此一台主机可以同时属于多个组。

因特网中的IP组播也使用组播组的概念,每个组都有一个特别分配的地址,要给该组发送的计算机将使用这个地址作为分组的目标地址。在IPv4中,这些地址在D类地址空间中分配,而IPv6也有一部分地址空间保留给组播组。

主机使用一个称为 $\color{green}{\text{IGMP}}$ (因特网组管理协议)的协议加入组播组。它们使用该协议通知本地网络上的路由器关于要接收发送给某个组播组的分组的愿望。通过扩展路由器的路由选择和转发功能,可以在许多路由器互联的支持硬件组播的网络上面实现因特网组播。

需要注意的是,主机组播时仅发送一份数据,只有数据在传送路径出现分岔时才将分组复制后继续转发。因此,对发送者而言,数据只需发送一次就可发送到所有接收者,大大减轻了网络的负载和发送者的负担。组播需要路由器的支持才能实现,能够运行组播协议的路由器称为 $\color{green}{\text{组播路由器}}$ 。单播与组播的比较如图4.10所示。

图4.10单播与组播的比较找不到图片(Image not found)

IP组播地址

IP组播使用D类地址格式。D类地址的前四位是1110,因此D类地址范围是 224.0.0.0~239.255.255.255。每个D类IP地址标志一个组播组。

组播数据报和一般的IP数据报的区别是,前者使用D类IP地址作为目的地址,并且首部中的协议字段值是 $\color{green}{\text{2}}$ ,表明使用IGMP。需要注意的是:

1)组播数据报也是“尽最大努力交付”,不提供可靠交付。

2)组播地址只能用于目的地址,而不能用于源地址。

3)对组播数据报不产生ICMP差错报文。因此,若在PNG 命令后面键入组播地址,将永远不会收到响应。

4)并非所有的D类地址都可作为组播地址。

IP组播可以分为两种:一种只在本局域网上进行硬件组播;另一种则在因特网的范围内进行组播。在因特网上进行组播的最后阶段,还是要把组播数据报在局域网上用硬件组播交付给组播组的所有成员〔见图4.10(b)]。下面讨论这种硬件组播。

IANA拥有的以太网组播地址的范围是从01-00-5E-00-00-00到01-00-5E-7F-FF-FF。不难看出,在每个地址中,只有23位可用作组播。这只能和D类IP地址中的23位有一一对应关系。D类IP地址可供分配的有28位,可见在这28位中,前5位不能用来构成以太网的硬件地址,如图4.11所示。

图4.11D类IP地址与以太网组播地址的映射关系找不到图片(Image not found)

例如,IP组播地址224.128.64.32(即 E0-80-40-20)和另一个IP组播地址224.0.64.32(即EO-00-40-20)转换成以太网的硬件组播地址都是01-00-5E-00-40-20。由于组播IP地址与以太硬件地址的映射关系不是唯一的,因此收到组播数据报的主机,还要在IP层利用软件进行过滤把不是本主机要接收的数据报丢弃。

IGMP与组播路由算法

要使路由器知道组播组成员的信息,需要利用因特网组管理协议(Internet Group ManagemenProtocol,IGMP)。连接到局域网上的组播路由器还必须和因特网上的其他组播路由器协同工作,以便把组播数据报用最小代价传送给所有组成员,这就需要使用组播路由选择协议。

IGMP并不是在因特网范围内对所有组播组成员进行管理的协议。IGMP不知道IP组播组包含的成员数,也不知道这些成员分布在哪些网络上。IGMP让连接到本地局域网上的组播路由器知道本局域网上是否有主机参加或退出了某个组播组。

IGMP应视为TCP/IP的一部分,其工作可分为两个阶段。

$\color{green}{\text{第一阶段}}$ :当某台主机加入新的组播组时,该主机应向组播组的组播地址发送一个IGMP报文,声明自己要成为该组的成员。本地的组播路由器收到IGMP报文后,将组成员关系转发给因特网上的其他组播路由器。

$\color{green}{\text{第二阶段}}$ :因为组成员关系是动态的,本地组播路由器要周期性地探询本地局域网上的主机,以便知道这些主机是否仍继续是组的成员。只要对某个组有一台主机响应,那么组播路由器就认为这个组是活跃的。但一个组在经过几次的探询后仍然没有一台主机响应时,则不再将该组的成员关系转发给其他的组播路由器。

组播路由选择实际上就是要找出以源主机为根结点的 $\color{green}{\text{组播转发树}}$ ,其中每个分组在每条链路上只传送一次(即在组播转发树上的路由器不会收到重复的组播数据报)。不同的多播组对应于不同的多播转发树;同一个多播组,对不同的源点也会有不同的多播转发树。

在许多由路由器互联的支持硬件多点传送的网络上实现因特网组播时,主要有三种路由算法:第一种是基于链路状态的路由选择;第二种是基于距离-向量的路由选择;第三种可以建立在任何路由器协议之上,因此称为 $\color{green}{\text{协议无关的组播}}$ (PIM,Protocol Independent Multicast)。

移动IP

移动IP的概念

支持移动性的因特网体系结构与协议共称为移动IP,它是为了满足移动结点(计算机、服务器、网段等)在移动中保持其连接性而设计的。更确切地说,移动IP技术是指移动结点以固定的网络IP地址实现跨越不同网段的漫游功能,并保证基于网络IP的网络权限在漫游过程中不发生任何改变。移动IP的目标是把分组自动地投递给移动结点。一个移动结点是把其连接点从一个网络或子网改变到另一个网络或子网的主机。使用移动IP,一个移动结点可以在不改变其IP地址的情况下改变其驻留位置。

基于IPv4的移动IP定义三种功能实体: $\color{green}{\text{移动结点}}$ 、 $\color{green}{\text{归属代理}}$ (也称本地代理)和 $\color{green}{\text{外埠代理}}$ (也称外部代理)。归属代理和外埠代理又统称为移动代理。

1) $\color{green}{\text{移动结点}}$ 。具有永久IP地址的移动结点。

2) $\color{green}{\text{本地代理}}$ 。在一个网络环境中,一个移动结点的永久“居所”被称为归属网络,在归属网络中代表移动结点执行移动管理功能的实体称为 $\color{green}{\text{归属代理}}$ (本地代理),它根据移动用户的转交地址,采用隧道技术转交移动结点的数据包。

3) $\color{green}{\text{外部代理}}$ 。在外部网络中帮助移动结点完成移动管理功能的实体称为外部代理。

移动IP和移动自组网络并不相同,移动技术使漫游的主机可以用多种方式连接到因特网,移动IP的核心网络功能仍然是基于固定互联网中一直使用的各种路由选择协议,移动自组网络是将移动性扩展到无线领域中的自治系统,它具有自己独特的路由选择协议,并且可以不和因特网相连。

移动IP与动态IP是两个完全不同的概念,动态IP指的是局域网中的计算机可以通过网络中的 DHCP 服务器动态地获得一个IP地址,而不需要用户在计算机的网络设置中指定IP地址,动态IP和DHCP经常会应用在我们的实际工作环境中。

移动IP通信过程

在移动IP中,每个移动结点都有一个唯一的本地地址,当移动结点移动时,它的本地地址是不变的,在本地网络链路上每个本地结点还必须有一个本地代理来为它维护当前的位置信息,这就需要引入 $\color{green}{\text{转交地址}}$ 。当移动结点连接到外地网络链路上时,转交地址就用来标识移动结点现在所处的位置,以便进行路由选择。移动结点的本地地址与当前转交地址的联合称为移动绑定或简称绑定。当移动结点得到一个新的转交地址时,通过绑定向本地代理进行注册,以便让本地代理即时了解移动结点的当前位置。

移动IP技术的基本通信流程如下:

1)移动结点在本地网时,按传统的TCP/IP方式进行通信(在本地网中有固有的地址)。

2)移动结点漫游到一个外地网络时,仍然使用固定的IP地址进行通信。为了能够收到通信对端发给它的IP分组,移动结点需要向本地代理注册当前的位置地址,这个位置地址就是转交地址(它可以是外部代理的地址或动态配置的一个地址)。

3)本地代理接收来自转交地址的注册后,会构建一条通向转交地址的隧道,将截获的发给移动结点的IP分组通过隧道送到转交地址处。

4)在转交地址处解除隧道封装,恢复原始的IP分组,最后送到移动结点,这样移动结点在外网就能够收到这些发送给它的IP分组。

5)移动结点在外网通过外网的路由器或外部代理向通信对端发送IP数据包。

6)移动结点来到另一个外网时,只需向本地代理更新注册的转交地址,就可继续通信。

7)移动结点回到本地网时,移动结点向本地代理注销转交地址,这时移动结点又将使用传统的TCP/IP方式进行通信。

移动IP为移动主机设置了两个IP地址,即 $\color{green}{\text{主地址}}$ 和 $\color{green}{\text{辅地址}}$ (转交地址)。移动主机在本地网时,使用的是主地址。当移动到另一个网络时,需要获得一个临时的辅地址,但此时主地址仍然不变。从外网移回本地网时,辅地址改变或撤销,而主地址仍然保持不变。

网络层设备

路由器的组成和功能

路由器是一种具有多个输入/输出端口的专用计算机,其任务是连接不同的网络(连接异构网络)并完成路由转发。在多个逻辑网络(即多个广播域)互联时必须使用路由器。

当源主机要向目标主机发送数据报时,路由器先检查源主机与目标主机是否连接在同一个网络上。如果源主机和目标主机在同一个网络上,那么直接交付而无须通过路由器。如果源主机和目标主机不在同一个网络上,那么路由器按照转发表(路由表)指出的路由将数据报转发给下一个路由器,这称为间接交付。可见,在同一个网络中传递数据无须路由器的参与,而跨网络通信必须通过路由器进行转发。例如,路由器可以连接不同的LAN,连接不同的VLAN,连接不同的WAN,或者把LAN和WAN 互联起来。路由器隔离了广播域。

从结构上看,路由器由路由选择和分组转发两部分构成,如图4.12所示。而从模型的角度看,路由器是网络层设备,它实现了网络模型的下三层,即物理层、数据链路层和网络层。

图4.12路由器体系结构找不到图片(Image not found)

注意:如果一个存储转发设备实现了某个层次的功能,那么它就可以互联两个在该层次上使用不同协议的网段(网络)。如网桥实现了物理层和数据链路层,那么网桥可以互联两个物理层和数据链路层不同的网段;但中继器实现了物理层后,却不能互联两个物理层不同的网段,这是因为中继器不是存储转发设备,它属于直通式设备。

路由选择部分也称 $\color{green}{\text{控制部分}}$ ,其核心构件是路由选择处理机。路由选择处理机的任务是根据所选定的路由选择协议构造出路由表,同时经常或定期地和相邻路由器交换路由信息而不断更新和维护路由表。

分组转发部分由三部分组成: $\color{green}{\text{交换结构}}$ 、 $\color{green}{\text{一组输入端口}}$ 和 $\color{green}{\text{一组输出端口}}$ 。输入端口在从物理层接收到的比特流中提取出数据链路层帧,进而从帧中提取出网络层数据报,输出端口则执行恰好相反的操作。交换结构是路由器的关键部件,它根据转发表对分组进行处理,将某个输入端口进入的分组从一个合适的输出端口转发出去。有三种常用的交换方法: $\color{green}{\text{通过存储器进行交换}}$ 、 $\color{green}{\text{通过总线进行交换}}$ 和 $\color{green}{\text{通过互联网络进行交换}}$ 。交换结构本身就是一个网络。

路由器主要完成两个功能:一是分组转发,二是路由计算。前者处理通过路由器的数据流.关键操作是转发表查询、转发及相关的队列管理和任务调度等;后者通过和其他路由器进行基于路由协议的交互,完成路由表的计算。

路由器和网桥的重要区别是:网桥与高层协议无关,而路由器是面向协议的,它依据网络地址进行操作,并进行路径选择、分段、帧格式转换、对数据报的生存时间和流量进行控制等。现今的路由器一般都提供多种协议的支持,包括OSI、TCP/IP、IPX等。

路由表与路由转发

路由表是根据路由选择算法得出的,主要用途是路由选择。从历年统考真题可以看出,标准的路由表有4个项目:目的网络IP地址、子网掩码、下一跳IP地址、接口。在如图4.13所示的网络拓扑中,R1的路由表见表4.4,该路由表包含到互联网的默认路由。

图4.13一个简单的网络拓扑找不到图片(Image not found)
表4.4R1的路由表找不到图片(Image not found)

转发表是从路由表得出的,其表项和路由表项有直接的对应关系。但转发表的格式和路由表的格式不同,其结构应使查找过程最优化(而路由表则需对网络拓扑变化的计算最优化)。转发表中含有一个分组将要发往的目的地址,以及分组的下一跳(即下一步接收者的目的地址,实际为MAC地址)。为了减少转发表的重复项目,可以使用一个默认路由代替所有具有相同“下一跳”的项目,并将默认路由设置得比其他项目的优先级低,如图4.14所示。 $\color{red}{\text{路由表}}$ 总是用 $\color{green}{\text{软件}}$ 来实现的; $\color{red}{\text{转发表}}$ 可以用 $\color{green}{\text{软件}}$ 来实现,甚至也可以用特殊的 $\color{green}{\text{硬件}}$ 来实现。

图4.14未使用默认路由的转发表和使用了默认路由的转发表的对比找不到图片(Image not found)

注意转发和路由选择的区别:“ $\color{red}{\text{转发}}$ ”是路由器根据转发表把收到的IP数据报从合适的端转发出去,它仅涉及 $\color{green}{\text{一个路由器}}$ 。而“路由选择”则涉及很多路由器, $\color{red}{\text{路由表}}$ 是 $\color{green}{\text{许多路由器}}$ 协同工作的结果。这些路由器按照复杂的路由算法,根据从各相邻路由器得到的关于网络拓扑的变化情况,动态地改变所选择的路由,并由此构造出整个路由表。

注意,在讨论路由选择的原理时,往往不去区分转发表和路由表的区别,但要注意路由表不等于转发表。分组的实际转发是靠直接查找转发表,而不是直接查找路由表。

本章小结及疑难点

“尽最大努力交付”有哪些含义?

1)不保证源主机发送的IP数据报一定无差错地交付到目的主机。

2)不保证源主机发送的IP数据报都在某一规定的时间内交付到目的主机。

3)不保证源主机发送的IP数据报一定按发送时的顺序交付到目的主机。

4)不保证源主机发送的IP数据报不会重复交付给目的主机。

5)不故意丢弃IP数据报。丢弃IP数据报的情况是:路由器检测出首部校验和有错误;或由于网络中通信量过大,路由器或目的主机中的缓存已无空闲空间。

但要注意,IP数据报的首部中有一个“首部校验和”。当它检验出IP数据报的首部出现了差错时,就丢弃该数据报。因此,凡交付给目的主机的IP数据报都是IP首部没有差错的或没有检测出差错的。也就是说,在传输过程中,出现差错的IP数据报都被丢弃了。

现在因特网上绝大多数的通信量都属于“尽最大努力交付”。如果数据必须可靠地交付给目的地,那么使用IP的高层软件必须负责解决这一问题。

“IP网关”和“IP路由器”是否为同义语?“互连网”和“互联网”有没有区别?

当初发明TCP/IP的研究人员使用IP Gateway作为网际互联的设备,可以认为“IP网关”和“IP路由器”是同义词。

“互连网”和“互联网”都是推荐名,都可以使用,不过建议优先使用“互联网”。

在一个互联网中,能否用一个很大的交换机( switch)来代替互联网中很多的路由器?

不行。交换机和路由器的功能是不相同的。

交换机可在单个网络中与若干计算机相连,并且可以将一台计算机发送过来的帧转发给另一台计算机。从这一点上看,交换机具有集线器的转发帧的功能,但交换机比集线器的功能强很多。在同一时间,集线器只允许一台计算机发送数据。

路由器连接两个或多个同构的或异构的网络,在网络之间转发分组(即IP数据报)。

因此,如果许多相同类型的网络互联时,那么用一个很大的交换机(如果能够找其他计算机进行通信,交换机允许找得到)代替原来的一些路由器是可行的。但若这些互联的网络是异构的网络,那么就必须使用路由器来进行互联。

网络前缀是指网络号字段( net-id)中前面的几个类别位还是指整个的网络号字段?

是指整个的网络号字段,包括最前面的几个类别位在内。网络前缀常常简称为前缀。例如一个B类地址10100000 00000000 00000000 00010000,其类别位就是最前面的两位:10,而网络前缀就是前16位:10100000 00000000。

IP有分片的功能,但广域网中的分组则不必分片,这是为什么?

IP数据报可能要经过许多个网络,而源结点事先并不知道数据报后面要经过的这些网络所能通过的分组的最大长度是多少。等到IP数据报转发到某个网络时,中间结点可能才发现数据报太长了,因此在这时就必须进行分片。

但广域网能够通过的分组的最大长度是该广域网中所有结点都事先知道的,源结点不可能发送网络不支持的过长分组。因此广域网没有必要将已经发送出的分组再进行分片。

数据链路层广播和IP广播有何区别?

数据链路层广播是用数据链路层协议(第二层)在一个以太网上实现的对该局域网上的所有主机进行广播MAC帧,而P广播则是用P通过因特网实现的对一个网络(即目的网络)上的所有主机进行广播IP数据报。

主机在接收一个广播帧或组播帧时,其CPU所要做的事情有何区别?

在接收广播帧时,主机通过其适配器〔即网络接口卡(NIC)]接收每个广播帧,然后将其传递给操作系统。CPU执行协议软件,并界定是否接收和处理该帧。在接收组播帧时,CPU要对适配器进行配置,而适配器根据特定的组播地址表来接收帧。凡与此组播地址表不匹配的帧都将被NIC 丢弃。因此在组播的情况下,是适配器NIC而不是CPU决定是否接收一个帧。

假定在一个局域网中计算机A发送ARP请求分组,希望找出计算机B的硬件地址。这时局域网上的所有计算机都能收到这个广播发送的ARP请求分组。试问这时由哪个计算机使用ARP响应分组将计算机B的硬件地址告诉计算机A?

这要区分两种情况。第一,如果计算机B和计算机A都连接在同一个局域网上,那么就是计算机B发送ARP响应分组。第二,如果计算机B和计算机A不连接在同一个局域网上,那么就必须由一个连接计算机A所在局域网的路由器来转发ARP请求分组。这时,该路由器向计算机A发送ARP回答分组,给出自己的硬件地址。

路由器实现了物理层、数据链路层、网络层,这句话的含义是什么?

第1章中提到了网络中的两个通信结点利用协议栈进行通信的过程。发送方一层一层地把数据“包装”,接收方一层一层地把“包装”拆开,最后上交给用户。路由器实现了物理层,数据链路层和网络层的含义是指路由器有能力对这三层协议的控制信息进行识别、分析以及转换,直观的理解是路由器有能力对数据“包装”这三层协议或者“拆开”这三层协议。自然,路由器就有能力互联这三层协议不同的两个网络。

传输层

【考纲内容】

(一)传输层提供的服务

传输层的功能;传输层寻址与端口;无连接服务和面向连接服务

(二)UDP

UDP数据报;UDP校验

(三)TCP

TCP段;TCP连接管理;TCP可靠传输;TCP流量控制与拥塞控制

【复习提示】

传输层是整个网络体系结构中的关键层次。要求掌握传输层在计算机网络中的地位、功能、工作方式及原理等,掌握UDP 及 TCP(如首部格式、可靠传输、流量控制、拥塞控制、连接管理等)。其中,TCP报文分析、流量控制与拥塞控制机制,出选择题、综合题的概率均较大,因此要将其工作原理透彻掌握,以便能在具体的题目中灵活运用。

传输层提供的服务

传输层的功能

从通信和信息处理的角度看,传输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同时也是用户功能中的最低层。

传输层位于网络层之上,它为运行在不同主机上的进程之间提供了逻辑通信,而网络层提供主机之间的逻辑通信。显然,即使网络层协议不可靠(网络层协议使分组丢失、混乱或重复),传输层同样能为应用程序提供可靠的服务。

从图5.1可以看出,网络的边缘部分的两台主机使用网络核心部分的功能进行端到端的通信时,只有主机的协议栈才有传输层和应用层,而路由器在转发分组时都只用到下三层的功能〈即在通信子网中没有传输层,传输层只存在于通信子网以外的主机中)。

传输层的功能如下:

1)传输层提供应用进程之间的 $\color{green}{\text{逻辑通信}}$ (即端到端的通信)。与网络层的区别是,网络层提供的是主机之间的逻辑通信。

从网络层来说,通信的双方是两台主机,IP数据报的首部给出了这两台主机的P地址。但“两台主机之间的通信”实际上是两台主机中的应用进程之间的通信,应用进程之间的通信又称端到端的逻辑通信。这里“逻辑通信”的意思是:传输层之间的通信好像是沿水平方向传送数据,但事实上这两个传输层之间并没有一条水平方向的物理连接。

2) $\color{green}{\text{复用和分用}}$ 。复用是指发送方不同的应用进程都可使用同一个传输层协议传送数据;分用是指接收方的传输层在剥去报文的首部后能够把这些数据正确交付到目的应用进程

注意:网络层也有复用分用的功能,但网络层的复用是指发送方不同协议的数据都可以封装成IP数据报发送出去,分用是指接收方的网络层在剥去首部后把数据交付给相应的协议。

图5.1 传输层为相互通信的进程提供逻辑通信找不到图片(Image not found)

3)传输层还要对收到的报文进行差错检测(首部和数据部分)。而网络层只检查IP数据报的首部,不检验数据部分是否出错。

4)提供两种不同的传输协议,即面向连接的TCP和无连接的UDP。而网络层无法同时实现两种协议(即在网络层要么只提供面向连接的服务,如虚电路;要么只提供无连接服务,如数据报,而不可能在网络层同时存在这两种方式)。

传输层向高层用户屏蔽了低层网络核心的细节(如网络拓扑、路由协议等),它使应用进程看见的是好像在两个传输层实体之间有一条端到端的逻辑通信信道,这条逻辑通信信道对上层的表现却因传输层协议不同而有很大的差别。当传输层采用面向连接的TCP时,尽管下面的网络是不可靠的(只提供尽最大努力的服务),但这种逻辑通信信道就相当于一条全双工的可靠信道。但当传输层采用无连接的UDP时,这种逻辑通信信道仍然是一条不可靠信道。

传输层的寻址与端口

端口的作用

端口能够让应用层的各种应用进程将其数据通过端口向下交付给传输层,以及让传输层知道应当将其报文段中的数据向上通过端口交付给应用层相应的进程。端口是传输层服务访问点(TSAP),它在传输层的作用类似于IP地址在网络层的作用或MAC地址在数据链路层的作用,只不过IP地址和MAC地址标识的是主机,而端口标识的是主机中的应用进程。

$\color{red}{\text{数据链路层}}$ 的SAP是 $\color{green}{\text{MAC地址}}$ , $\color{red}{\text{网络层}}$ 的SAP是 $\color{green}{\text{IP地址}}$ , $\color{red}{\text{传输层}}$ 的SAP是 $\color{green}{\text{端口}}$ 。

在协议栈层间的抽象的协议端口是软件端口,它与路由器或交换机上的硬件端口是完全不同的概念。硬件端口是不同硬件设备进行交互的接口,而软件端口是应用层的各种协议进程与传输实体进行层间交互的一种地址。传输层使用的是 $\color{green}{\text{软件端口}}$ 。

端口号

应用进程通过端口号进行标识,端口号长度为16bit,能够表示65536( $2^{16}$ )个不同的端口号。

端口号只具有本地意义,即端口号只标识本计算机应用层中的各进程,在因特网中不同计算机的相同端口号是没有联系的。根据端口号范围可将端口分为两类:

1)服务器端使用的端口号。它又分为两类,最重要的一类是熟知端口号,数值为0~1023,IANA(互联网地址指派机构)把这些端口号指派给了TCP/IP最重要的一些应用程序,让所有的用户都知道。另一类称为登记端口号,数值为1024~49151。它是供没有熟知端口号的应用程序使用的,使用这类端口号必须在IANA登记,以防止重复。

一些常用的熟知端口号如下:

图片详情找不到图片(Image not found)

2)客户端使用的端口号,数值为49152~65535。由于这类端口号仅在客户进程运行时才动态地选择,因此又称 $\color{green}{\text{短暂端口号}}$ (也称临时端口)。通信结束后,刚用过的客户端口号就不复存在,从而这个端口号就可供其他客户进程以后使用。

套接字

在网络中通过IP地址来标识和区别不同的主机,通过端口号来标识和区分一台主机中的不同应用进程,端口号拼接到P地址即构成套接字Socket。在网络中采用发送方和接收方的套接字来识别端点。套接字,实际上是一个通信端点,即

套接字Socket = (IP地址:端口号)

它唯一地标识网络中的一台主机和其上的一个应用(进程)。

在网络通信中,主机A发给主机B的报文段包含目的端口号和源端口号,源端口号是“返回地址”的一部分,即当B需要发回一个报文段给A时,B到A的报文段中的目的端口号便是A到B的报文段中的源端口号(完全的返回地址是A的IP地址和源端口号)。

无连接服务与面向连接服务

面向连接服务就是在通信双方进行通信之前,必须先建立连接,在通信过程中,整个连接的情况一直被实时地监控和管理。通信结束后,应该释放这个连接。

无连接服务是指两个实体之间的通信不需要先建立好连接,需要通信时,直接将信息发送到“网络”中,让该信息的传递在网上尽力而为地往目的地传送。

TCP/IP协议族在IP层之上使用了两个传输协议:一个是面向连接的传输控制协议(TCP),采用TCP时,传输层向上提供的是一条全双工的可靠逻辑信道;另一个是无连接的用户数据报协议(UDP),采用UDP时,传输层向上提供的是一条不可靠的逻辑信道。

TCP提供面向连接的服务,在传送数据之前必须先建立连接,数据传送结束后要释放连接。TCP不提供广播或组播服务。由于TCP提供面向连接的可靠传输服务,因此不可避免地增加了许多开销,如确认、流量控制、计时器及连接管理等。这不仅使协议数据单元的头部增大很多,还要占用许多的处理机资源。因此TCP主要适用于可靠性更重要的场合,如文件传输协议(FTP),超文本传输协议(HTTP)、远程登录(TELNET)等。

UDP是一个无连接的非可靠传输层协议。它在P之上仅提供两个附加服务:多路复用和对数据的错误检查。IP知道怎样把分组投递给一台主机,但不知道怎样把它们投递给主机上的具体应用。UDP在传送数据之前不需要先建立连接,远程主机的传输层收到UDP报文后,不需要给出任何确认。由于UDP比较简单,因此执行速度比较快、实时性好。使用UDP的应用主要包括小文件传送协议(TFTP)、DNS、SNMP和实时传输协议(RTP)。

注意:

1)IP数据报和UDP数据报的区别:IP数据报在网络层要经过路由的存储转发;而UDP数据报在传输层的端到端的逻辑信道中传输,封装成IP数据报在网络层传输时,UDP数据报的信息对路由是不可见的。

2)TCP和网络层虚电路的区别:TCP报文段在传输层抽象的逻辑信道中传输,对路由器不可见;虚电路所经过的交换结点都必须保存虚电路状态信息。在网络层若采用虚电路方式,则无法提供无连接服务;而传输层采用TCP不影响网络层提供无连接服务。

UDP

UDP数据报

UDP概述

UDP仅在IP的数据报服务之上增加了两个最基本的服务:复用和分用以及差错检测。如果应用开发者选择UDP而非 TCP,那么应用程序几乎直接与IP打交道。为什么应用开发者宁愿在UDP之上构建应用,也不选择TCP?既然TCP提供可靠的服务,而UDP不提供,那么TCP总是首选吗?答案是否定的,因为有很多应用更适合用UDP,主要因为UDP具有如下优点:

1)UDP无须建立连接。因此UDP不会引入建立连接的时延。试想如果 DNS运行在TCP而非UDP上,那么DNS的速度会慢很多。HTTP使用TCP而非UDP,是因为对于基于文本数据的 Web 网页来说,可靠性是至关重要的。

2)无连接状态。TCP需要在端系统中维护连接状态。此连接状态包括接收和发送缓存、拥塞控制参数和序号与确认号的参数。而UDP不维护连接状态,也不跟踪这些参数。因此某些专用应用服务器使用UDP时,一般都能支持更多的活动客户机。

3)分组首部开销小。TCP有 $\color{green}{\text{20B}}$ 的首部开销,而UDP仅有 $\color{green}{\text{8B}}$ 的开销。

4)应用层能更好地控制要发送的数据和发送时间。UDP没有拥塞控制,因此网络中的拥塞不会影响主机的发送效率。某些 $\color{green}{\text{实时应用}}$ 要求以稳定的速度发送,能容忍一些数据的丢失,但不允许有较大的时延,而UDP正好满足这些应用的需求。

5)UDP支持一对一、一对多、多对一和多对多的交互通信。

UDP常用于一次性传输较少数据的网络应用,如 DNS、SNMP等,因为对于这些应用,若采用TCP,则将为连接创建、维护和拆除带来不小的开销。UDP也常用于多媒体应用(如IP电话、实时视频会议、流媒体等),显然,可靠数据传输对这些应用来说并不是最重要的,但TCP的拥塞控制会导致数据出现较大的延迟,这是它们不可容忍的。

UDP不保证可靠交付,但这并不意味着应用对数据的要求是不可靠的,所有维护可靠性的工作可由用户在应用层来完成。应用开发者可根据应用的需求来灵活设计自己的可靠性机制。

UDP是面向报文的。发送方UDP对应用层交下来的报文,在添加首部后就向下交付给IP层,一次发送一个报文,既不合并,也不拆分,而是保留这些报文的边界;接收方UDP对IP层交上来UDP数据报,在去除首部后就原封不动地交付给上层应用进程,一次交付一个完整的报文。因此报文不可分割,是UDP数据报处理的最小单位。因此,应用程序必须选择合适大小的报文,若报文太长,UDP把它交给IP层后,可能会导致分片;若报文太短,UDP把它交给IP层后,会使IP数据报的首部的相对长度太大,两者都会降低IP层的效率。

UDP的首部格式

UDP数据报包含两部分:UDP首部和用户数据。UDP首部有8B,由4个字段组成,每个字段的长度都是2B,如图5.2所示。各字段意义如下:

1) $\color{green}{\text{源端口}}$ 。源端口号。在需要对方回信时选用,不需要时可用全0。

2) $\color{green}{\text{目的端口}}$ 。目的端口号。这在终点交付报文时必须使用到。

3) $\color{green}{\text{长度}}$ 。UDP数据报的长度(包括 $\color{green}{\text{首部}}$ 和 $\color{green}{\text{数据}}$ ),其最小值是8(仅有首部)。

4) $\color{green}{\text{校验和}}$ 。检测UDP数据报在传输中是否有错。有错就丢弃。该字段是可选的,当源主机不想计算校验和时,则直接令该字段为全0。

图5.2UDP数据报格式找不到图片(Image not found)

当传输层从IP层收到UDP数据报时,就根据首部中的目的端口,把UDP 数据报通过相应的端口上交给应用进程,如图5.3所示。

如果接收方UDP发现收到的报文中的目的端口号不正确(即不存在对应于端口号的应用进程),那么就丢弃该报文,并由ICMP发送“端口不可达”差错报文给发送方。

图5.3UDP基于端口的分用找不到图片(Image not found)

UDP校验

在计算校验和时,要在UDP数据报之前增加12B的伪首部,伪首部并不是UDP的真正首部。只是在计算校验和时,临时添加在UDP数据报的前面,得到一个临时的UDP数据报。校验和就是按照这个临时的UDP 数据报来计算的。伪首部既不向下传送又不向上递交,而只是为了计算校验和。图5.4给出了UDP数据报的伪首部各字段的内容。

UDP校验和的计算方法和IP数据报首部校验和的计算方法相似。但不同的是,IP数据报的校验和只检验IP数据报的首部,但UDP的校验和则检查首部和数据部分。

图5.4 UDP数据报的首部和伪首部找不到图片(Image not found)

发送方首先把全零放入校验和字段并添加伪首部,然后把UDP数据报视为许多16位的字串接起来。若UDP数据报的数据部分不是偶数个字节,则要在数据部分末尾填入一个全零字节(但此字节不发送)。然后按二进制反码计算出这些16位字的和,将此和的二进制反码写入校验和字段,并发送。接收方把收到的 UDP 数据报加上伪首部(如果不为偶数个字节,那么还需要补上全零字节)后,按二进制反码求这些16位字的和。当无差错时其结果应为全1,否则就表明有差错出现,接收方就应该丢弃这个UDP数据报。

图5.5给出了一个计算UDP校验和的例子。本例中,UDP数据报的长度是15B(不含伪首部),因此需要添加一个全0字节。

图5.5计算UDP校验和的例子找不到图片(Image not found)

注意:

1)校验时,若UDP数据报部分的长度不是偶数个字节,则需填入一个全0字节,如图5.5所示。但是此字节和伪首部一样,是不发送的。

2)如果UDP校验和校验出UDP数据报是错误的,那么可以丢弃,也可以交付给上层,但是需要附上错误报告,即告诉上层这是错误的数据报。

3)通过伪首部,不仅可以检查源端口号、目的端口号和UDP用户数据报的数据部分,还可以检查IP数据报的源IP地址和目的地址。

这种简单的差错检验方法的检错能力并不强,但它的好处是简单、处理速度快。

图片详情找不到图片(Image not found)

参考文献

TCP协议

TCP协议的特点

TCP是在不可靠的P层之上实现的可靠的数据传输协议,它主要解决传输的可靠、有序、无丢失和不重复问题。TCP是TCP/IP体系中非常复杂的一个协议,主要特点如下:

1)TCP是面向连接的传输层协议。

2)每条TCP连接只能有两个端点,每条TCP 连接只能是点对点的(一对一)。

3)TCP提供可靠的交付服务,保证传送的数据无差错、不丢失、不重复且有序。

4)TCP提供全双工通信,允许通信双方的应用进程在任何时候都能发送数据,为此TCP连接的两端都设有发送缓存和接收缓存,用来临时存放双向通信的数据。

发送缓存用来暂时存放以下数据:①发送应用程序传送给发送方TCP准备发送的数据;②TCP已发送但尚未收到确认的数据。接收缓存用来暂时存放以下数据:①按序到达但尚未被接收应用程序读取的数据;②不按序到达的数据。

5)TCP是面向 $\color{green}{\text{字节流}}$ 的,虽然应用程序和TCP的交互是一次一个数据块(大小不等),但TCP把应用程序交下来的数据仅视为一连串的无结构的字节流。

TCP和UDP在发送报文时所采用的方式完全不同。UDP报文的长度由发送应用进程决定,而TCP报文的长度则根据接收方给出的窗口值和当前网络拥塞程度来决定。如果应用进程传送到TCP缓存的数据块太长,TCP就把它划分得短一些再传送;如果太短,TCP也可以等到积累足够多的字节后再组成报文段发送出去。关于TCP报文的长度问题,后面还会详细讨论。

TCP报文段

TCP传送的数据单元称为报文段。TCP报文段既可以用来运载数据,又可以用来建立连接、释放连接和应答。一个TCP报文段分为首部和数据两部分,整个TCP报文段作为TP数据报的数据部分封装在IP数据报中,如图5.6所示。其首部的前20B是固定的。TCP报文段的首部最短为20B,后面有4N字节是根据需要而增加的选项,通常长度为4B的整数倍。

TCP的全部功能体现在其首部的各个字段中,各字段意义如下:

1) $\color{green}{\text{源端口和目的端口}}$ 。各占2B。端口是运输层与应用层的服务接口,运输层的复用和分用功能都要通过端口实现。

2) $\color{green}{\text{序号}}$ 。占4B,范围为0~ $2^{32}$ -1,共 $ 2^{23}$ 个序号。TCP是面向字节流的(即TCP传送时是逐个字节传送的),所以TCP连接传送的字节流中的每个字节都按顺序编号。序号字段的值指的是本报文段所发送的数据的第一个字节的序号。

例如,一报文段的序号字段值是301,而携带的数据共有100B,表明本报文段的数据的最后一个字节的序号是400,因此下一个报文段的数据序号应从401开始。

图5.6TCP报文段找不到图片(Image not found)

3)确认号。占4B,是期望收到对方下一个报文段的第一个数据字节的序号。若确认号为N,则表明到序号N-1为止的所有数据都已正确收到。

例如,B正确收到了A发送过来的一个报文段,其序号字段是501,而数据长度是200B(序号501~700),这表明B正确收到了A发送的到序号700为止的数据。因此B期望收到A的下一个数据序号是701,于是B在发送给A的确认报文段中把确认号置为701。

4)数据偏移(即首部长度)。占4位,这里不是IP数据报分片的那个数据偏移,而是表示首部长度(首部中还有长度不确定的选项字段),它指出TCP报文段的数据起始处距离TCP报文段的起始处有多远。“数据偏移”的单位是32位(以4B为计算单位)。因此当此字段的值为15时,达到TCP首部的最大长度60B。

5)保留。占6位,保留为今后使用,但目前应置为0。

6)紧急位URG。URG= 1时,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据)。但URG需要和紧急指针配合使用,即数据从第一个字节到紧急指针所指字节就是紧急数据。

7)确认位ACK。仅当ACK =1时确认号字段才有效。当ACK=0时, $\color{green}{\text{确认号无效}}$ 。

TCP规定,在连接建立后所有传送的报文段都必须把ACK置1。

8)推送位PSH(Push)。接收方TCP收到PSH= 1的报文段,就尽快地交付给接收应用进程,而不再等到整个缓存都填满后再向上交付。

9)复位位RST (Reset)。RST=1时,表明TCP连接中出现严重差错(如主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接。

10)同步位SYN。同步SYN=1表示这是一个连接请求或连接接受报文。

当SYN=1,ACK=0时,表明这是一个 $\color{green}{\text{连接请求报文}}$ ,对方若同意建立连接,则应在响应报文中使用SYN=1,ACK= 1。

11)终止位FIN (Finish)。用来释放一个连接。当FIN= 1时,表明此报文段的发送方的数据已发送完毕,并要求释放传输连接。

12)窗口。占2B,范围为0~ $2^{16}$ -1。它指出现在允许对方发送的数据量,接收方的数据缓存空间是有限的,因此用窗口值作为接收方让发送方设置其发送窗口的依据。

例如,设确认号是701,窗口字段是1000。这表明,从701号算起,发送此报文段的一方还有接收1000字节数据(字节序号为701~1700)的接收缓存空间。

13)校验和。占 2B。校验和字段检验的范围包括首部和数据两部分。在计算校验和时,和UDP一样,要在TCP报文段的前面加上12B 的伪首部(只需将UDP伪首部的第4个字段,即协议字段的17改成6,其他的和UDP一样)。

14)紧急指针。占2B。紧急指针仅在 URG= 1时才有意义,它指出在本报文段中紧急数据共有多少字节(紧急数据在报文段数据的最前面)。

15)选项。长度可变。TCP最初只规定了一种选项,即最大报文段长度(Maximum Segment Size,MSS)。MSS是TCP报文段中的数据字段的最大长度(注意仅仅是数据字段)。

16)填充。这是为了使整个首部长度是4B的整数倍。

TCP连接管理

TCP是面向连接的协议,因此每个TCP连接都有三个阶段:连接建立、数据传送和连接释放。TCP连接的管理就是使运输连接的建立和释放都能正常进行。

在TCP连接建立的过程中,要解决以下三个问题:

1)要使每一方能够确知对方的存在。

2)要允许双方协商一些参数(如最大窗口值、是否使用窗口扩大选项、时间戳选项及服务质量等)。

3)能够对运输实体资源(如缓存大小、连接表中的项目等)进行分配。

TCP把连接作为最基本的抽象,每条TCP连接有两个端点,TCP连接的端点不是主机,不是主机的IP地址,不是应用进程,也不是传输层的协议端口。TCP连接的端口即为套接字(socket)或插口,每条TCP连接唯一地被通信的两个端点(即两个套接字)确定。

TCP连接的建立采用客户/服务器方式。主动发起连接建立的应用进程称为客户(Client),而被动等待连接建立的应用进程称为服务器(Server)。

TCP连接的建立

连接的建立经历以下3个步骤,通常称为三次握手,如图5.7所示。

图5.7用“三次握手”建立TCP连接找不到图片(Image not found)

连接建立前,服务器进程处于LISTEN(收听)状态,等待客户的连接请求。

第一步:客户机的TCP首先向服务器的TCP发送连接请求报文段。这个特殊报文段的首部中的同步位SYN置1,同时选择一个初始序号seq= $x$ 。TCP规定,SYN报文段不能携带数据,但要消耗掉一个序号。这时,TCP客户进程进入SYN-SENT( $\color{green}{\text{同步已发送}}$ )状态。

第二步:服务器的TCP收到连接请求报文段后,如同意建立连接,则向客户机发回确认,并为该TCP连接分配缓存和变量。在确认报文段中,把SYN位和ACK位都置1,确认号是ack= $x$ +1,同时也为自己选择一个初始序号seq=y。注意,确认报文段不能携带数据,但也要消耗掉个序号。这时,TCP服务器进程进入SYN-RCVD(同步收到)状态。

第三步:当客户机收到确认报文段后,还要向服务器给出确认,并为该TCP 连接分配缓存和变量。确认报文段的ACK位置1,确认号 ack= $y$ +1,序号seq= $x$ +1。该报文段可以携带数据若不携带数据则不消耗序号。这时,TCP客户进程进入ESTABLISHED(已建立连接)状态。

成功进行以上三步后,就建立了TCP连接,接下来就可以传送应用层数据。TCP提供的是全双工通信,因此通信双方的应用进程在任何时候都能发送数据。

另外,值得注意的是,服务器端的资源是在完成第二次握手时分配的,而客户端的资源是在完成第三次握手时分配的,这就使得服务器易于受到SYN洪泛攻击。

TCP连接的释放

天下没有不散的筵席,TCP同样如此。参与TCP连接的两个进程中的任何一个都能终止该连接。TCP连接释放的过程通常称为 $\color{green}{\text{四次握手}}$ ,如图5.8所示。

第一步:客户机打算关闭连接时,向其TCP发送连接释放报文段,并停止发送数据,主动关闭TCP连接,该报文段的终止位FIN置1,序号seq= $u$ ,它等于前面已传送过的数据的最后一个字节的序号加1,FIN 报文段即使不携带数据,也消耗掉一个序号。这时,TCP客户进程进入FIN-WAIT-1( $\color{green}{\text{终止等待1}}$ )状态。TCP是全双工的,即可以想象为一条TCP连接上有两条数据通路,发送FIN的一端不能再发送数据,即关闭了其中一条数据通路,但对方还可以发送数据。

第二步:服务器收到连接释放报文段后即发出确认,确认号ack = $u$ +1,序号 seq = $v$ ,等于它前面已传送过的数据的最后一个字节的序号加1。然后服务器进入CLOSE-WAIT(关闭等待)状态。此时,从客户机到服务器这个方向的连接就释放了,TCP连接处于半关闭状态。但服务器若发送数据,客户机仍要接收,即从服务器到客户机这个方向的连接并未关闭。

图5.8用“四次握手”释放TCP连接找不到图片(Image not found)

第三步:若服务器已没有要向客户机发送的数据,就通知TCP释放连接,此时其发出FIN=1的连接释放报文段。设该报文段的序号为w(在半关闭状态服务器可能又发送了一些数据),还须重复上次已发送的确认号ack = $u$ +1。这时服务器进入LAST-ACK(最后确认)状态。

第四步:客户机收到连接释放报文段后,必须发出确认。把确认报文段中的确认位ACK 置1,确认号ack = $w$ +1,序号seq = $u$ +1。此时TCP连接还未释放,必须经过时间等待计时器设置的时间2MSL(最长报文段寿命)后,客户机才进入CLOSED(连接关闭)状态。

对上述TCP连接建立和释放的总结如下:

1)连接建立。分为3步:

${\textstyle\unicode{x2460}}$ SYN=1,seq = $x$ 。

${\textstyle\unicode{x2461}}$ SYN=1,ACK=1,seq= $y$ ,ack = $x$ +1。

③ ACK=1,seq= $x$ + 1,ack = $y$ +1。

2)释放连接。分为4步:

${\textstyle\unicode{x2460}}$ FIN=1,seq = $u$ 。

${\textstyle\unicode{x2461}}$ ACK= 1,seq= $w$ , ack = $u$ +1。

③FIN= 1,ACK=1, seq= $w$ ,ack= $u$ +1。

${\textstyle\unicode{x2463}}$ ACK= 1,seq= $u$ +1,ack = $w$ + 1。

选择题喜欢考查(关于连接和释放的题目,ACK、SYN、FIN一定等于1),请牢记。

TCP可靠传输

TCP 的任务是在IP层不可靠的、尽力而为服务的基础上建立一种可靠数据传输服务。TCP提供的可靠数据传输服务保证接收方进程从缓存区读出的字节流与发送方发出的字节流完全一样。TCP使用了 $\color{green}{\text{校验}}$ 、 $\color{green}{\text{序号}}$ 、 $\color{green}{\text{确认}}$ 和 $\color{green}{\text{重传}}$ 等机制来达到这一目的。其中,TCP 的校验机制与UDP校验一样,这里不再赘述。

序号

TCP首部的序号字段用来保证数据能有序提交给应用层,TCP把数据视为一个无结构但有序的字节流,序号建立在传送的字节流之上,而不建立在报文段之上。

TCP连接传送的数据流中的每个字节都编上一个序号。序号字段的值是指本报文段所发送的数据的第一个字节的序号。如图5.9所示,假设A和B之间建立了一条TCP连接,A的发送缓存区中共有10B,序号从О开始标号,第一个报文包含第0~2个字节,则该TCP报文段的序号是0,第二个报文段的序号是3。

图5.9A的发送缓存区中的数据划分成TCP段找不到图片(Image not found)
确认

TCP首部的确认号是期望收到对方的下一个报文段的数据的第一个字节的序号。在图5.9中,如果接收方B已收到第一个报文段,此时B希望收到的下一个报文段的数据是从第3个字节开始的,那么B发送给A的报文中的确认号字段应为3。发送方缓存区会继续存储那些已发送但未收到确认的报文段,以便在需要时重传。

TCP 默认使用累计确认,即TCP只确认数据流中至第一个丢失字节为止的字节。例如,在图5.8中,接收方B收到了A发送的包含字节0~2及字节6~7的报文段。由于某种原因,B还未收到字节3~5的报文段,此时B仍在等待字节3(和其后面的字节),因此B到A的下一个报文段将确认号字段置为3。

重传

有两种事件会导致TCP对报文段进行重传:超时和冗余ACK。

(1)超时

TCP每发送一个报文段,就对这个报文段设置一次计时器。计时器设置的重传时间到期但还未收到确认时,就要重传这一报文段。

由于TCP的下层是一个互联网环境,IP 数据报所选择的路由变化很大,因而传输层的往返时延的方差也很大。为了计算超时计时器的重传时间,TCP采用一种自适应算法,它记录一个报文段发出的时间,以及收到相应确认的时间,这两个时间之差称为报文段的往返时间(Round-TripTime,RTT)。TCP保留了RTT的一个加权平均往返时间 $RTT_S$ ,它会随新测量RTT样本值的变化而变化。显然,超时计时器设置的超时重传时间(Retransmission Time-Out,RTO)应略大于 $RTT_S$ ,但也不能大太多,否则当报文段丢失时,TCP不能很快重传,导致数据传输时延大。

(2)冗余ACK(冗余确认)

超时触发重传存在的一个问题是超时周期往往太长。所幸的是,发送方通常可在超时事件发生之前通过注意所谓的冗余ACK来较好地检测丢包情况。冗余ACK 就是再次确认某个报文段的ACK,而发送方先前已经收到过该报文段的确认。例如,发送方A发送了序号为1、2、3、4、5的TCP报文段,其中2号报文段在链路中丢失,它无法到达接收方B。因此3、4、5号报文段对于B来说就成了失序报文段。TCP规定每当比期望序号大的失序报文段到达时,就发送一个冗余ACK,指明下一个期待字节的序号。在本例中,3、4、5号报文到达B,但它们不是B所期望收到的下一个报文,于是B就发送3个对1号报文段的冗余ACK,表示自己期望接收2号报文段。TCP规定当发送方收到对同一个报文段的3个冗余ACK时,就可以认为跟在这个被确认报文段之后的报文段已经丢失。就前面的例子而言,当A收到对于1号报文段的3个冗余ACK时,它可以认为2号报文段已经丢失,这时发送方A可以立即对2号报文执行重传,这种技术通常称为 $\color{green}{\text{快速重传}}$ 。当然,冗余ACK还被用在拥塞控制中,这将在后面的内容中讨论。

TCP流量控制

TCP提供流量控制服务来消除发送方((发送速率太快)使接收方缓存区溢出的可能性,因此可以说流量控制是一个速度匹配服务(匹配发送方的发送速率与接收方的读取速率)。

TCP提供一种基于滑动窗口协议的流量控制机制,滑动窗口的基本原理已在第3章的数据链路层介绍过,这里要介绍的是TCP如何使用窗口机制来实现流量控制。

在通信过程中,接收方根据自己接收缓存的大小,动态地调整发送方的发送窗口大小,这称为接收窗口rwnd,即调整TCP报文段首部中的“窗口”字段值,来限制发送方向网络注入报文的速率。同时,发送方根据其对当前网络拥塞程度的估计而确定的窗口值,这称为拥塞窗口 cwnd(后面会讲到),其大小与网络的带宽和时延密切相关。

例如,在通信中,有效数据只从A发往B,而B仅向A发送确认报文,这时B可以通过设置确认报文段首部的窗口字段来将rwnd通知给A。rwnd即接收方允许连续接收的最大能力,单位是字节。发送方A总是根据最新收到的rwnd值来限制自己发送窗口的大小,从而将未确认的数据量控制在rwnd大小之内,保证A不会使B的接收缓存溢出。当然,A的发送窗口的实际大小取 rwnd和 cwnd 中的最小值。图5.10中的例子说明了如何利用滑动窗口机制进行流量控制设A向B发送数据,在连接建立时,B告诉A:“我的接收窗口rwnd = 400(字节)”。接收方进行了三次流量控制,这三个报文段都设置了ACK=1,只有在ACK=1时确认号字段才有意义。第一次把窗口减小到rwnd =300,第二次把窗口减小到rwnd = 100,最后把窗口减小到rwnd =0,即不允许发送方再发送数据。这使得发送方暂停发送的状态将持续到B重新发出一个新的窗口值为止。

图5.10利用可变窗口进行流量控制举例找不到图片(Image not found)

传输层和数据链路层的流量控制的区别是:传输层定义端到端用户之间的流量控制,数据链路层定义两个中间的相邻结点的流量控制。另外,数据链路层的滑动窗口协议的窗口大小不能 $\color{green}{\text{动态变化}}$ ,传输层的则可以动态变化。

TCP拥塞控制

拥塞控制是指防止过多的数据注入网络,保证网络中的路由器或链路不致过载。出现拥塞时,端点并不了解拥塞发生的细节,对通信连接的端点来说,拥塞往往表现为通信时延的增加。

拥塞控制与流量控制的区别:拥塞控制是让网络能够承受现有的网络负荷,是一个全局性的过程,涉及所有的主机、所有的路由器,以及与降低网络传输性能有关的所有因素。相反,流量控制往往是指点对点的通信量的控制,是个端到端的问题(接收端控制发送端),它所要做的是抑制发送端发送数据的速率,以便使接收端来得及接收。当然,拥塞控制和流量控制也有相似的地方,即它们都通过控制发送方发送数据的速率来达到控制效果。

例如,某个链路的传输速率为10Gb/s,某大型机向一台PC 以1Gb/s的速率传送文件,显然网络的带宽是足够大的,因而不存在拥塞问题,但如此高的发送速率将导致PC可能来不及接收,因此必须进行流量控制。但若有100万台PC在此链路上以1Mb/s的速率传送文件,则现在的问题就变为网络的负载是否超过了现有网络所能承受的范围。

因特网建议标准定义了进行拥塞控制的4种算法: $\color{green}{\text{慢开始}}$ 、 $\color{green}{\text{拥塞避免}}$ 、 $\color{green}{\text{快重传}}$ 和 $\color{green}{\text{快恢复}}$ 。发送方在确定发送报文段的速率时,既要根据接收方的接收能力,又要从全局考虑不要使网络发生拥塞。因此,TCP协议要求发送方维护以下两个窗口:

1)接收窗口rwnd,接收方根据目前接收缓存大小所许诺的最新窗口值,反映接收方的容量。由接收方根据其放在TCP报文的首部的窗口字段通知发送方。

2)拥塞窗口cwnd,发送方根据自己估算的网络拥塞程度而设置的窗口值,反映网络的当前容量。只要网络未出现拥塞,拥塞窗口就再增大一些,以便把更多的分组发送出去。但只要网络出现拥塞,拥塞窗口就减小一些,以减少注入网络的分组数。

发送窗口的上限值应取接收窗口rwnd和拥塞窗口 cwnd中较小的一个,即

发送窗口的上限值= min[rwnd, cwnd]

接收窗口的大小可根据TCP报文首部的窗口字段通知发送方,而发送方如何维护拥塞窗口呢?这就是下面讲解的慢开始和拥塞避免算法。

注意:这里假设接收方总是有足够大的缓存空间,因而发送窗口大小由网络的拥塞程度决定,也就是说,可以将发送窗口等同为拥塞窗口。

慢开始和拥塞避免

(1)慢开始算法

在TCP刚刚连接好并开始发送TCP报文段时,先令拥塞窗口cwnd = 1,即一个最大报文段长度MSS。每收到一-个对新报文段的确认后,将cwnd加1,即增大一个MSS。用这样的方法逐步增大发送方的cwnd,可使分组注入网络的速率更加合理。

例如,A向B发送数据,发送方先置拥塞窗口cwnd = 1,A发送第一个报文段,A收到B对第一个报文段的确认后,把 cwnd 从1增大到2;于是A接着发送两个报文段,A收到B对这两个报文段的确认后,把cwnd从2增大到4,下次就可一次发送4个报文段。

慢开始的“慢” $\color{red}{\text{并不是}}$ 指拥塞窗口cwnd的 $\color{green}{\text{增长速率慢}}$ ,而是指在TCP开始发送报文段时先设置cwnd = 1,使得发送方在开始时只发送一个报文段(目的是试探一下网络的拥塞情况),然后再逐渐增大cwnd,这对防止网络出现拥塞是一个非常有力的措施。使用慢开始算法后,每经过一个传输轮次(即往返时延RTT),cwnd就会加倍,即 cwnd的大小指数式增长。这样,慢开始直把cwnd增大到一个规定的 $\color{green}{\text{慢开始门限}}$ ssthresh(阈值),然后改用 $\color{green}{\text{拥塞避免}}$ 算法。

(2)拥塞避免算法

拥塞避免算法的思路是让拥塞窗口cwnd缓慢增大,具体做法是:每经过一个往返时延RTT就把发送方的拥塞窗口cwnd加1,而不是加倍,使拥塞窗口cwnd按线性规律缓慢增长(即加法增大),这比慢开始算法的拥塞窗口增长速率要缓慢得多。

根据cwnd的大小执行不同的算法,可归纳如下:

  • 当cwnd < ssthresh时,使用慢开始算法。
  • 当cwnd > ssthresh 时,停止使用慢开始算法而改用拥塞避免算法。
  • 当cwnd = ssthresh时,既可使用慢开始算法,又可使用拥塞避免算法(通常做法)。

(3)网络拥塞的处理

无论在慢开始阶段还是在拥塞避免阶段,只要发送方判断网络出现拥塞( $\color{green}{\text{未按时收到确认}}$ ),就要把慢开始门限ssthresh 设置为出现拥塞时的发送方的cwnd值的一半(但不能小于2)。然后把拥塞窗口cwnd重新设置为1,执行慢开始算法。这样做的目的是迅速减少主机发送到网络中的分组数,使得发生拥塞的路由器有足够时间把队列中积压的分组处理完。

慢开始和拥塞避免算法的实现过程如图5.11所示。

图5.11 慢开始和拥塞避免算法的实现过程找不到图片(Image not found)
  • 初始时,拥塞窗口置为1,即 cwnd = 1,慢开始门限置为16,即ssthresh = 16。
  • 慢开始阶段,cwnd 的初值为1,以后发送方每收到一个确认ACK,cwnd值加1,也即经过每个传输轮次(RTT),cwnd 呈指数规律增长。当拥塞窗口 cwnd 增长到慢开始门限ssthresh时(即当cwnd = 16时),就改用拥塞避免算法,cwnd按线性规律增长。
  • 假定cwnd = 24时网络出现超时,更新ssthresh值为12(即变为超时时cwnd值的一半),cwnd重置为1,并执行慢开始算法,当cwnd = 12时,改为执行拥塞避免算法。

注意:在慢开始(指数级增长)阶段,若2cwnd > ssthresh,则下一个RTT后的cwnd等于ssthresh,而不等于2cwnd,即 cwnd 不能跃过ssthresh 值。如图5.11所示,在第16个轮次时cwnd、ssthresh = 12,在第17个轮次时cwnd= 12,而不等于16。

在慢开始和拥塞避免算法中使用了“乘法减小”和“加法增大”方法。“乘法减小”是指不论是在慢开始阶段还是在拥塞避免阶段,只要出现超时(即很可能出现了网络拥塞),就把慢开始门限值ssthresh 设置为当前拥塞窗口的一半(并执行慢开始算法)。当网络频繁出现拥塞时,ssthresh值就下降得很快,以大大减少注入网络的分组数。而“加法增大”是指执行拥塞避免算法后,在收到对所有报文段的确认后(即经过一个RTT),就把拥塞窗口cwnd增加一个 MSS 大小,使拥塞窗口缓慢增大,以防止网络过早出现拥塞。

拥塞避免并不能完全避免拥塞。利用以上措施要完全避免网络拥塞是不可能的。拥塞避免是指在拥塞避免阶段把拥塞窗口控制为按线性规律增长,使网络比较不容易出现拥塞。

快重传和快恢复

快重传和快恢复算法是对慢开始和拥塞避免算法的改进。

(1)快重传

在上一节介绍的TCP可靠传输机制中,快重传技术使用了冗余ACK来检测丢包的发生。同样,冗余ACK也用于网络拥塞的检测(丢了包当然意味着网络可能出现了拥塞)。快重传并非取消重传计时器,而是在某些情况下可更早地重传丢失的报文段。

当发送方连续收到三个重复的 ACK报文时,直接重传对方尚未收到的报文段,而不必等待那个报文段设置的重传计时器超时。

(2)快恢复

快恢复算法的原理如下:当发送方连续收到三个冗余ACK(即重复确认)时,执行“乘法减小”算法,把慢开始门限ssthresh 设置为此时发送方cwnd的一半。这是为了预防网络发生拥塞。但发送方现在认为网络很可能没有发生(严重〉拥塞,否则就不会有几个报文段连续到达接收方,也不会连续收到重复确认。因此与慢开始不同之处是它把 cwnd值设置为慢开始门限ssthresh 改变后的数值,然后开始执行拥塞避免算法(“加法增大”),使拥塞窗口缓慢地线性增大。

由于跳过了拥塞窗口cwnd 从1起始的慢开始过程,所以被称为快恢复。快恢复算法的实现过程如图5.12所示,作为对比,虚线为慢开始的处理过程。

图5.12快恢复算法的实现过程找不到图片(Image not found)

在流量控制中,发送方发送数据的量由接收方决定,而在拥塞控制中,则由发送方自己通过检测网络状况来决定。实际上,慢开始、拥塞避免、快重传和快恢复几种算法是同时应用在拥塞控制机制中。四种算法使用的总结:在TCP连接建立和网络出现超时时,采用慢开始和拥塞避免算法;当发送方接收到冗余ACK时,采用快重传和快恢复算法。

在本节的最后,再次提醒读者:接收方的缓存空间总是有限的。因此,发送方发送窗口的实际大小由流量控制和拥塞控制共同决定。当题目中同时出现接收窗口(rwnd)和拥塞窗口(cwnd)时,发送方实际的发送窗口大小是由rwnd和 cwnd中较小的那一个确定的。

本章小结及疑难点

MSS设置得太大或太小会有什么影响?

规定最大报文段MSS的大小并不是考虑到接收方的缓存可能放不下TCP报文段。实际上,MSS与接收窗口没有关系。TCP的报文段的数据部分,至少要加上40B 的首部(TCP首部至少20B和IP首部至少20B),才能组装成一个P数据报。若选择较小的MSS值,网络的利用率就很低。设想在极端情况下,当TCP报文段中只含有1B的数据时,在P层传输的数据报的开销至少有40B。这样,网络的利用率就不会超过1/41。到了数据链路层还要加上一些开销,网络的利用率进一步降低。但反过来,若TCP报文段很长,那么在P层传输时有可能要分解成多个短数据报片,在终端还要把收到的各数据报片装配成原来的TCP报文段。传输有差错时,还要进行重传。这些都会使开销增大。

因此,MSS应尽量大一些,只要在IP层传输时不要再分片就行。由于IP数据报所经历的路径是动态变化的,在一条路径上确定的不需要分片的MSS,如果改走另一条路径,就可能需要进行分片。因此,最佳的MSS是很难确定的。MSS的默认值为536B,因此在因特网上的所有主机都能接收的报文段长度是536+20×TCP固定首部长度=556B。

为何不采用“三次握手”释放连接,且发送最后一次握手报文后要等待2MSL 的时间呢?

原因有两个:

1)保证A发送的最后一个确认报文段能够到达B。如果A不等待2MSL,若A返回的最后确认报文段丢失,则B不能进入正常关闭状态,而A此时已经关闭,也不可能再重传。

2)防止出现“已失效的连接请求报文段”。A在发送最后一个确认报文段后,再经过2MSL可保证本连接持续的时间内所产生的所有报文段从网络中消失。造成错误的情形与下文(疑难点6)不采用“两次握手”建立连接所述的情形相同。

注意:服务器结束TCP连接的时间要比客户机早一些,因为客户机最后要等待2MSL后才可进入 CLOSED状态。

如何判定此确认报文段是对原来的报文段的确认,还是对重传的报文段的确认?

由于对于一个重传报文的确认来说,很难分辨它是原报文的确认还是重传报文的确认,使用修正的Karn算法作为规则:在计算平均往返时间RTT时,只要报文段重传了,就不采用其往返时间样本,且报文段每重传一次,就把RTO增大一些。

TCP使用的是GBN还是选择重传?

这是一个有必要弄清的问题。前面讲过,TCP使用累计确认,这看起来像是GBN的风格。但是,正确收到但失序的报文并不会丢弃,而是缓存起来,并且发送冗余ACK指明期望收到的下一个报文段,这是TCP方式和 GBN的显著区别。例如,A发送了N个报文段,其中第k (k < N)个报文段丢失,其余N-1个报文段正确地按序到达接收方B。使用GBN时,A需要重传分组k,及所有后继分组k+1,k+2,…,N。相反,TCP却至多重传一个报文段,即报文段k。另外,TCP中提供一个SACK (Selective ACK)选项,即 $\color{green}{\text{选择确认选项}}$ 。使用选择确认选项时,TCP看起来就和SR非常相似。因此,TCP的差错恢复机制可视为GBN和SR协议的混合体。

为什么超时时间发生时cwnd被置为1,而收到3个冗余ACK时cwnd减半?

大家可以从如下角度考虑。超时事件发生和收到3个冗余ACK,哪个意味着网络拥塞程度更严重﹖通过分析不难发现,在收到3个冗余ACK的情况下,网络虽然拥塞,但至少还有ACK报文段能被正确交付。而当超时发生时,说明网络可能已经拥塞得连 ACK 报文段都传输不了,发送方只能等待超时后重传数据。因此,超时时间发生时,网络拥塞更严重,那么发送方就应该最大限度地抑制数据发送量,所以cwnd置为1;收到3个冗余ACK时,网络拥塞不是很严重,发送方稍微抑制一下发送的数据量即可,所以cwnd 减半。

为什么不采用“两次握手”建立连接呢?

这主要是为了防止两次握手情况下已失效的连接请求报文段突然又传送到服务器而产生错误。考虑下面这种情况。客户A向服务器B发出TCP连接请求,第一个连接请求报文在网络的某个结点长时间滞留,A超时后认为报文丢失,于是再重传一次连接请求,B收到后建立连接。数据传输完毕后双方断开连接。而此时,前一个滞留在网络中的连接请求到达服务器B,而B认为A又发来连接请求,此时若使用“三次握手”,则B向A返回确认报文段,由于是一个失效的请求,因此A不予理睬,建立连接失败。若采用的是“两次握手”,则这种情况下B认为传输连接已经建立,并一直等待A传输数据,而A此时并无连接请求,因此不予理睬,这样就造成了B的资源白白浪费。

是否 TCP和UDP都需要计算往返时间RTT?

往返时间RTT仅对传输层TCP协议才很重要,因为TCP要根据RTT的值来设置超时计时器的超时时间。

UDP没有确认和重传机制,因此RTT对UDP没有什么意义。

因此,不能笼统地说“往返时间RTT对传输层来说很重要”,因为只有TCP才需要计算RTT,而UDP不需要计算RTT。

为什么TCP在建立连接时不能每次都选择相同的、固定的初始序号?

1)假定主机A和B频繁地建立连接,传送一些TCP报文段后,再释放连接,然后又不断地建立新的连接、传送报文段和释放连接。

2)假定每次建立连接时,主机A都选择相同的、固定的初始序号,如选择1。

3)假定主机A发出的某些TCP报文段在网络中会滞留较长时间,以致主机A超时重传这些TCP报文段。

4)假定有一些在网络中滞留时间较长的TCP报文段最后终于到达主机B,但这时传送该报文段的那个连接早已释放,而在到达主机B时的TCP连接是一条新的TCP 连接。

这样,工作在新的TCP连接的主机B就有可能会接收在旧的连接传送的、已无意义的、过时的TCP报文段(因为这个TCP报文段的序号有可能正好处在当前新连接所用的序号范围之中),结果产生错误。

因此,必须使得迟到的TCP报文段的序号不处在新连接所用的序号范围之中。

这样,TCP在建立新的连接时所选择的初始序号一定要和前面的一些连接所用过的序号不同。因此,不同的TCP连接不能使用相同的初始序号。

假定在一个互联网中,所有链路的传输都不出现差错,所有结点也都不会发生故障。试问在这种情况下,TCP的“可靠交付”的功能是否就是多余的?

不是多余的。TCP的“可靠交付”功能在互联网中起着至关重要的作用。至少在以下的情况下,TCP的“可靠交付”功能是必不可少的。

1)每个IP数据报独立地选择路由,因此在到达目的主机时有可能出现失序。

2)由于路由选择的计算出现错误,导致P数据报在互联网中转圈。最后数据报首部中的生存时间(TTL)的数值下降到零。这个数据报在中途就被丢失。

3)某个路由器突然出现很大的通信量,以致路由器来不及处理到达的数据报。因此有的数据报被丢弃。

以上列举的问题表明:必须依靠TCP的“可靠交付”功能才能保证在目的主机的目的进程中接收到正确的报文。

应用层

【考纲内容】

(一)网络应用模型

客户/服务器模型;P2P模型

(二)域名系统(DNS)

层次域名空间;域名服务器;域名解析过程

(三)文件传输协议(FTP)

FTP的工作原理;控制连接与数据连接

(四)电子邮件(E-mail)

电子邮件系统的组成结构;电子邮件格式与MIME;SMTP与POP3

(五)万维网( www)

wwW的概念与组成结构;HTTP

【复习提示】

本章内容既可以以选择题的形式考查,也可以结合其他章节的内容出综合题。所以牢固掌握本章的几个典型应用层协议是关键。我们生活中的很多网络应用都是建立在这些协议的基础上的,因此在学习时要注意联系实际,提高学习的兴趣,才会获得更好的效果。

网络应用模型

客户/服务器模型

在客户/服务器(Client/Server,C/S)模型中,有一个总是打开的主机称为服务器,它服务许多来自其他称为客户机的主机请求。其工作流程如下:

1)服务器处于接收请求的状态。

2)客户机发出服务请求,并等待接收结果。

3)服务器收到请求后,分析请求,进行必要的处理,得到结果并发送给客户机。

客户程序必须知道服务器程序的地址,客户机上一般不需要特殊的硬件和复杂的操作系统。而服务器上运行的软件则是专门用来提供某种服务的程序,可同时处理多个远程或本地客户的要求。系统启动后即自动调用并一直不断地运行着,被动地等待并接收来自各地客户的请求。因此,服务器程序不需要知道客户程序的地址。

客户/服务器模型最主要的特征是:客户是服务请求方,服务器是服务提供方。如 Web应用程序,其中总是打开的 Web服务器服务于运行在客户机上的浏览器的请求。当Web服务器接收到来自客户机对某对象的请求时,它向该客户机发送所请求的对象以做出响应。常见的使用客户/服务器模型的应用包括Web、文件传输协议(FTP)、远程登录和电子邮件等。

客户/服务器模型的主要特点还有:

1)网络中各计算机的地位不平等,服务器可以通过对用户权限的限制来达到管理客户机的目的,使它们不能随意存储/删除数据,或进行其他受限的网络活动。整个网络的管理工作由少数服务器担当,因此网络的管理非常集中和方便。

2)客户机相互之间不直接通信。例如,在 Web应用中两个浏览器并不直接通信。

3)可扩展性不佳。受服务器硬件和网络带宽的限制,服务器支持的客户机数有限。

P2P模型

不难看出,在C/S模型中(见图6.1),服务器性能的好坏决定了整个系统的性能,当大量用户请求服务时,服务器就必然成为系统的瓶颈。P2P模型(见图6.2)的思想是整个网络中的传输内容不再被保存在中心服务器上,每个结点都同时具有下载、上传的功能,其权利和义务都是大体对等的。

图6.1客户/服务器模型,图6.2 P2P模型找不到图片(Image not found)

在P2P模型中,各计算机没有固定的客户和服务器划分。相反,任意一对计算机一-称为对等方(Peer),直接相互通信。实际上,P2P模型从本质上来看仍然使用客户/服务器方式,每个结点既作为客户访问其他结点的资源,也作为服务器提供资源给其他结点访问。当前比较流行的P2P应用有PPlive、Bittorrent和电驴等。

与C/S模型相比,P2P模型的优点主要体现如下:

1)减轻了服务器的计算压力,消除了对某个服务器的完全依赖,可以将任务分配到各个结点上,因此大大提高了系统效率和资源利用率(例如,播放流媒体时对服务器的压力过大,而通过P2P模型,可以利用大量的客户机来提供服务)。

2)多个客户机之间可以直接共享文档。

3)可扩展性好,传统服务器有响应和带宽的限制,因此只能接受一定数量的请求。4)网络健壮性强,单个结点的失效不会影响其他部分的结点。

P2P模型也有缺点。在获取服务的同时,还要给其他结点提供服务,因此会占用较多的内存,影响整机速度。例如,经常进行P2P下载还会对硬盘造成较大的损伤。据某互联网调研机构统计,当前P2P程序已占互联网50%~90%的流量,使网络变得非常拥塞,因此各大ISP(互联网服务提供商,如电信、网通等)通常都对P2P应用持反对态度。

域名系统(DNS)

域名系统(Domain Name System,DNS)是因特网使用的命名系统,用来把便于人们记忆的具有特定含义的主机名(如 www.cskaoyan.com)转换为便于机器处理的P地址。相对于IP地址,人们更喜欢使用具有特定含义的字符串来标识因特网上的计算机。值得注意的是,DNS 系统采用客户/服务器模型,其协议运行在UDP之上,使用53号端口。

从概念上可将DNS 分为3部分:层次域名空间、域名服务器和解析器。

层次域名空间

因特网采用层次树状结构的命名方法。采用这种命名方法,任何一个连接到因特网的主机或路由器,都有一个唯一的层次结构名称,即域名(Domain Name)。域(Domain)是名字空间中一个可被管理的划分。域还可以划分为子域,而子域还可以继续划分为子域的子域,这样就形成了顶级域、二级域、三级域等。每个域名都由标号序列组成,而各标号之间用点(“.”)隔开。一个典型的例子如图6.3所示,它是王道论坛用于提供wwW服务的计算机 (Web服务器)的域名,它由三个标号组成,其中标号com是顶级域名,标号cskaoyan是二级域名,标号www是三级域名。

图6.3 一个域名的例子找不到图片(Image not found)

关于域名中的标号有以下几点需要注意:

1)标号中的英文不区分大小写。

2)标号中除连字符(-)外不能使用其他的标点符号。

3)每个标号不超过63个字符,多标号组成的完整域名最长不超过255个字符。4)级别最低的域名写在最左边,级别最高的顶级域名写在最右边。

顶级域名(Top Level Domain,TLD)分为如下三大类:

1)国家顶级域名(nTLD)。国家和某些地区的域名,如“.cn”表示中国,“.us”表示美国,“.uk”表示英国。

2)通用顶级域名(gTLD)。常见的有“.com”(公司)、“.net”(网络服务机构)、“.org”(非营利性组织)和“.gov”(国家或政府部门)等。

3)基础结构域名。这种顶级域名只有一个,即 arpa,用于反向域名解析,因此又称反向域名。

国家顶级域名下注册的二级域名均由该国家自行确定。图6.4展示了域名空间的树状结构。

图6.4域名空间的树状结构找不到图片(Image not found)

在域名系统中,每个域分别由不同的组织进行管理。每个组织都可以将它的域再分成一定数目的子域,并将这些子域委托给其他组织去管理。例如,管理CN域的中国将EDU.CN子域授权给中国教育和科研计算机网(CERNET)来管理。

域名服务器

因特网的域名系统被设计成一个联机分布式的数据库系统,并采用客户/服务器模型。域名到IP地址的解析是由运行在域名服务器上的程序完成的,一个服务器所负责管辖的(或有权限的范围称为区(不以“域”为单位),各单位根据具体情况来划分自己管辖范围的区,但在一个
中的所有结点必须是能够连通的,每个区设置相应的仪限跌白服方茄充ID城外的解析,而且还必机的域名到IP地址的映射。每个域名服务器不但能够进行一些域名到IP地址的解析,而且还必须具有连向其他域名服务器的信息。当自己不能进行域名到IP地址的转换时,能够知道到什么地方去找其他域名服务器。

DNS使用了大量的域名服务器,它们以层次方式组织。没有一台域名服务器具有因特网上所有主机的映射,相反,该映射分布在所有的 DNS上。采用分布式设计的 DNS,是一个在因特网上实现分布式数据库的精彩范例。主要有4种类型的域名服务器。

根域名服务器

根域名服务器是最高层次的域名服务器,所有的根域名服务器都知道所有的顶级域名服务器的IP地址。根域名服务器也是最重要的域名服务器,不管是哪个本地域名服务器,若要对因特网上任何一个域名进行解析,只要自己无法解析,就首先要求助于根域名服务器。因特网上有13个根域名服务器,尽管我们将这13个根域名服务器中的每个都视为单个服务器,但每个“服务器”实际上是冗余服务器的集群,以提供安全性和可靠性。需要注意的是,根域名服务器用来管辖顶级域(如.com),通常它并不直接把待查询的域名直接转换成P地址,而是告诉本地域名服务器下一步应当找哪个顶级域名服务器进行查询。

顶级域名服务器

这些域名服务器负责管理在该顶级域名服务器注册的所有二级域名。收到 DNS查询请求时,就给出相应的回答(可能是最后的结果,也可能是下一步应当查找的域名服务器的IP地址)。

授权域名服务器(权限域名服务器)

每台主机都必须在授权域名服务器处登记。为了更加可靠地工作,一台主机最好至少有两个授权域名服务器。实际上,许多域名服务器都同时充当本地域名服务器和授权域名服务器。授权域名服务器总能将其管辖的主机名转换为该主机的IP地址。

本地域名服务器

本地域名服务器对域名系统非常重要。每个因特网服务提供者(ISP),或一所大学,甚至一所大学中的各个系,都可以拥有一个本地域名服务器。当一台主机发出 DNS 查询请求时,这个查询请求报文就发送给该主机的本地域名服务器。事实上,我们在Windows系统中配置“本地连接”时,就需要填写DNS地址,这个地址就是本地DNS(域名服务器)的地址。

DNS的层次结构如图6.5所示。

图6.5 DNS的层次结构找不到图片(Image not found)

域名解析过程

域名解析是指把域名映射成为P地址或把P地址映射成域名的过程。前者称为正向解析,后者称为反向解析。当客户端需要域名解析时,通过本机的DNS客户端构造一个DNS请求报文,以UDP数据报方式发往本地域名服务器。

域名解析有两种方式:递归查询和递归与迭代相结合的查询。

递归查询的过程如图 6.6(a)所示,本地域名服务器只需向根域名服务器查询一次,后面的几次查询都是递归地在其他几个域名服务器之间进行的[ 步骤③~⑥ ]。在步骤⑦中,本地域名服务器从根域名服务器得到了所需的I地址,最后在步骤⑧中,本地域名服务器把查询结果告诉发起查询的主机。由于该方法给根域名服务造成的负载过大,所以在实际中几乎不使用。

常用递归与迭代相结合的查询方式如图6.6(b)所示,该方式分为两个部分。

主机向本地域名服务器的查询采用的是递归查询

也就是说,如果本地主机所询问的本地域名服务器不知道被查询域名的P地址,那么本地域名服务器就以DNS客户的身份,向根域名服务器继续发出查询请求报文(即替该主机继续查询),而不是让该主机自己进行下一步的查询。两种查询方式的这一步是相同的。

图6.6两种域名解析方式工作原理找不到图片(Image not found)
本地域名服务器向根域名服务器的查询采用迭代查询

当根域名服务器收到本地域名服务器发出的迭代查询请求报文时,要么给出所要查询的IP地址,要么告诉本地域名服务器:“你下一步应当可哪个坝级域石服?同‘样,而级域名服务器收域名服务器向这个顶级域名服务器进行后续的食闻,如图 0.0(D)P7g下一步成向哪个权限域名到查询报文后,要么给出所要查询的P地址,要么告诉本地域名服方’I代纪态海的主机。服务器查询。最后,知道所要解析的域名的P地址后,把这个结果返回给发起查询的主机。

下面举例说明域名解析的过程。假定某客户机想获知域名为y.abc.com主机的IP地址,域名解析的过程((共使用了8个UDP报文)如下:

${\textstyle\unicode{x2460}}$ 客户机向其本地域名服务器发出 DNS请求报文(递归查询)。

②本地域名服务器收到请求后,查询本地缓存,若没有该记录,则以DNS客户的身份向根域名服务器发出解析请求报文(迭代查询)。

③根域名服务器收到请求后,判断该域名属于.com 域,将对应的顶级域名服务器dns.com的IP地址返回给本地域名服务器。

④本地域名服务器向顶级域名服务器dns.com发出解析请求报文(迭代查询)。

${\textstyle\unicode{x2464}}$ 顶级域名服务器dns.com收到请求后,判断该域名属于abc.com域,因此将对应的授权域名服务器dns.abc.com的IP地址返回给本地域名服务器。

⑥本地域名服务器向授权域名服务器dns.abc.com发起解析请求报文(迭代查询)。

⑦授权域名服务器dns.abc.com收到请求后,将查询结果返回给本地域名服务器。

${\textstyle\unicode{x2467}}$ 本地域名服务器将查询结果保存到本地缓存,同时返回给客户机。

为了提高DNS的查询效率,并减少因特网上的 DNS查询报文数量,在域名服务器中广泛地使用了高速缓存。当一个 DNS服务器接收到 DNS查询结果时,它能将该DNS信息缓存在高速缓存中。这样,当另一个相同的域名查询到达该DNS服务器时,该服务器就能够直接提供所要求的IP地址,而不需要再去向其他DNS 服务器询问。因为主机名和IP地址之间的映射不是永久的,所以DNS 服务器将在一段时间后丢弃高速缓存中的信息。

文件传输协议(FTP)

FTP的工作原理

文件传输协议(File Transfer Protocol,FTP)是因特网上使用得最广泛的文件传输协议。提供交互式的访问,允许客户指明文件的类型与格式,并允许文件具有存取权限。它屏蔽了各计算机系统的细节,因而适合于在异构网络中的任意计算机之间传送文件。

FTP提供以下功能:

①提供不同种类主机系统(硬、软件体系等都可以不同)之间的文件传输能力。

②以用户权限管理的方式提供用户对远程FTP服务器上的文件管理能力。

③以匿名FTP的方式提供公用文件共享的能力。

FTP采用客户!服务器的工作方式,它使用TCP可靠的传输服务。一个FTP服务器进程可同时为多个客户进程提供服务。FTP的服务器进程由两大部分组成:一个主进程,负责接收新的请求;另外有若干从属进程,负责处理单个请求。其工作步骤如下:

①打开熟知端口21(控制端口),使客户进程能够连接上。②等待客户进程发连接请求。

③启动从属进程来处理客户进程发来的请求。主进程与从属进程并发执行,从属进程对客户进程的请求处理完毕后即终止。

④回到等待状态,继续接收其他客户进程的请求。

FTP服务器必须在整个会话期间保留用户的状态信息。特别是服务器必须把指定的用户账户与控制连接联系起来,服务器必须追踪用户在远程目录树上的当前位置。

控制连接与数据连接

FTP在工作时使用两个并行的TCP连接(见图6.7):一个是控制连接(端口号21),一个是数据连接(端口号20)。使用两个不同的端口号可使协议更加简单和更容易实现。

图6.7控制连接和数据连接找不到图片(Image not found)
控制连接

服务器监听21号端口,等待客户连接,建立在这个端口上的连接称为控制连接,控制连接用来传输控制信息(如连接请求、传送请求等),并且控制信息都以7位ASCII格式传送。FTP客户发出的传送请求,通过控制连接发送给服务器端的控制进程,但控制连接并不用来传送文件在传输文件时还可以使用控制连接(如客户在传输中途发一个中止传输的命令),因此控制连接在整个会话期间一直保持打开状态。

数据连接

服务器端的控制进程在接收到FTP客户发来的文件传输请求后,就创建“数据传送进程”和“数据连接”。数据连接用来连接客户端和服务器端的数据传送进程,数据传送进程实际完成文件的传送,在传送完毕后关闭“数据传送连接”并结束运行。

数据连接有两种传输模式:主动模式PORT 和被动模式PASV。PORT 模式的工作原理:客户端连接到服务器的21端口,登录成功后要读取数据时,客户端随机开放一个端口,并发送命令告知服务器,服务器收到PORT 命令和端口号后,通过20端口和客户端开放的端口连接,发送数据。PASV模式的不同点是,客户端要读取数据时,发送PASV命令到服务器,服务器在本地随机开放一个端口,并告知客户端,客户端再连接到服务器开放的端口进行数据传输。可见,是用PORT模式还是PASV模式,选择权在客户端。简单概括为,主动模式传送数据是“服务器”连接到“客户端”的端口;被动模式传送数据是“客户端”连接到“服务器”的端口。

因为FTP使用了一个分离的控制连接,所以也称FTP的控制信息是带外(Out-of-band)传送的。使用FTP时,若要修改服务器上的文件,则需要先将此文件传送到本地主机,然后再将修改后的文件副本传送到原服务器,来回传送耗费很多时间。网络文件系统(NFS)采用另一种思路,它允许进程打开一个远程文件,并能在该文件的某个特定位置开始读写数据。这样,NFS可使用户复制一个大文件中的一个很小的片段,而不需要复制整个大文件。

电子邮件

电子邮件系统的组成结构

自从有了因特网,电子邮件就在因特网上流行起来。电子邮件是一种异步通信方式,通信时不需要双方同时在场。电子邮件把邮件发送到收件人使用的邮件服务器,并放在其中的收件人邮箱中,收件人可以随时上网到自己使用的邮件服务器进行读取。

一个电子邮件系统应具有图6.8所示的三个最主要的组成构件,即用户代理(User Agent)、邮件服务器和电子邮件使用的协议,如 SMTP、POP3(或IMAP)等。

图6.8电子邮件系统最主要的组成构件找不到图片(Image not found)

用户代理(UA): 用户与电子邮件系统的接口。用户代理向用户提供-一个很友好的接口来发送和接收邮件,用户代理至少应当具有撰写、显示和邮件处理的功能。通常情况下,用户代理就是一个运行在PC.上的程序(电子邮件客户端软件),常见的有Outlook 和Foxmail等。

邮件服务器:它的功能是发送和接收邮件,同时还要向发信人报告邮件传送的情况(已交付、被拒绝、丢失等)。邮件服务器采用客户/服务器方式工作,但它必须能够同时充当客户和服务器。例如,当邮件服务器A向邮件服务器B发送邮件时,A就作为SMTP客户,而B是SMTP服务
器;反之,当B向A发送邮件时,B就是SMTP客户,而A就是SMTP服务器。

邮件发送协议和读取协议:邮件发送协议用于用户代理向邮件服务器发送邮件或在邮件服务器之间发送邮件,如SMTP;邮件读取协议用于用户代理从邮件服务器读取邮件,如POP3。注意,SMTP用的是“推”(Push)的通信方式,即用户代理向邮件服务器发送邮件及在邮件服务器之间
发送邮件时,SMTP客户将邮件“推”送到SMTP服务器。而POP3用的是“拉”(Pull)的通信方式,即用户读取邮件时,用户代理向邮件服务器发出请求,“拉”取用户邮箱中的邮件。

电子邮件的发送、接收过程可简化为如图6.9所示。

图6.9电子邮件的发送、接收过程找不到图片(Image not found)

下面简单介绍电子邮件的收发过程。

①发信人调用用户代理来撰写和编辑要发送的邮件。用户代理用SMTP把邮件传送给发送端邮件服务器。

②发送端邮件服务器将邮件放入邮件缓存队列中,等待发送。运行在发送端邮件服务器的SMTP客户进程,发现邮件缓存中有待发送的邮件,就向运行在接收端邮件服务器的SMTP服务器进程发起建立TCP连接。

④TCP连接建立后,SMTP客户进程开始向远程SMTP服务器进程发送邮件。当所有待发送邮件发完后,SMTP就关闭所建立的TCP连接。

${\textstyle\unicode{x2464}}$ 运行在接收端邮件服务器中的SMTP服务器进程收到邮件后,将邮件放入收信人的用户邮箱,等待收信人在方便时进行读取。

⑥收信人打算收信时,调用用户代理,使用POP3(或IMAP)协议将自己的邮件从接收端邮件服务器的用户邮箱中取回(如果邮箱中有来信的话)。

电子邮件格式与 MIME

电子邮件格式

一个电子邮件分为信封和内容两大部分,邮件内容又分为 $\color{green}{\text{首部}}$ 和 $\color{green}{\text{主体}}$ 两部分。RFC 822规定了邮件的首部格式,而邮件的主体部分则让用户自由撰写。用户写好首部后,邮件系统自动地将信封所需的信息提取出来并写在信封上,用户不需要亲自填写信封上的信息。

邮件内容的首部包含一些首部行,每个首部行由一个关键字后跟冒号再后跟值组成。有些关键字是必需的,有些则是可选的。最重要的关键字是To:和 Subject:。

To是必需的关键字,后面填入一个或多个收件人的电子邮件地址。电子邮件地址的规定格式为:收件人邮箱名@邮箱所在主机的域名,如 abc@cskaoyan.com,其中收信人邮箱名即用户名.abc在cskaoyan.com这个邮件服务器上必须是唯一的。这也就保证了abc@cskaoyan.com这个邮件地址在整个因特网上是唯一的。

Subject是可选关键字,是邮件的主题,反映了邮件的主要内容。

当然,还有一个必填的关键字是From,但它通常由邮件系统自动填入。首部与主体之间用一个空行进行分割。典型的邮件内容如下:

图片详情找不到图片(Image not found)
多用途网际邮件扩充(MIME)

由于SMTP只能传送一定长度的ASCII码,许多其他非英语国家的文字(如中文、俄文,甚至带重音符号的法文或德文)就无法传送,且无法传送可执行文件及其他二进制对象,因此提出了多用途网络邮件扩充( Multipurpose Internet MailExtensions,MIME)。

MIME并未改动SMTP或取代它。MIME的意图是继续使用目前的格式,但增加了邮件主体的结构,并定义了传送非ASCII码的编码规则。也就是说,MIME邮件可在现有的电子邮件程序和协议下传送。MIME与SMTP的关系如图6.10所示。

MIME主要包括以下三部分内容:

①5个新的邮件首部字段,包括MIME 版本、内容描述、内容标识、传送编码和内容类型。

②定义了许多邮件内容的格式,对多媒体电子邮件的表示方法进行了标准化。

③定义了传送编码,可对任何内容格式进行转换,而不会被邮件系统改变。

图6.10 SMTP与MIME的关系找不到图片(Image not found)

SMTP 和 POP3

SMTP

简单邮件传输协议(Simple Mail Transfer Protocol,SMTP)是一种提供可靠且有效的电子邮件传输的协议,它控制两个相互通信的SMTP进程交换信息。由于SMTP使用客户/服务器方式,因此负责发送邮件的SMTP进程就是SMTP客户,而负责接收邮件的SMTP进程就是SMTP服务器。SMTP用的是TCP连接,端口号为25。SMTP通信有以下三个阶段。

连接建立

发件人的邮件发送到发送方邮件服务器的邮件缓存中后,SMTP客户就每隔一定时间对邮件缓存扫描一次。如发现有邮件,就使用SMTP的熟知端口号(25)与接收方邮件服务器的SMTP服务器建立TCP连接。连接建立后,接收方SMTP服务器发出220 Service ready(服务就绪)。然后SMTP客户向SMTP服务器发送HELO命令,附上发送方的主机名。

SMTP不使用中间的邮件服务器。TCP连接总是在发送方和接收方这两个邮件服务器之间直接建立,而不管它们相隔多远,不管在传送过程中要经过多少个路由器。当接收方邮件服务器因故障暂时不能建立连接时,发送方的邮件服务器只能等待一段时间后再次尝试连接。

邮件传送

连接建立后,就可开始传送邮件。邮件的传送从MAIL 命令开始,MAIL命令后面有发件.的地址。如 MAIL FROM:hoopdog@hust.edu.cn。若SMTP服务器已准备好接收邮件,则回250 OK。接着SMTP客户端发送一个或多个RCPT(收件人recipient 的缩写)命令,格式为RCPTO:<收件人地址>。每发送一个RCPT命令,都应有相应的信息从SMTP服务器返回,如 250 OK或550 No such user here(无此用户)。

RCPT命令的作用是,先弄清接收方系统是否已做好接收邮件的准备,然后才发送邮件,以便不至于发送了很长的邮件后才知道地址错误,进而避免浪费通信资源。

获得OK的回答后,客户端就使用DATA命令,表示要开始传输邮件的内容。正常情况下,SMTP服务器回复的信息是354 Start mail input; end with < CRLF >.< CRLF >。< CRLF >表示回车换行。此时SMTP客户端就可开始传送邮件内容,.并用< CRLF >.< CRLF >表示邮件内容的结束。

(3)连接释放

邮件发送完毕后,SMTP客户应发送QUIT命令。SMTP服务器返回的信息是221(服务关闭),表示SMTP同意释放TCP连接。邮件传送的全部过程就此结束。

连接释放

邮件发送完毕后,SMTP客户应发送QUIT 命令。SMTP服务器返回的信息是221(服务关闭),表示SMTP同意释放TCP连接。邮件传送的全部过程就此结束。

POP3和IMAP

邮局协议(Post Office Protocol,POP)是一个非常简单但功能有限的邮件读取协议,现在使用的是它的第3个版本POP3。POP3采用的是“拉”(Pull)的通信方式,当用户读取邮件时,用户代理向邮件服务器发出请求,“拉”取用户邮箱中的邮件。

POP也使用客户/服务器的工作方式,在传输层使用TCP,端口号为110。接收方的用户代理上必须运行POP客户程序,而接收方的邮件服务器上则运行POP服务器程序。POP有两种工作方式:“下载并保留”和“下载并删除”。在“下载并保留”方式下,用户从邮件服务器上读取邮件后,邮件依然会保存在邮件服务器上,用户可再次从服务器上读取该邮件;而使用“下载并删除”方式时,邮件一旦被读取,就被从邮件服务器上删除,用户不能再次从服务器上读取。

另一个邮件读取协议是因特网报文存取协议(IMAP),它比POP复杂得多,IMAP为用户提供了创建文件夹、在不同文件夹之间移动邮件及在远程文件夹中查询邮件等联机命令,为此IMA服务器维护了会话用户的状态信息。IMAP的另一特性是允许用户代理只获取报文的某些部分,例如可以只读取一个报文的首部,或多部分MIME报文的一部分。这非常适用于低带宽的情况,用户可能并不想取回邮箱中的所有邮件,尤其是包含很多音频或视频的大邮件。

此外,随着万维网的流行,目前出现了很多基于万维网的电子邮件,如Hotmail、Gmail 这种电子邮件的特点是,用户浏览器与Hotmail或Gmail的邮件服务器之间的邮件发送或接收使用的是HTTP,而仅在不同邮件服务器之间传送邮件时才使用SMTP。

万维网(WWW)

WWW的概念与组成结构

万维网(World Wide Web,wWW)是一个分布式、联机式的信息存储空间,在这个空间中:一样有用的事物称为一样“资源”,并由一个全域“统一资源定位符”(URL)标识。这些资源通过超文本传输协议(HTTP)传送给使用者,而后者通过单击链接来获取资源。

万维网使用链接的方法能非常方便地从因特网上的一个站点访问另一个站点(即“链接到另一个站点”),从而主动地按需获取丰富的信息。超文本标记语言(HyperText Markup Language,HTML)使得万维网页面的设计者可以很方便地用一个超链接从本页面的某处链接到因特网上的任何一个万维网页面,并能够在自己的计算机屏幕上显示这些页面。

万维网的内核部分是由三个标准构成的:

1) $\color{green}{\text{统一资源定位符}}$ (URL)。负责标识万维网上的各种文档,并使每个文档在整个万维网的范围内具有唯一的标识符URL。

2) $\color{green}{\text{超文本传输协议}}$ (HTTP)。一个应用层协议,它使用TCP连接进行可靠的传输,HTTP是万维网客户程序和服务器程序之间交互所必须严格遵守的协议。

3) $\color{green}{\text{超文本标记语言}}$ (HTML)。一种文档结构的标记语言,它使用一些约定的标记对页面上的各种信息(包括文字、声音、图像、视频等)、格式进行描述。

URL是对可以从因特网上得到的资源的位置和访问方法的一种简洁表示。URL相当于一个文件名在网络范围的扩展。URL的一般形式是:

< 协议 >://< 主机 >:< 端口 >/< 路径 >

<协议>指用什么协议来获取万维网文档,常见的协议有 http、ftp 等;<主机>是存放资源的主机在因特网中的域名或P地址;<端口>和<路径>有时可省略。在URL 中不区分大小写。

万维网以客户/服务器方式工作。浏览器是在用户主机上的万维网客户程序,而万维网文档所驻留的主机则运行服务器程序,这台主机称为万维网服务器。客户程序向服务器程序发出请求服务器程序向客户程序送回客户所要的万维网文档。工作流程如下:

1)Web用户使用浏览器(指定URL)与Web服务器建立连接,并发送浏览请求。

2)Web服务器把URL转换为文件路径,并返回信息给Web浏览器。

3)通信完成,关闭连接。

万维网是无数个网络站点和网页的集合,它们在一起构成了因特网最主要的部分(因特网也包括电子邮件、Usenet和新闻组)。

超文本传输协议(HTTP)

HTTP定义了浏览器(万维网客户进程)怎样向万维网服务器请求万维网文档,以及服务器怎样把文档传送给浏览器。从层次的角度看,HTTP是面向事务的(Transaction-oriented)应用层协议,它规定了在浏览器和服务器之间的请求和响应的格式与规则,是万维网上能够可靠地交换文件(包括文本、声音、图像等各种多媒体文件)的重要基础。

图6.11万维网的工作过程找不到图片(Image not found)
HTTP的操作过程

从协议执行过程来说,浏览器要访问wwW服务器时,首先要完成对 wWW服务器的域名解析。一旦获得了服务器的P地址,浏览器就通过TCP向服务器发送连接建立请求。

万维网的大致工作过程如图6.11所示。每个万维网站点都有一个服务器进程,它不断地监听TCP的端口80(默认),当监听到连接请求后便与浏览器建立TCP连接。然后,浏览器就向服务器发送请求获取某个 Web页面的HTTP请求。服务器收到请求后,将构建所请求Web页的必需信息,并通过HTTP响应返回给浏览器。浏览器再将信息进行解释,然后将Web页显示给用户。最后,TCP连接释放。

在浏览器和服务器之间的请求与响应的交互,必须遵循规定的格式和规则,这些格式和规则就是HTTP。因此HTTP有两类报文:请求报文(从Web客户端向Web服务器发送服务请求)和响应报文(从Web 服务器对Web客户端请求的回答)。

用户单击鼠标后所发生的事件按顺序如下(以访问清华大学的网站为例);

1)浏览器分析链接指向页面的URL (http://www.tsinghua.edu.cn /chn/index.htm)。

2)浏览器向DNS请求解析www.tsinghua.edu.cn的IP地址。

3)域名系统DNS解析出清华大学服务器的IP地址。

4)浏览器与该服务器建立TCP连接(默认端口号为80)。

5)浏览器发出HTTP请求:GET /chn/index.htm。

6)服务器通过HTTP响应把文件index.htm发送给浏览器。

7)释放TCP连接。

8)浏览器解释文件index.htm,并将 Web页显示给用户。

HTTP的特点

HTTP使用TCP作为运输层协议,保证了数据的可靠传输。HTTP不必考虑数据在传输过程中被丢弃后又怎样被重传。但是,HTTP本身是 $\color{green}{\text{无连接}}$ 的(务必注意)。也就是说,虽然HTTP使用了TCP连接,但通信的双方在交换HTTP报文之前不需要先建立HTTP连接。

HTTP是无状态的。也就是说,同一个客户第二次访问同一个服务器上的页面时,服务器的响应与第一次被访问时的相同。因为服务器并不记得曾经访问过的这个客户,也不记得为该客户曾经服务过多少次。

HTTP的无状态特性简化了服务器的设计,使服务器更容易支持大量并发的HTTP请求。在实际应用中,通常使用Cookie 加数据库的方式来跟踪用户的活动(如记录用户最近浏览的商品等)。Cookie的工作原理:当用户浏览某个使用Cookie 的网站时,该网站服务器就为用户产生一个唯一的识别码,如“123456”,接着在给用户的响应报文中添加一个Set-cookie的首部行“Setcookie: 123456”。用户收到响应后,就在它管理的特定Cookie文件中添加这个服务器的主机名和Cookie识别码,当用户继续浏览这个网站时,会取出这个网站的识别码,并放入请求报文的Cookie首部行“Cookie: 123456”,服务器根据请求报文中的Cookie识别码就能从数据库中查询到该用户的活动记录,进而执行一些个性化的工作,如根据用户的历史浏览记录向其推荐新产品等。

HTTP既可以使用非持久连接,也可以使用持久连接(HTTP/1.1支持)。

对于非持久连接,每个网页元素对象(如JPEG图形、Flash等)的传输都需要单独建立一个TCP连接,如图6.12所示(第三次握手的报文段中捎带了客户对万维网文档的请求)。也就是说,请求一个万维网文档所需的时间是该文档的传输时间(与文档大小成正比)加上两倍往返时间RTT(一个RTT用于TCP连接,另一个RTT用于请求和接收文档)。每个对象引用都导致2×RTT的开销,此外每次建立新的TCP连接都要分配缓存和变量,使万维网服务器的负担很重。

所谓持久连接,是指万维网服务器在发送响应后仍然保持这条连接,使同一个客户(浏览器)和该服务器可以继续在这条连接上传送后续的HTTP请求和响应报文,如图6.13所示。

图6.12请求一个万维网文档所需的时间 图6.13 使用持久连接(非流水线)找不到图片(Image not found)

持久连接又分为非流水线和流水线两种方式。对于非流水线方式,客户在收到前一个响应后才能发出下一个请求,服务器发送完一个对象后,其TCP连接就处于空闲状态,浪费了服务器资源。HTTP/1.1 的默认方式是使用流水线的持久连接,这种情况下,客户每遇到一个对象引用就立即发出一个请求,因而客户可以逐个地连续发出对各个引用对象的请求。如果所有的请求和响应都是连续发送的,那么所有引用的对象共计经历1个RTT延迟,而不是像非流水线方式那样,每个引用都必须有1个RTT延迟。这种方式减少了TCP 连接中的空闲时间,提高了效率。

HTTP的报文结构

HTTP是面向文本的(Text-Oriented),因此报文中的每个字段都是一些ASCII码串,并且每个字段的长度都是不确定的。有两类HTTP报文:

  • 请求报文:从客户向服务器发送的请求报文,如图6.14(a)所示。
  • 响应报文:从服务器到客户的回答,如图6.14(b)所示。
图6.14 HTTP的报文结构找不到图片(Image not found)

HTTP请求报文和响应报文都由三个部分组成。从图6.14可以看出,这两种报文格式的区别就是开始行不同。

开始行:用于区分是请求报文还是响应报文。在请求报文中的开始行称为请求行,而在响应报文中的开始行称为状态行。开始行的三个字段之间都以空格分隔,最后的“CR”和“LF”分别代表“回车”和“换行”。请求报文的“请求行”有三个内容:方法、请求资源的URL及HTTP的版本。其中,“方法”是对所请求对象进行的操作,这些方法实际上也就是一些命令。表6.1 给出了HTTP请求报文中常用的几个方法。

首部行:用来说明浏览器、服务器或报文主体的一些信息。首部可以有几行,但也可以不使用。在每个首部行中都有首部字段名和它的值,每一行在结束的地方都要有“回车”和“换行”。整个首部行结束时,还有一空行将首部行和后面的实体主体分开。

实体主体:在请求报文中一般不用这个字段,而在响应报文中也可能没有这个字段。图6.15所示为使用Wireshark捕获的HTTP请求报文的示例,下面结合前几章的内容对请求报文(图中下部分)进行分析。

根据帧的结构定义,在图6.15所示的以太网数据帧中,第1~6个字节为目的MAC地址(默认网关地址),即 O0-Of-e2-3f-27-3f;第7~12个字节为本机 MAC地址,即00-27-13-67-73-8d;第13~14个字节08~00为类型字段,表示上层使用的是P数据报协议。第15~34个字节(共20B)为P数据报的首部,其中第27~30个字节为源P地址,即 db-df-d2-70,转换成十进制为219.223.210.112;第31~34个字节为目的P地址,即 71-69-4c-O0a,转换成十进制为113.105.78.10.第35~54个字节(共20B)为TCP报文段的首部。

从第55个字节开始才是TCP数据部分(阴影部分),即从应用层传递下来的数据(本例中即请求报文),GET对应请求行的方法,/face/20.gif对应请求行的URL,HTTP/1.1对应请求行的版本,左边数字是对应字符的ASCII码,如’G’=Ox47、’E’=Ox45、”T’=Ox54等。图6.15的请求报文中首部行字段内容的含义,建议读者自行了解,也可以自己动手抓包分析。

表6.1 HTTP请求报文中常用的几个方法找不到图片(Image not found)
图6.15使用 Wireshark捕获的HTTP请求报文的示例找不到图片(Image not found)

右下角开始的“…??.' .gs…E..%..@.@..0…pgi”等是上面介绍过的第1~54个字节中对应的ASCII码字符,而这些字符在这里不代表任何意义。

常见应用层协议小结如表6.2所示。

表6.2常见应用层协议小结找不到图片(Image not found)

本章小结及疑难点

如何理解客户进程端口号与服务器进程端口号?

通常我们所说的熟知端口号是指应用层协议在服务器端的默认端口号,而客户端进程的端口号是由客户端进程任意指定的(临时的)。

当客户进程向服务器进程发出建立连接请求时,要寻找连接服务器进程的熟知端口号,同时还要告诉服务器进程自己的临时端口号。接着,服务器进程就用自己的熟知端口号与客户进程所提供的端口号建立连接。

互联网、因特网和万维网的区别是什么?

互联网((internet)泛指由多个计算机网络按照一定的通信协议相互连接而成的一个大型计算机网络。

因特网(Internet〉是指在ARPA网基础上发展而来的世界上最大的全球性互联网络。因特网和其他类似的由计算机相互连接而成的大型网络系统,都可算是“互联网”,因特网只是互联网中最大的一个。

万维网是无数个网络站点和网页的集合,它们一起构成了因特网最主要的部分。(因特网也包括电子邮件、Usenet和新闻组)。

域名的高速缓存是什么?

每个域名服务器都维护一个高速缓存,存放最近用过的名字以及从何处获得名字映射信息的记录,可大大减轻根域名服务器的负荷,使因特网上的 DNS 查询请求和回答报文的数量大为减少。为保持高速缓存中的内容正确,域名服务器应为每项内容设置计时器,并处理超过合理时间的项(如每个项目只存放两天)。当权限域名服务器回答一个查询请求时,在响应中都指明绑定有效存在的时间值。增加此时间值可减少网络开销,减少此时间值可以提高域名转换的准确性。