本系列文章为笔者在校学习《计算机网络》课程所作的课程笔记,大多内容参考谢希仁
编写的《计算机网络》。
计算机网络是由若干结点(node
)和连接这些结点的链路(link
)组成。网络中的结点可以是计算机、集线器、交换机或路由器等。
网络之间还可以通过路由器互连起来,这就构成了一个覆盖范围更大的计算机网络。这样的网络称为互连网(internetwork
或internet
)。因此互连网是“网络的网络”(network of networks
)。
与网络相连的计算机常称为:主机 host
。
网络把许多计算机连接在一起,而互连网则把许多网络通过路由器连接在一起。
1、第一阶段是从单个网络 ARPANET 向互连网
发展的过程,1969
年美国国防部创建了第一个分组交换网 ARPANET ,最初只是一个单一的分组交换网。1983
年TCP/IP
协议成为 ARPANET 上的标准协议,使得所有使用 TCP/IP
协议的计算机都可以利用互连网相互通信,因为人们就将 1983
年作为互联网诞生的时间。 1990 年 ARPANET 正式宣布关闭,因为实验任务已经完成。
internet
是一个通用名词,互连网;Internet
是一个专用名词,互联网;2、第二阶段是建立了三级结构的互联网,从1985 年起,美国国家科学基金会 NSF 创建国家科学基金网 NSFNET 。
他是一个三级计算机网络
:
3、第三阶段的特点是逐渐形成了多层次 ISP
结构的互联网。后来,互联网服务提供者 ISP
(Internet service provider),逐渐替代了美国政府提供网络服务。比如国内的 中国移动
等。
ISP
可以从互联网管理机构申请到很多 IP
地址同时拥有通信线路
以及路由器
等联网设备,因此人们可以向 ISP 缴纳费用获取 IP 地址的使用权,然后接入互联网。ISP 可以分为:
在这些相互连接的 ISP
的共同合作下,就可以完成互联网中的所有分组转发任务
。
但是随着互联网上的数据流量的急剧增大,人们开始追求速度,于是互联网产生了互联网交换点IXP
(Internet exchange point)。
互联网交换点的作用就是允许两个网络直接连接并交换分组,并不需要通过第三个网络来转发分组。
点击这里查看目前全球 ISP 分布
互联网的迅猛发展始于20世纪90年代
。由欧洲原子核研究组织 CERN
开发的万维网WWW
(World Wide Web)被广泛使用在互联网上,大大方便了广大非网络专业人员对网络的使用,成为互联网的这种指数级增长的主要驱动力。
互联网的拓扑结构可以分为两大块:
边缘部分
:由所有连接在互联网上的主机组成。核心部分
:由大量网络和连接这些网络的路由器组成。处在互联网边缘的部分就是连接在互联网上的所有的主机。这些主机又称为端系统
(end system),“端”就是“末端”的意思(即互联网的末端)。
在网络边缘的端系统之间的通信方式
通常可划分为两大类:
C/S
方式)P2P
方式)客户(client
)和服务器(server
)都是指通信中所涉及的两个应用进程。客户端-服务器方式 描述的是进程之间的 服务和被服务
的关系。
客户端程序:
被
用户调用后运行,在通信时主动向远地服务器发起通信(请求服务
)。因此,客户程序必须知道服务器程序的地址。服务器程序:
自动调用
并一直不断地运行着,被动地等待并接受来自各地的客户的通信请求。因此,服务器程序不需要知道客户程序的地址。对等连接(peer-to-peer,简写为P2P
)是指两台主机在通信时并不区分
哪一个是服务请求方哪一个是服务提供方。
对等连接工作方式可支持大量对等用户(如上百万个)同时工作。
在网络核心部分起特殊作用的是路由器(router
),它是一种专用计算机(但不叫做主机)。路由器是实现分组交换(packet switching
)的关键构件,其任务是转发收到的分组,这是网络核心部分最重要的功能。
N部电话要两两相连,就需要N(N–1)/2
对电线。这显然是不现实的。
所以才出现了 电路交换机 。
从通信资源的分配角度来看,交换(switching
)就是按照某种方式动态地分配传输线路的资源。
当 A 接到 B 的来电的时候,交换机将线路连接到 A ,这条连接保证了双方通话时所需的通信资源,而这些资源在双方通信时不会被其他用户占用;当结束时,交换机释放资源。
“建立连接(占用通信资源)→通话(一直占用通信资源)→释放连接(归还通信资源)”
分组交换采用存储转发技术
,将一个报文分成几组
之后再进行传送。
我们把要发送的整体数据称为一个报文(message
)。在发送报文的时候先把较长的报文划分成为一个个更小的等长数据段,例如,每个数据段为1024bit
。
在每一个数据段前面,加上一些由必要的控制信息组成的首部(header
)后,就构成了一个分组(packet
)。
分组又称为“包
”,而分组的首部也可称为“包头”。
主机是为用户进行信息处理
的,并且可以和其他主机通过网络交换信息。
路由器则是用来转发分组
的,即进行分组交换的。
路由器收到一个分组,先暂时存储
一下,检查其首部,查找转发表
,按照首部中的目的地址,找到合适的接口转发出去,把分组交给下一个路由器。
各路由器之间必须经常交换彼此掌握的路由信息,以便创建和动态维护路由器中的转发表,使得转发表能够在整个网络拓扑发生变化时及时更新。
路由器暂时存储的是一个个短分组
,而不是整个的长报文。短分组是暂存在路由器的存储器(即内存)中而不是存储在磁盘中的。这就保证了较高的交换速率。
分组交换也带来一些新的问题:
排队
,这就会造成一定的时延。控制信息
也造成了一定的开销。示电路交换、报文交换和分组交换的主要区别:
1994年4月20日
我国用64kbit/s专线正式连入互联网。从此,我国被国际上正式承认为接入互联网的国家。
广域网的作用范围通常为几十到几千公里,广域网是互联网的核心部分,其任务是通过长距离(例如,跨越不同的国家)运送主机所发送的数据。
城域网的作用范围一般是一个城市,可跨越几个街区甚至整个城市,其作用距离约为5~50km。城域网可以为一个或几个单位所拥有,但也可以是一种公用设施,用来将多个局域网进行互连。目前很多城域网采用的是以太网
技术,因此有时也常并入局域网的范围进行讨论。
局域网一般用微型计算机或工作站通过高速通信线路相连(速率通常在10Mbit/s以上),但地理上则局限在较小的范围(如1km左右)。
个人区域网就是在个人工作的地方把属于个人使用的电子设备(如便携式电脑等)用无线技术连接起来的网络,因此也常称为无线个人区域网WPAN(Wireless PAN),其范围很小,大约在10m左右。
这是指电信公司(国有或私有)出资建造的大型网络。“公用”的意思就是所有愿意按电信公司的规定交纳费用的人都可以使用这种网络。因此公用网也可称为公众网。
这是某个部门为满足本单位的特殊业务工作的需要而建造的网络。这种网络不向本单位以外的人提供服务。例如,军队、铁路、银行、电力等系统均有本系统的专用网。
这种网络就是接入网AN
(Access Network),它又称为本地接入网或居民接入网由于从用户家中接入到互联网可以使用的技术有许多种,因此就出现了可以使用多种接入网技术连接到互联网的情况。
接入网本身既不属于互联网的核心部分,也不属于互联网的边缘部分。
接入网是从某个用户端系统到互联网中的第一个路由器(也称为边缘路由器)之间的一种网络。
从覆盖的范围看,很多接入网还属于局域网。
从作用上看,接入网只是起到让用户能够与互联网连接的“桥梁”作用。
比特(bit
)来源于binary digit
,意思是一个“二进制数字”。
网络技术中的速率指的是数据的传送速率,它也称为数据率(data rate)或比特率(bit rate)。速率是计算机网络中最重要的一个性能指标。
速率的单位是bit/s
(比特每秒)(或b/s
,有时也写为 bps
,即bit per second)。
当提到网络的速率时,往往指的是额定速率或标称速率,而并非网络实际上运行的速率。
“带宽”(bandwidth
)有以下两种不同的意义:
300Hz到3.4kHz
,即话音的主要成分的频率范围)。表示某信道
允许通过的信号频带范围
就称为该信道的带宽(或通频带)。最高数据率
”。吞吐量(throughput
)表示在单位时间内通过某个网络(或信道、接口)的实际的数据量。吞吐量更经常地用于对现实世界中的网络的一种测量,以便知道实际上到底有多少数据量能够通过网络。
时延(delay
或latency)是指数据(一个报文或分组,甚至比特)从网络(或链路)的一端传送到另一端所需的时间。
网络中的时延是由以下几个不同的部分组成的:
1、发送时延
发送时延(transmission delay)是主机或路由器发送数据帧所需要的时间,也就是从发送数据帧的第一个比特算起,到该帧的最后一个比特发送完毕所需的时间。
2、传播时延
传播时延(propagation delay)是电磁波在信道中传播一定的距离需要花费的时间。
电磁波在自由空间的传播速率是光速,即 3.0×105km/s 。电磁波在网络传输媒体中的传播速率比在自由空间要略低一些:在铜线电缆中的传播速率约为 2.3×105km/s ,在光纤中的传播速率约为 2.0×105km/s 。
例如,1000km 长的光纤线路产生的传播时延大约为 5ms 。
发送时延发生在机器内部的发送器中,与传输信道的长度(或信号传送的距离)没有任何关系。
但传播时延则发生在机器外部的传输信道媒体上,而与信号的发送速率无关。信号传送的距离越远,传播时延就越大。
3、处理时延
主机或路由器在收到分组时要花费一定的时间进行处理,例如分析分组的首部、从分组中提取数据部分、进行差错检验
或查找适当的路由
等,这就产生了处理时延。
4、排队时延
分组在经过网络传输时,要经过许多路由器。但分组在进入路由器后要先在输入队列
中排队等待处理。在路由器确定了转发接口后,还要在输出队列
中排队等待转发。这就产生了排队时延。
排队时延的长短往往取决于网络当时的通信量。当网络的通信量很大时会发生队列溢出,使分组丢失,这相当于排队时延为无穷大。
这样,数据在网络中经历的总时延就是以上四种时延之和:
把以上讨论的网络性能的两个度量——传播时延
和带宽
——相乘
,就得到另一个很有用的度量:传播时延带宽积。
管道的长度是链路的传播时延(请注意,现在以时间作为单位来表示链路长度),而管道的截面积是链路的带宽。因此时延带宽积就表示这个管道的体积,表示这样的链路可容纳多少个比特。
若发送端连续发送数据,则在发送的第一个比特即将达到终点时,发送端就已经发送了20万个比特,而这20万个比特都正在链路上向前移动。
因此,链路的时延带宽积又称为以比特为单位的链路长度
。
对于一条正在传送数据的链路,只有在代表链路的管道都充满比特时,链路才得到充分的利用。
RTT
(Round-Trip Time)在许多情况下,互联网上的信息不仅仅单方向传输而是双向交互的。
我们需要知道双向交互一次所需要的时间。
在互联网中,往返时间还包括各中间结点的处理时延、排队时延以及转发数据时的发送时延。当使用卫星通信时,往返时间RTT
相对较长,是很重要的一个性能指标。
利用率有信道利用率和网络利用率两种。
信道利用率
指出某信道有百分之几的时间是被利用的(有数据通过)。完全空闲的信道的利用率是零。网络利用率
则是全网络的信道利用率的加权平均值。当某信道的利用率增大时,该信道引起的时延也就迅速增加。
在网络通信量不断增大的情况下,由于分组在网络结点(路由器或结点交换机)进行处理时需要排队等候,因此网络引起的时延就会增大。
网络当前的时延=
网络空闲时的时延/
(1-
网络的利用率)
当网络的利用率达到其容量的1/2
时,时延就要加倍。
特别值得注意的就是:当网络的利用率接近最大值1
时,网络的时延就趋于无穷大
。
信道或网络的利用率过高会产生非常大的时延。
因此一些拥有较大主干网的
ISP
通常控制信道利用率不超过50%
。如果超过了就要准备扩容,增大线路的带宽。
在计算机网络的基本概念中,分层次的体系结构是最基本的。
设想一种最简单的情况:连接在网络上的两台计算机要互相传送文件。
(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
。
为进行网络中的数据交换而建立的规则、标准或约定称为网络协议
(network protocol)。
如图,下面的一层为上面的一层提供基础。
计算机网络的各层及其协议的集合就是网络的体系结构
(architecture
)。
应用层
、运输层
、网际层
和网络接口层
不过从实质上讲,TCP/IP只有最上面的三层,因为最下面的网络接口层并没有什么具体内容。因此在学习计算机网络的原理时往往采取折中的办法,即综合OSI
和TCP/IP
的优点,采用一种只有五层协议的体系结构:
有时为了方便,也可把最底下两层称为网络接口层。
下面自上而下地、非常简要地介绍一下各层的主要功能。
应用进程
间通信和交互的规则。这里的进程就是指主机中正在运行的程序。DNS
,支持万维网应用的HTTP
协议,支持电子邮件的SMTP
协议,等等。报文
(message)。运输层主要使用以下两种协议:
TCP
(Transmission Control Protocol)——提供面向连接的、可靠的数据传输服务,其数据传输的单位是报文段(segment)。UDP
(User Datagram Protocol)——提供无连接的、尽最大努力(best-effort)的数据传输服务(不保证数据传输的可靠性),其数据传输的单位是用户数据报。网络层负责为分组交换网上的不同主机提供通信服务。在发送数据时,网络层把运输层产生的报文段
或用户数据报
封装成分组或包进行传送。
在TCP/IP体系中,由于网络层使用IP协议,因此分组也叫做IP数据报,或简称为数据报
。
网络层的另一个任务就是要选择合适的路由,使源主机运输层所传下来的分组,能够通过网络中的路由器找到目的主机。
互联网是由大量的异构
(heterogeneous)网络通过路由器
(router)相互连接起来的。互联网使用的网络层协议是无连接的网际协议IP
(Internet Protocol)和许多种路由选择协议,因此互联网的网络层也叫做网际层或IP层。
数据链路层常简称为链路层。
数据链路层将网络层交下来的IP数据报组装成帧(framing),在两个相邻结点间的链路上传送帧
(frame)。每一帧包括数据和必要的控制信息(如同步信息、地址信息、差错控制等)。
在接收数据时,控制信息使接收端能够知道一个帧从哪个比特开始和到哪个比特结束。这样,数据链路层在收到一个帧后,就可从中提取出数据部分,上交给网络层。
在物理层上所传数据的单位是比特。发送方发送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层。
查找路由器中的转发表
,找出转发分组的接口,然后往下传送到第2层,加上新的首部和尾部后,再到最下面的第1层,然后在物理媒体上把每一个比特发送出去。当这一串的比特流离开路由器到达目的站主机2时,就从主机2的第1层按照上面讲过的方式,依次上升到第5层。最后,把应用进程 AP1 发送的数据交给目的站的应用进程 AP2 。
任何两个同样的层次(例如在两个系统的第4层)之间,也好像如同图中的水平虚线所示的那样,把数据(即数据单元加上控制信息)通过水平虚线直接传递给对方。这就是所谓的“对等层
”(peer layers)之间的通信。我们以前经常提到的各层协议,实际上就是在各个对等层之间
传递数据时的各项规定。
使用实体
(entity)表示任何可发送或接收信息的硬件或软件进程。在许多情况下,实体就是一个特定的软件模块。
协议是控制两个对等实体
(或多个实体)进行通信的规则的集合。
协议是“水平的”,即协议是控制对等实体之间通信的规则。但服务是“垂直的”,即服务是由下层向上层通过层间接口提供的。
在同一系统中相邻两层的实体进行交互(即交换信息)的地方,通常称为服务访问点SAP
(Service Access Point)。
第n层的两个“实体(n)”之间通过“协议(n)”进行通信,而第n+1层的两个“实体(n+1)”之间则通过另外的“协议(n+1)”进行通信(每一层都使用不同的协议)。
计算机网络的协议还有一个很重要的特点,就是协议必须把所有不利的条件事先都估计到,而不能假定一切都是正常的和非常理想的。
TCP/IP四层协议的表示方法举例:
沙漏计时器形状的TCP/IP协议族示意:
它的特点是上下两头大而中间小:应用层和网络接口层都有多种协议,而中间的 IP 层很小,上层的各种协议都向下汇聚到一个 IP 协议中。
这种很像沙漏计时器形状的 TCP/IP 协议族表明:TCP/IP
协议可以为各式各样的应用提供服务(所谓的everything over IP),同时 TCP/IP 协议也允许IP
协议在各式各样的网络构成的互联网上运行(所谓的IP over everything)。
正因为如此,互联网才会发展到今天的这种全球规模。
在应用层的客户进程和服务器进程的交互:
主机C的两个服务器进程分别向A和B的客户进程提供服务:
完。