1. 概述
1. 1 互联网概述
- 计算机网络(简称为网络):由若干节点和连接这些节点的链路组成
- 互连网:有多个网络通过一些路由器相互连接起来,构成了一个可覆盖范围更大的计算机网络,网络的网络
- 网络把许多计算机连接在一起,而互联网则把许多网络通过一些路由器连接在一起。与网络相连的计算机通常称为
主机
。
1.2 互联网的组成
从互联网的工作方式上看,可以划分为两大块
- 边缘部分:由所有连接在互联网上的
主机
组成,由用户直接使用,用来进行通信(传送数据、音频或者视频)和资源共享 - 核心部分:由大量
网络
和连接这些网络的路由器
组成,为边缘部分提供服务
1.2.1 互联网的边缘部分
- 端系统:处在互联网边缘部分的就是
连接在互联网上的所有主机
。这些主机又称为端系统(end system)
- 端系统在功能上可能有很大区别,端系统的拥有者可以是个人、单位、或者某个
ISP(Internet Service Provider)
计算机之间通信:主机A的某个进程
和主机B上的另一个进程
进行通信
端系统之间的两种通信方式
- 客户/服务器方式:Client/Server方式,简称为C/S方式
客户/服务器方式所描述的是进程之间服务和被服务的关系
客户是服务的请求方,服务器是服务的提供方
客户与服务器的通信关系建立后,通信可以是双向的
,客户和服务器都可以发送和接收数据
- 客户程序:被用户调用后运行,需要主动向远地服务器发起通信(请求服务)。必须知道
服务器程序
的地址。不需要特殊的硬件和很复杂的操作系统。 - 服务器程序:专门用来提供某种服务的程序,可以同时处理多个客户请求。一直
不断地运行着,被动
地等待并接收来自各地的客户的通信请求,不需要知道客户程序的地址,一般需要强大的硬件和高级的操作系统支持
- 对等方式:Peer to Peer方式,简称P2P方式
两台主机在通信时不区分服务请求方和服务提供方,只要都运行了P2P软件,就可以进行平等的、对等连接通信
对等连接方式从本质上看依然是使用客户服务器方式,只是对等连接中的每一个主机既是客户又是服务器
1.2.2 互联网的核心部分
互联网的核心部分:向网络边缘中的主机提供连通性
,使得任何一台主机都能够向其他主机通信。在网络核心部分起特殊作用的是路由器(router)
,路由器是实现分组交换(packet switching)
的关键构件,其任务是转发
收到的分组,分组转发是网络核心部分最重要的功能
典型的交换技术包括
- 电路交换
- 分组交换
- 报文交换
互联网的核心部分采用分组交换技术
1.2.2.1 电路交换
- **电路交换(circuit switching)**的主要特点
电线对的数量与电话机的数量的平方(N^2)成正比,当电话机的数量增多时,使用电话机将这些电话连接起来
每一部电话都直接连接到交换机上,而交换机使用交换
的方法,让电话用户彼此之间可以很方便地进行通信
什么叫交换?
- 转接:把一条电话线转接到另一条电话线,使他们连通起来
- 从通信资源的分配角度来看,就是按照某种方式
动态地分配传输线路的资源
电路交换的三个阶段
- 建立连接:建立一条专用的物理通路(占用通信资源)
- 通话:主叫和被叫双方互相通电话(一直占用通信资源)
- 释放连接:释放刚才使用的物理通路(归还通信资源)
这种必须经过”建立连接、通话、释放连接”三个步骤的交换方式称为电路交换
电路交换的特点:通话的两个用户始终占用
端到端的通信资源
计算机数据具有突发性
,这导致在传输数据的时候,通信线路的利用率很低,真正用来传送数据的时间往往不到10%,甚至不到1%,已被用户占用的通信线路资源在绝大部分时间里都是空闲的
1.2.2.2 分组交换
分组交换是基于存储转发
的技术实现的。
在发送端,先把较长的报文
划分成更小的等长数据段
,然后再这些数据段的前面添加首部,就构成了分组(packet)
,分组又称为包
,而分组的首部也可以称为包头
分组交换以”分组”作为数据传输单元,互联网采用分组交换技术,分组是在互联网中传送的数据单元,发送端依次把各分组发送到接收端
接收端收到分组后剥去首部,还原成原来的报文,假定分组在传输过程中没有出现查错,在转发时也没有被丢弃
分组在互联网中的转发
- 根据首部中包含的目的地址、源地址等重要控制信息进行转发
- 每一个分组在互联网中独立选择传输路径
- 位于网络核心部分的路由器负责转发分组,即进行分组交换
- 路由器要创建和动态维护转发表
分组交换的优点
优点 | 所采用的手段 |
---|---|
高效 | 在分组传输的过程中动态分配 传输带宽,对通信链路是一段段占用的 |
灵活 | 为每一个分组独立地选择最合适的转发路由 |
迅速 | 以分组作为传送单位,可以不限建立连接就能向其他主机发送分组 |
可靠 | 保证可靠性的网络协议;分布式多路由的分组交换网,使得网络有很好的生存性 |
分组交换带来的问题
问题 | 原因 |
---|---|
排队延迟 | 分组在各路由器存储转发时需要排队 |
不保证带宽 | 动态分配 |
增加开销 | 各分组必须携带控制信息;路由器要暂存分组,维护转发表 |
1.2.2.3 报文交换
报文交换(MessageSwitching)是基于存储转发
实现的技术
报文交换是分组交换的前身,其主要特点是存储接受到的报文,判断其目标地址以选择路由,最后,在下一跳路由空闲的时候,将数据转发给下一条路由,其基本模式也是存储-转发
模式,不需要事先建立线路,其数据传输单位为报文,报文携带有目标地址、源地址等信息,在交换节点的时候采用存储转发的传输方式
优点
不需要为通信双方建立一条专用的通信线路,不存在连接建立时延,用户可以随时发送报文
在报文交换中便于设置代码校验和数据重发设施,交换节点具有路径选择,在某条线路故障时可以选择其他线路
便于类型、规格和速度不同的计算机之间进行通信
提供多目标服务,一个报文发送到多个目标地址
逐段占用通信线路,提高通信线路的利用率
缺点
- 数据进入交换节点后要经历存储、转发这一过程,从而引起转发时延(包括接收报文、校验正确性、排队、发送时间等),而且网络的通信量越大,造成的时延就会越大,因此报文交换的实时性差
- 报文交换只适用于数字信号
- 由于报文长度没有限制,而每个中间节点都要完整地接收传来的整个报文,当输出线路不空闲时,还可能要存储几个完整报文等待转发,这就要求每个节点有较大的缓冲区,为了降低成本,有的还设置了磁盘,这时候还要将报文发送到磁盘上,进一步增加了传送时延
- 若要连续传送大量的数据,而且传送时间远大于连接建立的时间,则电路交换的传输速率较快
- 报文交换和分组交换不需要预先分配传输带宽,在传送突发数据时可提高整个网络的信道利用率
- 由于一个分组的长度往往远小于整个报文的长度,因此分组交换比报文交换的时延会更小,同时具有更好的灵活性
1.2.2.4 用自己的话来解释以上三种交换方式
- 电路交换是基于转接这种技术实现的,所谓转接就是把一条电话线与另一条电话线接起来,这个过程是由交换器完成的,当呼叫方发起请求的时候,交换机会收到这个请求,然后将呼叫方的线路与被呼叫方的线路接通起来,当被呼叫方摘机或者说响应请求的时候,这条通信线路就被建立起来了,但是一旦这条通信线路被建立起来了,其他电话机或者设备就不能够占用了,只有当这条通信线路上的数据传输任务完成之后,会释放这个通信线路连接,才可以供其他设备使用。
但是我们也知道,计算机的请求发起是具有不确定性的,也就是说它可能在任何时刻发起任何数据量的数据传输请求,这样就产生了一个问题,就是说如果我要传输一个很小的问题,在网络中可能只要0.1s的时间进行传输,但是建立连接的这个的过程可能需要10s,这样的方案作为计算机网络的传输方式显然不太合理。
基于此产生了报文交换和分组交换
分组交换:分组交换是基于存储转发这种技术实现的,它的特点是将一段较长的原始传输报文在数据传送请求发起端切割成一段段等长的分组,这个分组中有数据报文以及包头,包头中存储着原始发送地址和将要发送的地址,还有一些诸如数据校验位这样的信息,它在网络传输的主要依赖于路由器,当分组传输到路由器的时候,路由器会先将这个分组存储器起来,然后读取包头,读取了之后确定这个数据的去向,然后查找分组转发表,然后选择合适的接口把它发送出去。在这个过程中,路由器需要动态维护一个转发表,以确定哪个接口是合适的接口,同时可以知道的是,各个分组在网络中的交换是独立的,也就是说是逐段地占用网络传输线路的,因此大大提高了线路的利用率
报文交换其实是分组交换的前身,它也是基于存储转发的机制实现的,它与分组交换的区别主要是传输单位,报文交换的基本数据单位是单条报文,而分组交换的基本数据单位是由单条报文分割而来的分组,这也就意味着报文交换的时候,要存储的数据大得多,占用线路的时间多得多,有时候可能会因为传输过来的报文数据太多而需要存储到外部磁盘,在下次传输的时候还要把这些报文重新读取发送,传输时延进一步加长。
1.3 计算机网络的类别
1.3.1 计算机网络的定义
计算机网络:计算机网络主要是由一些通用的、可编程的
硬件互连而成的,而这些硬件并非专门用来实现某一特定目的(例如,传送数据或视频信号)
。这些可编程的硬件能够用来传送多种不同类型的数据,并能支持广泛的和日益增长的应用
- 可编程的硬件表明:这种硬件一定包含有
中央处理器CPU
- 计算机网络可以传送数据,支持多种应用(包括今后可能出现的各种应用)
1.3.2 几种不同类别的计算机网络
计算机网络可以按照以下方法进行分类
- 网络的作用范围
类别 | 作用范围或距离 |
---|---|
广域网WAN(Wide Area Network) | 通常为几十到几千公里。有时也称为远程网(long haul network)。是互联网的核心部分。 |
城域网MAN(Metropolitan Area Network) | 作用范围一般是一个城市,作用距离约为 5~50 公里。 |
局域网LAN(Local Area Network) | 局限在较小的范围(如 1 公里左右)。通常采用高速通信线路。 |
个人局域网PAN(Personal Area Network) | 范围很小,大约在 10 米左右。有时也称为无线个人区域网 WPAN (Wireless PAN)。 |
若中央处理机之间的距离非常近(仅一米)
,则一般称之为多处理机系统
- 网络的使用者
类别 | 作用范围或距离 |
---|---|
公用网(public network) | 按规定交纳费用的人都可以使用的网络。也可称为公众网。 |
专用网(private network) | 为特殊业务工作的需要而建造的网络。 |
公用网和专用网都可以用来传送多种业务。如传送的是计算机数据,则分别是公用计算机网络和专用计算机网络
- 用来把用户接入到互联网的网络,接入网
AN(Access Network)
又称为本地接入网
或者居民接入网
,用于将用户接入互联网,实际上就是本地ISP
所拥有的网络的,它既不是互联网的核心部分,也不是互联网的边缘部分
是从某个用户端系统到本地 ISP
的第一个路由器(也称为边缘路由器)
之间的一种网络
从覆盖的范围来看,很多接入网还是属于局域网
1.4 计算机网络的性能
1.4.1 计算机网络的性能指标
性能指标:从不同的方面来度量计算机网络的性能
- 速率:是最重要的一个指标,指的是
数据的传送速率
,也称为数据率(data rate)
或者比特率(bit rate)
单位:bit/s或者kbit/s、Mbit/s、Gbit/s
,速率往往是指额定速率或者标称速率
而不是实际运行速率
千=K=2^10=1024,兆=M=2^20=1024K,G=2^30=1024M,1字节(Byte)=8比特(bit)
- 带宽(bandwidth)
频域:某个信号所具有的频带宽度
,单位是赫(或者千赫、兆赫等)
,某信道允许通过的信号频带范围称为该信道的带宽(或通频带)
时域:网络中某通道传送数据的能力,表示在单位时间内网络中的某信道所能通过的"最高数据率",单位是数据率的单位bit/s
两者的本质是相同的,一条通信链路的带宽越宽,其所能传输的最高数据率也越高
- 吞吐量(throughput):单位时间内通过某个网络
(或信道、接口)
的实际数据量
吞吐量受网络的带宽或者网络的额定速率的限制,额定速率是绝对上限值,可能会远小于额定速率,甚至下降到零,有时可用每秒传送的字节数 或者帧数来表示
- 时延(delay或latency):指数据
(一个报文或分组,甚至比特)从网络(或链路)
的一端传送到另一端所需的时间,有时也称为延迟
或者迟延
一般组成:(1)发送时延(2)传播时延(3)处理时延(4)排队时延
- 发送时延:也称为传输时延,是主机或路由器发送数据帧所需要的时间,也就是从
发送数据帧的第一个比特算起
,到该帧的最后一个比特
发送完毕所需的时间
$$发送时延 = \frac{数据帧长度(bit)}{发送速率(bit/s)}$$
- 传播时延:是
电磁波
在信道中传播一定的距离需要花费时间。
$$传播时延=\frac{信道长度(米)}{信号在信道上的传播速率(米/秒)}$$
注意:发送时延与传播时延有本质上的不同,发送时延发生在及其内部的发送器中,与传输信道的长度(或者信号传送的距离)
没有任何关系,传播时延
则发生在机器外部的传输信道媒体上,而与信号的发送速率无关。信号传送的距离越远,传播时延就越大。
- 处理时延:主机或路由在收到分组时,为
处理
分组(例如分析首部、提取数据、查错检验或查找路由)
所花费的时间 - 排队时延:分组在路由器输入输出队列中
排队等待
处理和转发所经历的时延,排队时延的长度往往取决于网络中当时的通信量。当网络的通信量很大的时候会发生队列溢出,使得分组丢失,这相当于排队时延为无穷大
总时延 = 发送时延 + 传播时延 + 处理时延 + 排队时延
一般说来,小时延的网络要优于大时延的网络,在某些情况下,一个低速率、小时延的网络很可能要优于
一个高速率但大时延的网络。
容易产生的错误概念
“在高速链路(或高带宽链路)上,比特会传送得更快些”
对于高速网络链路
,提高的仅仅是数据的发送速率
,而不是比特在链路上的传播速率,提高数据的发送速率只是减小了数据的发送时延
- 时延带宽积
时延带宽积 = 传播时延 * 带宽
链路的时延带宽积
又称为以比特为单位的链路长度,管道中的比特数表示从发送端但尚未到达接收端的比特数。
只有在代表链路的管道都充满了比特的时候,链路才得到了充分的利用
$$传播时延=\frac{信道长度(米)}{信号在信道上的传播速率(米/秒)}$$
带宽表示在单位时间内网络中的某信道所能通过的"最高数据率",单位是数据率的单位bit/s
- 往返时间RTT(Round-Trip Time):表示从发送方
发送完数据
,到发送方收到来自接收方的确认
总共经历的时间
$$发送时延=\frac{数据长度}{发送速率}=\frac{100*{2^{20}}8}{10010^6}=8.39s$$
$$有效数据率=\frac{数据长度}{发送时间+RTT}=\frac{100*2^{20}*8}{8.39+2}=80.7Mbit/s$$
在互联网中,往返时间还包括各中间节点
的处理时延、排队时延以及转发数据时的发送时延
- 利用率
信道利用率:某信道有百分之几的时间是被利用的(即有数据通过)
,完全空闲的信道的利用率是零
网络利用率:全网络的信道利用率的加权平均值
- 时延与网络利用率的关系
根据排队论,当某信道的利用率增大,时延会迅速增加
1.4.2 计算机网络的非性能特征
费用、质量、可靠性、管理和维护、可扩展性和可升级性
1.5 计算机网络体系结构
1.5.1 计算机网络体系结构的形成
计算机网络如果需要形成一个功能系统,那么需要解决很多问题
- 必须有一条能够传送数据的通路
- 发起方必须激活通路
- 要告诉网络如何识别接收方
- 发起方要清楚对方是否已经开机,而且与网络连接正常
- 发起方要清楚对方是否准备好接收和存储文件
- 若文件格式不兼容,要完成格式的转换
- 要处理各种查错和意外事故,保证收到正确的文件
国际标准:开放系统互连参考模型 (OSI/RM)
ISO(国际标准化组织)提出的OSI/RM(Open Systems Interconnection Reference Model)
是使各种计算机在世界范围内互联成网的标准框架
1.5.2 协议与划分层次
- 网络协议(network protocol):简称为协议,是为进行网络中的数据交换而建立的规则、标准或者规定
三个组成要素
语法:数据与控制信息的结构或者格式
语义:需要发出何种控制信息,完成何种动作以及做出何种响应
同步:事件实现顺序的详细说明
划分层次的概念例子:两台主机通过网络传输文件
将文件传输模块
作为最高的一层,这个模块作为一个应用接口,直接对接最上层应用。主机1文件传输模块将准备好的文件交给下层模块进行发送,底层作为黑盒,看不见,然后从用户的观感上来看,文件以及传送命令好像是按照水平方向的虚线直接传送的
,然后主机2将底层处理完毕的文件从底层上交到主机2的文件传送上层模块
然后进行底层的分析,既然要发送,那么肯定就涉及到主机网络之间的通信,于是需要设计一个通信服务的模块
,这个模块承载的功能是将文件可靠地传送到对方
然后再进行底层的分析,通信服务模块规定了传输的方式与协议,但是具体怎么传输,怎么通过网络来传输,还需要一个网络接入模块
来进行操作,网络接入模块
负责做与网络接口细节有关的工作,并向上提供接入和通信服务
各层完成的主要功能
- 差错控制:使得相应层次对等方的通信更加可靠
- 流量控制:发送端的发送速率必须使得接收端来得及接收,不要条块
- 分段和重装:发送端将要发送的数据块划分为更小的单位,在接收端将其还原
- 复用和分用:发送端几个高层会话复用一条底层的连接,在接收端再进行分用
- 连接建立和释放:交换数据前先建立一条逻辑连接,数据传送结束后释放连接
1.5.3 计算机网络的体系结构
网络的体系结构(Network Architecture):是计算机网络的各层及其协议的集合,就是这个计算机网络及其构件所完成的功能的精确定义(不涉及实现),实现是遵循这种体系结构的前提下,用何种硬件或者软件完成这些功能的问题,体系结构是抽象的,而实现则是具体的,是真正在运行的计算机硬件和软件
具有五层协议体系结构
- 应用层:通过应用进程间的交互来完成特定网络应用,协议定义的是应用进程间通信和交互的规则,把应用层交互的数据单元称为**报文(message)**,例如
DNS,HTTP,SMTP
- 运输层:负责向两台主机中的进程之间的通信提供通用的数据传输服务,具有复用和分用的功能,主要使用两种协议:
传输控制协议(TCP)、用户数据报协议(UDP)
TCP(Transmission Control Protocol)
:提供面向连接的,可靠的数据传输服务,数据传输的单位是报文段(segment)
UDP(User Datagram Protocol)
:提供无连接的尽最大努力(best-effort)的数据传输服务(不保证数据传输的可靠性)
数据传输的单位是用户数据报
- 网络层:为分组交换网上的不同主机提供通信服务
两个具体任务:
路由选择
:通过一定的算法,在互联网中的每一个路由器上,生成一个用来转发分组的转发表
转发
:每一个路由器在接收到一个分组的时候,要依据转发表中指明的路径把分组转发到下一个路由器
互联网使用的是网络层协议是无连接
的网际协议(Internet Protocol)
和许多中路由选择协议,因此互联网的网络层也叫做网际层或者IP层
,IP协议分组
也叫做IP数据包
,或简称为数据报
数据链路层:常称为链路层,其任务主要是实现两个
相邻节点
之间的可靠通信,在两个相邻节点间的链路上传送帧(frame)
,如果发现差错,就简单地丢弃出错帧,如果需要改正出现的查错,就要采用可靠传输协议来纠正出现的差错。这种方法会使数据链路层协议复杂物理层:实现
比特(0或者1)
的传输,确定连接电缆的插头应该有多少根引脚,递信息所利用的一些物理媒体,如双绞线、同轴电缆、光缆、无线信道等,并不在物理层协议之内,而是在物理层协议的下面。
数据在各层之前的传递过程图解
对等层与协议数据单元
OSI参考模型把对等层次之间传送的数据单位称为该层的协议数据单元PDU(Protocol Data Unit)
任何两个同样的层次把PDU(即数据单元加上控制信息)通过水平虚线直接传递给对方,这就是所谓的对等层之间的通信。各层协议实际上就是在各个对等层之间传递数据时的各项规定
1.5.4 实体、协议、服务和服务访问点
- 实体:表示任何可发送或者接收信息的硬件或者软件进程
- 协议:控制两个对等实体进行通信的规则的集合,在协议的控制下,两个对等实体间的通信使得本层能够向上一层提供服务
- 要实现本层协议,还需要使用下层所提供的服务
协议的实现保证了能够向上一层提供服务,对上面的服务用户是透明的,是水平的
服务,上层使用服务原语获得下层所提供的服务,上面的服务用户只能看见服务,无法看见下面的协议,是垂直的
- 访问服务点:在同一系统中相邻两层的实体进行交互(即交换信息)的地方,通常称为
服务访问点SAP(Service Access Point)
SAP
是一个抽象的概念,它实际上就是一个逻辑接口
OSI
把层与层之间交换的数据的单元称为服务数据单元SDU(Service Data Unit)
SDU可以与PDU不一样,可以是多个SDU合成为一个PDU,也可以是一个PDU划分为几个PDU
1.5.5 TCP/IP的体系结构
目前互联网使用的TCP/IP体系结构已经发生了演变,也就是某些应用程序可以直接使用IP层
或者甚至直接使用最下面的网络接口层
沙漏计时器形状的TCP/IP协议族