概念引入
1. 网络与互联网
21 世纪的一些重要特征就是数字化、网络化和信息化,它是一个以网络为核心的信息时代。有三大类大家很熟悉的网络,即电信网络、有线电视网络和计算机网络。
计算机网络分层次的体系结构,包含协议和服务的概念。这部分内容比较抽象,在没有了解具体的计算机网络之前,很难完全掌握这些很抽象的概念。
自从 20 世纪 90 年代以后,以 Internet(因特网/互联网)为代表的计算机网络得到了飞速的发展,成为全球最大和最重要的计算机网络。
对于仅在局部范围互连起来的计算机网络,只能称为之互连网,而不是互联网。
互联网有两个重要的基本特点:连通性和共享:
- 连通性不必多言;
- 所谓共享指资源共享,由于网络的存在,互联网上的许多服务器中存储的大量有价值的电子文档(含音频和视频)可供用户很方便地读取或下载,就像在用户身边一样地便于使用。
“名字指出我们所要寻找的那个资源,地址指出那个资源在何处,路由告诉我们如何到达该处。”
2. 互联网的定义
定义
计算机网络(简称为网络)由若干结点和连续这些结点的链路组成,网络中的结点可以是计算机、集线器、交换机、路由器等。
互连网 vs 互联网:
- 网络之间还可以通过路由器互连起来,这就构成了一个覆盖范围更大的计算机网络,这样的网络称为互连网 (internetwork 或 internet)。故而,互连网是“网络的网络”。
- 以大写字母 I 开始的 Internet 是一个专用名词,指当前全球最大的、开放的、由众多网络相互连续而成的特定互连网,它采用 TCP/IP 协议族作为通信的规则,且其前身为美国的 ARPANET,这个网络才是我们通常称谓的互联网或因特网。
在很多图示中,我们可以用一朵云表示一个网络:
当我们使用一朵云来表示网络时,有时为了表示方便,可以把有关的计算机画在云的外面。
简言之,网络把许多计算机连续在一起,而互连网则把许多网络通过路由器连续在一起。习惯上,与网络相连的计算机常称为主机 (host)。
注意,当我们谈到网络互连时,就隐含地表示在这些计算机上已经安装了适当的软件,因为唯此物理上已经连接的计算机之间才能够通过网络交换信息。
ISP
ISP(Internet Service Provider) 指互联网服务提供者,也常译作互联网服务提供商。例如,中国电信、中国联通、中国移动是我国最有名的 ISP。
ISP 可以从互联网管理机构申请到很多 IP 地址,同时拥有通信线路(大 ISP 自己建行通信线路,小 ISP 则向电信公司租用通信线路)以及路由器等连网设备。现在的互联网已不是某个单个组织所拥有,而是全世界无数大大小小的 ISP 所共同拥有的,这就是互联网也称为“网络的网络”的原因。
所谓上网就是指(通过某 ISP 获得的 IP 地址)接入到互联网。
万维网
由欧洲原子核研究组织 CERN 开发的 万维网 WWW(World Wide Web) 被广泛使用在互联网上,大大方便了广大非网络专业人员对网络的使用,成为互联网的这种指数级增长的主要驱动力。
3. 互联网的组成
从工作方式上看,互联网可以划分为两大块:
边缘部分:由所有连接在互联网上的主机组成。这部分是用户直接使用的,用来进行通信(传送数据、音频或视频)和资源共享。
- 边缘部分上的主机又称为端系统 (end system),端就是末端的意思(即互联网末端)。
- 端系统可以为普通个人电脑、智能手机、超大型计算机等,甚至是一个很小的网络摄像头。
核心部分:由大量子网络和连接这些网络的路由器组成。这部分是为边缘部分提供服务的(提供连通性和交换)。
- 在网络核心部分起特殊作用的是路由器 (router) ,它是一种专用计算机(但不叫主机)。
- 路由器是实现分组交换的关键构件,其任务是转发收到的分组,这是网络核心部分最重要的功能。
- 路由器之间一般都用高速链路相连接,而在网络边缘的主机接入到核心部分则通常以相对较低速率的链路相连接。
4. 计算机通信
计算机之间的通信——“主机 A 和主机 B 进行通信”,实际上是指,“主机 A 的某个进程 (即运行着的程序)和主机 B 上的另一个进程进行通信”。
端系统之间的通信方式通常可划分为两大类:客户-服务器方式(C/S 方式)和对等方式(P2P 方式)
C/S 方式:客户 (client) 和服务器 (server) 都是指通信中所涉及的两个应用进程,C/S 方式描述了一种进程之间服务和被服务的关系。客户是服务请求方,服务器是服务提供方。
注意,在术语称谓上,使用计算机的人是计算机的用户 (user) 而不是客户 (client)。
P2P 方式:指两台主机在通信时不区分哪一个是服务请求方哪一个是服务提供方,进行对等通信。这时,双方都可以下载对方已经存储在硬盘中的共享文档。P2P 也可以看成一种特殊的 C/S 方式,只是对待连接中的每一台主机既是客户又同时是服务器。
5. 网络分类
按作用范围
- 局域网 LAN(Local Area Network):在局部区域范围内将计算机等通信设备通过高速通信线路互连起来的网络系统,如校园网、企业网。
- 广域网 WAN(Wide Area Network):覆盖的地理范围较大,几十到几千公里等,一般是将不同城市或不同国家之间的局域网互联起来。
- 城域网 MAN(Metropolitan Area Network):覆盖范围在局域网和广域网之间,一般来说,是将一个城市范围内的计算机互联。
按使用者
- 公用网 (public network):指电信公司(国有或私有)出资建造的大型网络,公用的意思是所有愿意按电信公司的规定交纳费用的人都可以使用这种网络,因而也称为公众网。
- 专用网 (private network):指某个部门为满足本单位的特殊业务工作的需要而建造的网络,这种网络不向本单位以外的人提供服务。如军队、铁路、银行、电力等系统的专用网。
按交换方式
从通信资源的分配角度来看,交换就是按照某种方式动态地分配传输线路的资源。
电路交换:必须经过“建立连接(占用通信资源)-> 通话(一直占用通信资源)->释放连接(归还通信资源)”三个步骤的交换方式。电路交换的一个重要特点就是在通信的全部时间内,通话的两个用户始终占用端到端的通信资源。
报文交换:通常我们把要发送的整块数据称为一个报文 (message) 。
分组交换:在发送报文之前,先把较长的报文划分为一个个更小的等长数据段,例如,每个数据段为 1024bit,在每一个数据段前面,加上一些必要的控制信息组成的首部 (header) 后,就构成了一个分组 (packet)。分组中的首部包含了诸如目的地址和源地址等重要控制信息。
三种交换方式在数据传送阶段的主要特点:
6. 网络的性能指标
计算机网络的性能指标。
速率:数据的传送速率,也称为数据率或比特率,其单位为 bit/s(或 b/s, bps)。现在人们在谈到网络速率时,常省略了速率单位中应有的 bit/s,而使用不太正确的说法,如“40G 的速率”。另外,当提到网络的速率时,往往指的是额定速率,而并非网络实际上运行的速率。
关系式 | 单位名称 |
---|---|
$k(kilo)=10^3$ | 千 |
$M(Mega)=10^6$ | 兆 |
$G(Giga)=10^9$ | 吉 |
$T(Tera)=10^{12}$ | 太 |
$P(Peta)=10^{15}$ | 拍 |
$E(Exa)=10^{18}$ | 艾 |
$Z(Zetta)=10^{21}$ | 泽 |
$Y(Yotta)=10^{24}$ | 尧 |
带宽 (bandwidth) :在计算机网络中,带宽用来表示网络中某通道传送数据的能力,因此网络带宽表示在单位时间内网络中的某信道所能通过的“最高数据率”。其单位是数据率的单位 bit/s。
吞吐量 (throughput) :在单位时间内通过某个网络(或信道、接口)的实际的数据量。显然,吞吐量受网络的带宽或网络的额定速率的限制,其单位为 bit/s。有时吞吐量还可用每秒传送的字节数或帧数来表示。
时延 (delay 或 latency) :数据(一个报文或分组,甚至比特)从网络(或链路)的一端传送到另一端所需的时间),有时也称为延迟或迟延。
注:通常所说的“光纤信道的传输速率高”是指可以用很高的速率向光纤信道发送数据,而光纤信道的传播速率($2.0\times10^5 km/s$)实际上还要比铜线的传播速率($2.3\times10^5 km/s$)略低一点。
$$ 总时延=发送时延+传播时延+处理时延+排队时延 $$
发送时延:主机或路由器发送数据帧所需要的时间,也就是从发送数据帧的第一个比特算起,到该帧的最后一个比特发送完毕所需要的时间。 $$ 发送时延=\frac{数据帧长度 (bit)}{发送速率 (bit/s)} $$
传播时延:电磁波在信道中传播一定的距离需要花费的时间。 $$ 传播时延=\frac{信道长度 (m)}{电磁波在信道上的传播速率 (m/s)} $$
处理时延:主机或路由器收到分组时要花费一定的时间进行处理,就产生了处理时延。
排队时延:分组在经过网络传输时,需经过许多路由器,但分组在进入路由器后要先在输入队列中排队等待处理。在路由器确定了转发接口后,还要在输出队列中排队等待转发。这就产生了排列时延。排队时延的长短往往取决于网络当时的通信量。
时延带宽积表示如下这个管道的体积,表示这样的链路可容纳多少个比特: $$ 时延带宽积=传播时延×带宽 $$
往返时间 RTT(Round-Trip Time) 。
利用率:可分为信道利用率和网络利用率。
信道利用率并非越高越好,因为根据排队论,当某信道的利用率增大时,该信道引起的时延也就迅速增加,这和高速公路的情况有些相似。网络也有类似情况,当网络的利用率达到其容量的 1/2 时,时延就要加倍;当网络的利用率接近最大值 1 时,网络的时延就趋于无穷大。因此一些拥有较大主干网的 ISP 通常控制信道利用率不超过 50%,如果超过了就要准备扩容,增加线路的带宽。
- 信道利用率:指出某信道有百分之几的时间是被利用的(有数据通过)。完全空闲的信道的利用率是零。
- 网络利用率:全网络的信道利用率的加权平均值。
7. 网络的体系结构
7.1 计算机网络通信的条件与标准
两台计算机要进行网络通信是很复杂的任务,除了在这两台计算机之间必须有一条传送数据的通路外,还有以下几项工作必须完成:
- 发起通信的计算机必须将数据通信的通路进行激活。所谓激活就是要发出一些信令,保证要传送的计算机数据能在这条通路上正确发送和接收。
- 要告诉网络如何识别接收数据的计算机。
- 发起通信的计算机必须查明对方计算机是否已开机,并且与网络连接正常。
- 发起通信的计算机中的应用程序必须清楚对方计算机中的文件管理程序是否已做好接收文件和存储文件的准备工作。
- 若计算机的文件格式不兼容,则至少其中一台计算机应完成格式转换功能。
- 对出现的各种差错和意外事故,如数据传送错误、重复或丢失,网络中某个结点交换机出现故障等,应当有可靠的措施保证对方计算机最终能够收到正确的文件。
开放系统互连基本参考模型 OSI/RM(Open Systems Interconnection Reference Model),简称 OSI,为法律上的国际标准,而 TCP/IP 是事实上的国际标准。
“然而到了 20 世纪 90 年代初期,虽然整套的 OSI 国际标准都已经制定出来了,但由于基于 TCP/IP 的互联网已抢先在全球相当大的范围成功地运行了,而与此同时却几乎找不到有什么厂家生产出符合 OSI 标准的商用产品。”
7.2 网络协议与分层
在计算机网络中要做到有条不紊地交换数据,就必须遵守一些事先约定好的规则,这些为进行网络中的数据交换而建立的规则、标准或约定称为网络协议 (network protocol),简称为协议。当然,如果我们只在自己的个人电脑上进行文件存盘等操作时,就不需要任何网络协议。
ARPANET 的研制经验表明,对于非常复杂的计算机网络协议,其结构应该是层次式的。
分层的优缺点:
- 优点
- 各层之间是独立的
- 灵活性好
- 结构上可分割开
- 易于实现和维护
- 能促进标准化工作
- 缺点
- 有些功能会在不同的层次中重复出现,产生额外开销
计算机网络的各层及其协议的集合就是网络的体系结构 (architecture) ,换言之,计算机网络的体系结构就是这个计算机网络及其构件所应完成的功能的精确定义。而这些功能究竟是用何种硬件或软件完成的,则是一个遵循这种体系结构的实现 (implementation) 的问题。总之,体系结构是抽象的,而实现是具体的,是真正在运行的计算机硬件和软件。
7.3 TCP/IP 分层体系
OSI 为七层协议体系结构,TCP/IP 为一个四层体系结构,因此在学习计算机网络的原理时往往采取折中的办法,即综合 OSI 和 TCP/IP 的优点,采用一种只有五层协议的体系结构,这样既简洁又能将概念阐述清楚(有时为了方便,可把最下两层称为网络接口层)。当然,应该说明的是,五层协议的体系结构只是为介绍网络原理而设计的,实际应用还是 TCP/IP 的四层体系结构。
物理层:在物理层上传输的数据的单位是比特。物理层需要考虑用多大的电压代表 1 或 0,以及接收方如何识别出发送方所发送的比特,还要确定连接电缆的插头应当有多少根引脚以及各引脚应如何连接等。
要注意的是,解释比特代表的意思,就不是物理层的任务;同时,传输信息所利用的物理媒体,如双绞线、光缆、无线信道等,并不在物理层协议之内,而是在物理层协议的下面,因此也有人把物理层下面的物理媒介当作第 0 层。
数据链路层:常简称为链路层。在两个相邻结点之间传送数据时,数据链路层将网络层交下来的 IP 数据报组装成帧,故其传送单位为帧 (frame) 。每一帧包括数据和必要的控制信息(如同步信息、地址信息、差错控制等)。
网络层:负责为分组交换网上的不同主机提供通信服务。在发送数据时,网络层把运输层产生的报文段或用户数据报封装成分组进行传送。
在 TCP/IP 体系中,由于网络层使用 IP 协议,因此分组也叫做 IP 数据报,或简称为数据报。
本书将“分组”和“数据报”作为同义词使用。
注意:无论在哪一层传送的数据单元,笼统而言都可用“分组”表示。
网络层的另一个任务就是要选择合适的路由,使得主机运输层所传下来的分组,能够通过网络中的路由器找到目的主机。
运输层:负责向两台主机中进程之间的通信提供通用的数据传输服务。运输层主要使用两种协议:
- TCP:传输控制协议(Transmission Control Protocol),其数据传输的单位是报文段 (segment);
- UDP:用户数据报协议(User Datagram Protocol),其数据传输的单位是用户数据报。
应用层:负责通过应用进程间的交互来完成特定网络应用。应用层协议定义的是应用进程间通信和交互的规则。对于不同的网络应用需要有不同的应用层协议,如域名系统 DNS、支持万维网应用的 HTTP 协议、支持电子邮件的 SMTP 协议等。应用层交互的数据单元称为报文。
虽然应用进程数据要经过图 1-19 所示的复杂过程才能送到终点的应用进程,但这些复杂过程对用户而言,却都被屏蔽掉了,以致应用进程$AP_1$好像是直接把数据交给了应用进程$AP_2$。同理,任何两个同样的层次之间,也好像如同图中的水平虚线所示那样,把数据(数据单元加上控制信息)通过水平虚线直接传递给了对方,这就是所谓的对等层(peep layers) 之间的通信,我们之前提到的各层协议,实际上就是在各个对等层之间传递数据时的各项规定。
在互联网所使用的各种协议中,最重要和最著名的就是 TCP 和 IP 两个协议。而现在,人们经常提到的 TCP/IP 并不一定是单指 TCP 和 IP 这两个具体的协议,而往往是表示互联网所使用的整个 TCP/IP 协议族 (protocol suite)。
TCP/IP 的体系结构如下左图;实际上现在的互联网使用的 TCP/IP 体系结构有时已经演变为如下中图;而还有一种很像沙漏计时器开关的 TCP/IP 协议族,如下右图:
7.4 协议设计需要考虑的问题
看似简单的协议,设计起来要考虑的问题还是挺多的: