本系列文章为笔者在校学习《计算机网络》课程所作的课程笔记,大多内容参考谢希仁编写的《计算机网络》。



从应用方面认识互联网的门槛较低,因为这不需要懂得很多的互联网原理。现在很多小学生都能够非常熟练的使用手机上的各种应用程序,这里主要讲解计算机网络的工作原理。

一、互联网概述

1.1、网络的网络

  • 计算机网络是由若干结点(node)和连接这些结点的链路(link)组成。网络中的结点可以是计算机、集线器、交换机或路由器等。

  • 网络之间还可以通过路由器互连起来,这就构成了一个覆盖范围更大的计算机网络。这样的网络称为互连网(internetworkinternet)。因此互连网是“网络的网络”(network of networks)。

    与网络相连的计算机常称为:主机 host

  • 网络把许多计算机连接在一起,而互连网则把许多网络通过路由器连接在一起。

1.2、互联网基础结构发展的三个阶段

1、第一阶段是从单个网络 ARPANET互连网发展的过程,1969年美国国防部创建了第一个分组交换网 ARPANET ,最初只是一个单一的分组交换网。1983TCP/IP 协议成为 ARPANET 上的标准协议,使得所有使用 TCP/IP 协议的计算机都可以利用互连网相互通信,因为人们就将 1983 年作为互联网诞生的时间。 1990 年 ARPANET 正式宣布关闭,因为实验任务已经完成。

  • internet 是一个通用名词,互连网;
  • Internet 是一个专用名词,互联网;

2、第二阶段是建立了三级结构的互联网,从1985 年起,美国国家科学基金会 NSF 创建国家科学基金网 NSFNET

他是一个三级计算机网络

  • 主干网
  • 地区网
  • 校园网、企业网

3、第三阶段的特点是逐渐形成了多层次 ISP 结构的互联网。后来,互联网服务提供者 ISP(Internet service provider),逐渐替代了美国政府提供网络服务。比如国内的 中国移动 等。

  • ISP 可以从互联网管理机构申请到很多 IP 地址同时拥有通信线路 以及路由器 等联网设备,因此人们可以向 ISP 缴纳费用获取 IP 地址的使用权,然后接入互联网。
  • 所谓上网就是通过某 ISP 获取 IP 地址接入互联网。

ISP 可以分为:

  • 主干ISP
  • 地区ISP
  • 本地ISP

在这些相互连接的 ISP 的共同合作下,就可以完成互联网中的所有分组转发任务

但是随着互联网上的数据流量的急剧增大,人们开始追求速度,于是互联网产生了互联网交换点IXP(Internet exchange point)。

互联网的迅猛发展始于20世纪90年代。由欧洲原子核研究组织 CERN开发的万维网WWW(World Wide Web)被广泛使用在互联网上,大大方便了广大非网络专业人员对网络的使用,成为互联网的这种指数级增长的主要驱动力。

二、互联网的组成

互联网的拓扑结构可以分为两大块:

  • 边缘部分:由所有连接在互联网上的主机组成。
  • 核心部分:由大量网络和连接这些网络的路由器组成。

2.1、互联网的边缘部分

处在互联网边缘的部分就是连接在互联网上的所有的主机。这些主机又称为端系统(end system),“端”就是“末端”的意思(即互联网的末端)。

在网络边缘的端系统之间的通信方式通常可划分为两大类:

  • 客户端-服务器方式(C/S方式)
  • 对等方式(P2P方式)

1、客户端-服务器方式

客户(client)和服务器(server)都是指通信中所涉及的两个应用进程。客户端-服务器方式 描述的是进程之间的 服务和被服务 的关系。

客户端程序:

  • 用户调用后运行,在通信时主动向远地服务器发起通信(请求服务)。因此,客户程序必须知道服务器程序的地址。
  • 不需要特殊的硬件和很复杂的操作系统。

服务器程序:

  • 是一种专门用来提供某种服务的程序,可同时处理多个远地或本地客户的请求。
  • 系统启动后即自动调用并一直不断地运行着,被动地等待并接受来自各地的客户的通信请求。因此,服务器程序不需要知道客户程序的地址。
  • 一般需要有强大的硬件和高级的操作系统支持。

2、对等连接方式

对等连接(peer-to-peer,简写为P2P)是指两台主机在通信时并不区分哪一个是服务请求方哪一个是服务提供方。

对等连接工作方式可支持大量对等用户(如上百万个)同时工作。

2.2、互联网的核心部分

在网络核心部分起特殊作用的是路由器(router),它是一种专用计算机(但不叫做主机)。路由器是实现分组交换packet switching)的关键构件,其任务是转发收到的分组,这是网络核心部分最重要的功能。

1、电路交换的主要特点

N部电话要两两相连,就需要N(N–1)/2对电线。这显然是不现实的。

所以才出现了 电路交换机

  • 从通信资源的分配角度来看,交换(switching)就是按照某种方式动态地分配传输线路的资源

  • 当 A 接到 B 的来电的时候,交换机将线路连接到 A ,这条连接保证了双方通话时所需的通信资源,而这些资源在双方通信时不会被其他用户占用;当结束时,交换机释放资源。


建立连接(占用通信资源)→通话(一直占用通信资源)→释放连接(归还通信资源)”

2、分组交换的主要特点

分组交换采用存储转发技术,将一个报文分成几组之后再进行传送。

  • 我们把要发送的整体数据称为一个报文(message)。在发送报文的时候先把较长的报文划分成为一个个更小的等长数据段,例如,每个数据段为1024bit

  • 在每一个数据段前面,加上一些由必要的控制信息组成的首部(header)后,就构成了一个分组(packet)。

  • 分组又称为“”,而分组的首部也可称为“包头”。

  • 的首部包含了诸如目的地址源地址等重要控制信息;

  • 主机是为用户进行信息处理的,并且可以和其他主机通过网络交换信息。

  • 路由器则是用来转发分组的,即进行分组交换的。

    路由器收到一个分组,先暂时存储一下,检查其首部,查找转发表,按照首部中的目的地址,找到合适的接口转发出去,把分组交给下一个路由器。

各路由器之间必须经常交换彼此掌握的路由信息,以便创建和动态维护路由器中的转发表,使得转发表能够在整个网络拓扑发生变化时及时更新。

路由器暂时存储的是一个个短分组,而不是整个的长报文。短分组是暂存在路由器的存储器(即内存)中而不是存储在磁盘中的。这就保证了较高的交换速率。


分组交换也带来一些新的问题:

  • 分组在各路由器存储转发时需要排队,这就会造成一定的时延。
  • 各分组必须携带的控制信息也造成了一定的开销。

示电路交换、报文交换和分组交换的主要区别:

  • 电路交换——整个报文的比特流连续地从源点直达终点,好像在一个管道中传送。
  • 报文交换——整个报文先传送到相邻结点,全部存储下来后查找转发表,转发到下一个结点。
  • 分组交换——单个分组(这只是整个报文的一部分)传送到相邻结点,存储下来后查找转发表,转发到下一个结点。

1994年4月20日我国用64kbit/s专线正式连入互联网。从此,我国被国际上正式承认为接入互联网的国家。

三、计算机网络的类别

3.1、按照网络的作用范围进行分类

1、广域网WAN(Wide Area Network)

广域网的作用范围通常为几十到几千公里,广域网是互联网的核心部分,其任务是通过长距离(例如,跨越不同的国家)运送主机所发送的数据。

2、城域网MAN(Metropolitan Area Network)

城域网的作用范围一般是一个城市,可跨越几个街区甚至整个城市,其作用距离约为5~50km。城域网可以为一个或几个单位所拥有,但也可以是一种公用设施,用来将多个局域网进行互连。目前很多城域网采用的是以太网技术,因此有时也常并入局域网的范围进行讨论。

3、局域网LAN(Local Area Network)

局域网一般用微型计算机或工作站通过高速通信线路相连(速率通常在10Mbit/s以上),但地理上则局限在较小的范围(如1km左右)。

4、个人区域网PAN(Personal Area Network)

个人区域网就是在个人工作的地方把属于个人使用的电子设备(如便携式电脑等)用无线技术连接起来的网络,因此也常称为无线个人区域网WPAN(Wireless PAN),其范围很小,大约在10m左右。

3.2、按照网络的使用者进行分类

公用网(public network)

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

专用网(private network)

这是某个部门为满足本单位的特殊业务工作的需要而建造的网络。这种网络不向本单位以外的人提供服务。例如,军队、铁路、银行、电力等系统均有本系统的专用网。

3.3、用来把用户接入到互联网的网络

这种网络就是接入网AN(Access Network),它又称为本地接入网或居民接入网由于从用户家中接入到互联网可以使用的技术有许多种,因此就出现了可以使用多种接入网技术连接到互联网的情况。

接入网本身既不属于互联网的核心部分,也不属于互联网的边缘部分。

接入网是从某个用户端系统到互联网中的第一个路由器(也称为边缘路由器)之间的一种网络。

  • 从覆盖的范围看,很多接入网还属于局域网。

  • 从作用上看,接入网只是起到让用户能够与互联网连接的“桥梁”作用。

四、计算机网络的性能

4.1、计算机网络的性能指标

1、速率

比特(bit)来源于binary digit,意思是一个“二进制数字”。

网络技术中的速率指的是数据的传送速率,它也称为数据率(data rate)或比特率(bit rate)。速率是计算机网络中最重要的一个性能指标。

速率的单位是bit/s(比特每秒)(或b/s,有时也写为 bps,即bit per second)。

  • k(kilo)=103=千
  • M(Mega)=106=兆
  • G(Giga)=109=吉
  • T(Tera)=1012=太
  • P(Peta)=1015=拍
  • E(Exa)=1018=艾
  • Z(Zetta)=1021=泽
  • Y(Yotta)=1024=尧

当提到网络的速率时,往往指的是额定速率或标称速率,而并非网络实际上运行的速率。

2、带宽

“带宽”(bandwidth)有以下两种不同的意义:

  • 带宽本来是指某个信号具有的频带宽度。即频带范围。在传统的通信线路上传送的电话信号的标准带宽是3.1kHz(从300Hz到3.4kHz,即话音的主要成分的频率范围)。表示某信道允许通过的信号频带范围就称为该信道的带宽(或通频带)。
  • 在计算机网络中,带宽用来表示网络中某通道传送数据的能力,因此网络带宽表示在单位时间内网络中的某信道所能通过的“最高数据率”。

3、吞吐量

吞吐量(throughput)表示在单位时间内通过某个网络(或信道、接口)的实际的数据量。吞吐量更经常地用于对现实世界中的网络的一种测量,以便知道实际上到底有多少数据量能够通过网络。

4、时延

时延(delay或latency)是指数据(一个报文或分组,甚至比特)从网络(或链路)的一端传送到另一端所需的时间。

网络中的时延是由以下几个不同的部分组成的:

1、发送时延

发送时延(transmission delay)是主机或路由器发送数据帧所需要的时间,也就是从发送数据帧的第一个比特算起,到该帧的最后一个比特发送完毕所需的时间。

2、传播时延

传播时延(propagation delay)是电磁波在信道中传播一定的距离需要花费的时间。

电磁波在自由空间的传播速率是光速,即 3.0×105km/s 。电磁波在网络传输媒体中的传播速率比在自由空间要略低一些:在铜线电缆中的传播速率约为 2.3×105km/s ,在光纤中的传播速率约为 2.0×105km/s 。

例如,1000km 长的光纤线路产生的传播时延大约为 5ms 。

  • 发送时延发生在机器内部的发送器中,与传输信道的长度(或信号传送的距离)没有任何关系。

  • 传播时延则发生在机器外部的传输信道媒体上,而与信号的发送速率无关。信号传送的距离越远,传播时延就越大。

3、处理时延

主机或路由器在收到分组时要花费一定的时间进行处理,例如分析分组的首部、从分组中提取数据部分、进行差错检验查找适当的路由等,这就产生了处理时延。

4、排队时延

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

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

这样,数据在网络中经历的总时延就是以上四种时延之和:

几种时延产生地方的不同:

5、时延带宽积

把以上讨论的网络性能的两个度量——传播时延带宽——相乘,就得到另一个很有用的度量:传播时延带宽积

管道的长度是链路的传播时延(请注意,现在以时间作为单位来表示链路长度),而管道的截面积是链路的带宽。因此时延带宽积就表示这个管道的体积,表示这样的链路可容纳多少个比特

若发送端连续发送数据,则在发送的第一个比特即将达到终点时,发送端就已经发送了20万个比特,而这20万个比特都正在链路上向前移动。

因此,链路的时延带宽积又称为以比特为单位链路长度

对于一条正在传送数据的链路,只有在代表链路的管道都充满比特时,链路才得到充分的利用。

6、往返时间RTT

RTT(Round-Trip Time)在许多情况下,互联网上的信息不仅仅单方向传输而是双向交互的。

我们需要知道双向交互一次所需要的时间。

在互联网中,往返时间还包括各中间结点的处理时延、排队时延以及转发数据时的发送时延。当使用卫星通信时,往返时间RTT相对较长,是很重要的一个性能指标。

7、利用率

利用率有信道利用率和网络利用率两种。

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

当某信道的利用率增大时,该信道引起的时延也就迅速增加。

在网络通信量不断增大的情况下,由于分组在网络结点(路由器或结点交换机)进行处理时需要排队等候,因此网络引起的时延就会增大。

网络当前的时延=网络空闲时的时延/(1-网络的利用率)

  • 当网络的利用率达到其容量的1/2时,时延就要加倍。

  • 特别值得注意的就是:当网络的利用率接近最大值1时,网络的时延就趋于无穷大

  • 信道或网络的利用率过高会产生非常大的时延。

因此一些拥有较大主干网的ISP通常控制信道利用率不超过50%。如果超过了就要准备扩容,增大线路的带宽。

4.2、计算机网络的非性能指标

  • 1、费用
  • 2、质量
  • 3、标准化
  • 4、可靠性
  • 5、可扩展性和可升级性
  • 6、易于管理和维护

五、计算机网络体系结构

在计算机网络的基本概念中,分层次的体系结构是最基本的。

5.1、计算机网络体系结构的形成

设想一种最简单的情况:连接在网络上的两台计算机要互相传送文件。

(1)发起通信的计算机必须将数据通信的通路进行激活(activate)。所谓“激活”就是要发出一些信令,保证要传送的计算机数据能在这条通路上正确发送和接收。

(2)要告诉网络如何识别接收数据的计算机。

(3)发起通信的计算机必须查明对方计算机是否已开机,并且与网络连接正常。

(4)发起通信的计算机中的应用程序必须弄清楚,在对方计算机中的文件管理程序是否已做好接收文件和存储文件的准备工作

(5)若计算机的文件格式不兼容,则至少其中一台计算机应完成格式转换功能。

(6)对出现的各种差错和意外事故,如数据传送错误、重复或丢失,网络中某个结点交换机出现故障等,应当有可靠的措施保证对方计算机最终能够收到正确的文件。


相互通信的两个计算机系统必须高度协调工作才行,而这种“协调”是相当复杂的。为了设计这样复杂的计算机网络,早在最初的ARPANET设计时即提出了分层的方法。“

国际标准化组织ISO于1977年提出了一个试图使各种计算机在世界范围内互连成网的标准框架,即著名的开放系统互连基本参考模型OSI/RM(Open Systems Interconnection Reference Model),简称为OSI

到了20世纪90年代初期,虽然整套的OSI国际标准都已经制定出来了,但由于基于TCP/IP的互联网已抢先在全球相当大的范围成功地运行了,而与此同时却几乎找不到有什么厂家生产出符合OSI标准的商用产品。

因此人们得出这样的结论:OSI只获得了一些理论研究的成果,但在市场化方面则事与愿违地失败了。现今规模最大的、覆盖全球的、基于TCP/IP的互联网并未使用OSI标准。

能够占领市场的就是标准。

在过去制定标准的组织中往往以专家、学者为主。但现在许多公司都纷纷加入各种标准化组织,使得技术标准具有浓厚的商业气息。一个新标准的出现,有时不一定反映其技术水平是最先进的,而是往往有着一定的市场背景

国际电报电话咨询委员会CCITT

5.2、协议与划分层次

为进行网络中的数据交换而建立的规则、标准或约定称为网络协议(network protocol)。

如图,下面的一层为上面的一层提供基础。

计算机网络的各层及其协议的集合就是网络的体系结构architecture)。

5.3、具有五层协议的体系结构

  • OSI的七层协议体系结构:概念清楚,理论也较完整,但它既复杂又不实用。
  • TCP/IP是一个四层的体系结构:它包含应用层运输层网际层网络接口层不过从实质上讲,TCP/IP只有最上面的三层,因为最下面的网络接口层并没有什么具体内容。

因此在学习计算机网络的原理时往往采取折中的办法,即综合OSITCP/IP的优点,采用一种只有五层协议的体系结构:

有时为了方便,也可把最底下两层称为网络接口层。

下面自上而下地、非常简要地介绍一下各层的主要功能。

1、应用层(application layer)

  • 应用层的任务是通过应用进程间的交互来完成特定网络应用。
  • 应用层协议定义的是应用进程间通信和交互的规则。这里的进程就是指主机中正在运行的程序。
  • 对于不同的网络应用需要有不同的应用层协议。在互联网中的应用层协议很多,如域名系统DNS,支持万维网应用的HTTP协议,支持电子邮件的SMTP协议,等等。
  • 我们把应用层交互的数据单元称为报文(message)。

2、运输层(transport layer)

  • 运输层的任务就是负责向两台主机中进程之间的通信提供通用的数据传输服务。
  • 应用进程利用该服务传送应用层报文。
  • 由于一台主机可同时运行多个进程,因此运输层有复用和分用的功能。

运输层主要使用以下两种协议:

  • 传输控制协议TCP(Transmission Control Protocol)——提供面向连接的、可靠的数据传输服务,其数据传输的单位是报文段(segment)。
  • 用户数据报协议UDP(User Datagram Protocol)——提供无连接的、尽最大努力(best-effort)的数据传输服务(不保证数据传输的可靠性),其数据传输的单位是用户数据报

3、网络层(network layer)

网络层负责为分组交换网上的不同主机提供通信服务。在发送数据时,网络层把运输层产生的报文段用户数据报封装成分组进行传送。

在TCP/IP体系中,由于网络层使用IP协议,因此分组也叫做IP数据报,或简称为数据报

网络层的另一个任务就是要选择合适的路由,使源主机运输层所传下来的分组,能够通过网络中的路由器找到目的主机。

互联网是由大量的异构(heterogeneous)网络通过路由器(router)相互连接起来的。互联网使用的网络层协议是无连接的网际协议IP(Internet Protocol)和许多种路由选择协议,因此互联网的网络层也叫做网际层或IP层。

4、数据链路层(data link layer)

数据链路层常简称为链路层。

数据链路层将网络层交下来的IP数据报组装成帧(framing),在两个相邻结点间的链路上传送(frame)。每一帧包括数据和必要的控制信息(如同步信息、地址信息、差错控制等)。

在接收数据时,控制信息使接收端能够知道一个帧从哪个比特开始和到哪个比特结束。这样,数据链路层在收到一个帧后,就可从中提取出数据部分,上交给网络层。

5、物理层(physical layer)

在物理层上所传数据的单位是比特。发送方发送1(或0)时,接收方应当收到1(或0)而不是0(或1)。因此物理层要考虑用多大的电压代表“1”或“0”,以及接收方如何识别出发送方所发送的比特。物理层还要确定连接电缆的插头应当有多少根引脚以及各引脚应如何连接。

传递信息所利用的一些物理媒体,如双绞线、同轴电缆、光缆、无线信道等,并不在物理层协议之内而是在物理层协议的下面。


在互联网所使用的各种协议中,最重要的和最著名的就是TCP和IP两个协议。现在人们经常提到的TCP/IP并不一定是单指TCP和IP这两个具体的协议,而往往是表示互联网所使用的整个TCP/IP协议族(protocol suite)。


假定主机1的应用进程AP1向主机2的应用进程AP2传送数据。

  • AP1先将其数据交给本主机的第5层(应用层)。

  • 第5层加上必要的控制信息H5就变成了下一层的数据单元。

  • 第4层(运输层)收到这个数据单元后,加上本层的控制信息H4,再交给第3层(网络层),成为第3层的数据单元。依此类推。

  • 不过到了第2层(数据链路层)后,控制信息被分成两部分,分别加到本层数据单元的首部(H2)和尾部(T2);而第1层(物理层)由于是比特流的传送,所以不再加上控制信息。

  • 请注意,传送比特流时应从首部开始传送。

当这一串的比特流离开主机1经网络的物理媒体传送到路由器时,就从路由器的第1层依次上升到第3层。

  • 每一层都根据控制信息进行必要的操作,然后将控制信息剥去,将该层剩下的数据单元上交给更高的一层。
  • 当分组上升到了第3层时,就根据首部中的目的地址查找路由器中的转发表,找出转发分组的接口,然后往下传送到第2层,加上新的首部和尾部后,再到最下面的第1层,然后在物理媒体上把每一个比特发送出去。

当这一串的比特流离开路由器到达目的站主机2时,就从主机2的第1层按照上面讲过的方式,依次上升到第5层。最后,把应用进程 AP1 发送的数据交给目的站的应用进程 AP2 。

任何两个同样的层次(例如在两个系统的第4层)之间,也好像如同图中的水平虚线所示的那样,把数据(即数据单元加上控制信息)通过水平虚线直接传递给对方。这就是所谓的“对等层”(peer layers)之间的通信。我们以前经常提到的各层协议,实际上就是在各个对等层之间传递数据时的各项规定。

5.4、实体、协议、服务和服务访问点

使用实体(entity)表示任何可发送或接收信息的硬件或软件进程。在许多情况下,实体就是一个特定的软件模块。

协议是控制两个对等实体(或多个实体)进行通信的规则的集合。

  • 在协议的控制下,两个对等实体间的通信使得本层能够向上一层提供服务。
  • 要实现本层协议,还需要使用下面一层所提供的服务。

协议是“水平的”,即协议是控制对等实体之间通信的规则。但服务是“垂直的”,即服务是由下层向上层通过层间接口提供的。

在同一系统中相邻两层的实体进行交互(即交换信息)的地方,通常称为服务访问点SAP(Service Access Point)。


第n层的两个“实体(n)”之间通过“协议(n)”进行通信,而第n+1层的两个“实体(n+1)”之间则通过另外的“协议(n+1)”进行通信(每一层都使用不同的协议)。

  • 第n层向上面的第n+1层所提供的服务实际上已包括了在它以下各层所提供的服务。
  • 第n层的实体对第n+1层的实体就相当于一个服务提供者。
  • 在服务提供者的上一层的实体又称为“服务用户”,因为它使用下层服务提供者所提供的服务。

计算机网络的协议还有一个很重要的特点,就是协议必须把所有不利的条件事先都估计到,而不能假定一切都是正常的和非常理想的。

5.5、TCP/IP的体系结构

TCP/IP四层协议的表示方法举例:

沙漏计时器形状的TCP/IP协议族示意:

它的特点是上下两头大而中间小:应用层和网络接口层都有多种协议,而中间的 IP 层很小,上层的各种协议都向下汇聚到一个 IP 协议中。

这种很像沙漏计时器形状的 TCP/IP 协议族表明:TCP/IP协议可以为各式各样的应用提供服务(所谓的everything over IP),同时 TCP/IP 协议也允许IP协议在各式各样的网络构成的互联网上运行(所谓的IP over everything)。

正因为如此,互联网才会发展到今天的这种全球规模。


在应用层的客户进程和服务器进程的交互:

主机C的两个服务器进程分别向A和B的客户进程提供服务:

完。