内容来自b站湖科大教书匠《深入浅出计算机网络》视频和《深入浅出计算机网络》书籍
目录
1.1 信息时代的计算机网络
1.1.1 计算机网络的各类应用
1.1.2 计算机网络带来的负面问题
1.2 因特网概述
1.2.1 网络、互联网与因特网的区别与关系
1.2.1.1 网络
1.2.1.2 互联网
1.2.1.3 因特网
1.2.2 因特网的发展历程
1.2.3 因特网的标准化工作和管理机构
1.2.3.1 因特网的标准化工作
1.2.3.2 因特网的管理机构
1.2.4 因特网的组成
1.3 电路交换、分组交换和报文交换
1.3.1 电路交换
1.3.2 分组交换
1.3.3 报文交换
1.4 计算机网络的定义和分类
1.4.1 计算机网络的定义
1.4.2 计算机网络的分类
1.5 计算机网络的性能指标
1.5.1 速率
1.5.2 带宽
1.5.3 吞吐量
1.5.4 时延
1.5.5 时延带宽积
1.5.6 往返时间
1.5.7 利用率
1.5.8 丢包率
1.6 计算机网络的体系结构
1.6.1 常见的三种计算机网络体系结构
1.6.1.1 开放系统互连参考模型
1.6.1.2 TCP/IP参考模型
1.6.1.3 原理参考模型
1.6.2 计算机网络体系结构分层的必要性
1.6.2.1 物理层(physical layer)
1.6.2.2 数据链路层(data link layer)
1.6.2.3 网络层(network layer)
1.6.2.4 运输层(transport layer)
1.6.2.5 应用层(application layer)
1.6.3 计算机网络体系结构分层思想举例
1.6.3.1 主机对数据包的处理过程
1.6.3.2 路由器对数据包的处理过程
1.6.3.3 Web服务器对数据包的处理过程
1.6.3.4 Web服务器给主机发送HTTP响应报文的过程
1.6.4 计算机网络体系结构中的专用术语
1.6.4.1 实体和对等实体
1.6.4.2 协议
1.6.4.3 服务
1.1 信息时代的计算机网络
1.1.1 计算机网络的各类应用
1.1.2 计算机网络带来的负面问题
1.2 因特网概述
1.2.1 网络、互联网与因特网的区别与关系
1.2.1.1 网络
网络(Network)是由若干节点(Node)和连接这些节点的链路(Link)组成的,如图所示。网络中的节点可以是计算机(笔记本电脑、台式电脑、服务器等)、网络互连设备(集线器、交换机、路由器等)、其他具有网络功能的设备(网络打印机、网络摄像头、物联网设备等)。网络中的链路既可以是有线链路,也可以是无线链路。
为了简单起见,我们可以仅用一朵云来表示一个网络,而网络内部的细节则不用给出,如图所示。在今后研究网络互连的相关问题时,这样的做法可以带来极大的便利。
1.2.1.2 互联网
互联网(internet)是由若干网络和连接这些网络的路由器组成的,如图所示。如果我们忽略互连细节,则可将互联网看作一个覆盖范围更大的网络,因此也可称其为“网络的网络(Network of Networks)”。为了简单起见,互联网也可用一朵云表示。
1.2.1.3 因特网
因特网(Internet)是我们几乎每天都会使用的网络,它是当今世界上最大的互联网,其用户数以亿计,互连的网络数以百万计。因特网也常常用一朵云来表示,其内部各种路由器和异构型网络的互连细节不用给出(一般也难以给出),如图所示。连接在因特网上的各种通信设备(例如智能手机、平板电脑、笔记本电脑、台式电脑、服务器、网络打印机和可联网家用电器等)称为主机(Host),而路由器是用于网络互连的专用设备,一般不称其为主机。
综上所述,我们可以将网络、互联网与因特网的区别与关系总结如下:若干节点和链路互连形成网络,而若干网络通过路由器互连形成互联网,因特网是当今世界上最大的互联网。
注意:
- 我们有时并没有严格区分互联网和因特网这两个名词,许多人口中的互联网实际上是指因特网。
- 网络互连并不仅仅是简单的物理连接,还需要各通信设备中安装有相应的软件。因此当我们谈到网络互连时,就隐含地表示在这些通信设备中已经安装好了相应的软件,因而各通信设备可以通过网络交换信息。
1.2.2 因特网的发展历程
我国的ISP主要有中国电信、中国移动以及中国联通这三大电信运营商,它们向广大用户提供因特网接入服务、信息服务和增值服务,如图所示。
目前,因特网已发展成基于ISP的多层次结构的互连网络,没有人能够准确说出因特网究竟有多大,其整个结构也很难进行细致的描述。下图给出了一种具有三层ISP结构的因特网概念示意图,三层ISP分别为:
- 第一层ISP是国际级的,其覆盖面积最大并且拥有高速链路和交换设备。第一层ISP之间相互连接构成因特网主干网(Internet Backbone)。
- 第二层ISP是区域级或国家级的,与少数第一层ISP相连接,作为第一层ISP的用户。一些大公司也是第一层ISP的用户。
- 第三层ISP是本地级的,与第二层ISP相连接,作为第二层ISP的用户。普通的校园网、企业网、住宅用户以及移动用户等,都是第三层ISP的用户。相同层次的ISP也可选择直接相连。
注意,已接入因特网的用户也可以成为一个ISP。他只需要购买一些相关的设备(例如调制解调器、路由器等),让其他用户能够通过他来接入因特网。因此,因特网的结构实际上是基于ISP的多层次结构,各ISP可以在因特网拓扑上添加新的层次和分支。
1.2.3 因特网的标准化工作和管理机构
1.2.3.1 因特网的标准化工作
制定因特网标准需要经过因特网草案(Internet Draft)、建议标准(ProposedStandard)、草案标准(Draft Standard)、因特网标准(Internet Standard)这4个阶段。由于“草案标准”容易与“因特网草案”混淆,所以从2011年10月起取消了“草案标准”这个阶段[RFC 6410]。这样,现在制定因特网标准的过程简化为:“因特网草案”→“建议标准”→“因特网标准”。
1.2.3.2 因特网的管理机构
1.2.4 因特网的组成
- 因特网的边缘部分。由连接在因特网上的台式电脑、笔记本电脑、平板电脑、服务器、智能手机、智能手表、网络摄像头和网络打印机等用户设备构成。这些用户设备常称为主机,由用户直接使用,为用户直接提供各式各样的网络应用。
- 因特网的核心部分。由大量异构型网络和连接这些网络的路由器构成。因特网的核心部分为其边缘部分提供连通性和数据交换等服务。
1.3 电路交换、分组交换和报文交换
1.3.1 电路交换
在早期专为电话通信服务的电信网络中,需要使用很多相互连接起来的电话交换机来完成全网的交换任务。电话交换机接通电话线的方式就是电路交换(Circuit Switching)。从通信资源分配的角度看,交换(Switching)实际上就是以某种方式动态地分配传输线路的资源。使用电路交换进行通信的三个步骤如下:
- 建立连接:主叫方必须首先进行拨号以请求建立连接。当被叫方听到电话交换机送来的振铃音并摘机后,从主叫方到被叫方就建立了一条专用的物理通路,简称为连接。这条连接为通话双方提供通信资源。
- 通话:主叫方和被叫方现在可以基于已建立的连接进行通话了。在整个通话期间,通话双方始终占用着连接,通信资源不会被其他用户占用。
- 释放连接:通话完毕挂机后,从主叫方到被叫方的这条专用的物理通路被交换机释放,将双方所占用的通信资源归还给电信网。
如果主叫方在拨号请求建立连接时听到忙音,这可能是被叫方此时正忙或电信网的资源已不足以支持这次请求,则主叫方必须挂机等待一段时间后再重新拨号。
1.3.2 分组交换
早在因特网的鼻祖ARPANET的研制初期,就采用了基于存储转发技术的分组交换。源主机将待发送的整块数据构造成若干个分组并发送出去,分组传送途中的各交换节点(也就是路由器)对分组进行存储转发,目的主机收到这些分组后将它们组合还原成原始数据块。
待发送的整块数据通常被称为报文(Message)。较长的报文一般不适宜直接传输。如果报文太长,则对交换节点的缓存容量有很大的需求,在错误处理方面也会比较低效。因此需要将较长的报文划分成若干个较小的等长数据段,在每个数据段前面添加一些由必要的控制信息(例如源地址和目的地址等)组成的首部(Header),这样就构造出了一个个分组(Packet)。分组是在分组交换网上传送的数据单元。构造分组的示意图如图所示。
源主机将分组发送到分组交换网中,分组交换网中的分组交换机收到一个分组后,先将其缓存下来,然后从其首部中提取出目的地址,按照目的地址查找自己的转发表,找到相应的转发接口后将分组转发出去,把分组交给下一个分组交换机。经过多个分组交换机的存储转发后,分组最终被转发到目的主机。我们来举例说明上述过程。
在如图所示的简化的分组交换网中,为了简单起见,图中并没有画出互联网中通过路由器互连的各个物理网络,而是把它们分别等效为路由器之间的一段链路,整个互联网可以看作一个分组交换网,而路由器R1~R5就是分组交换网中的交换节点,主机H1~H5通过分组交换网进行通信。
如图所示,H1将分组逐个发送给与其直接相连的路由器R1。此时H1到R1的链路被占用,而分组交换网中的其他链路并未被当前通信的双方占用。
路由器R1对收到的分组进行存储转发,如图所示。假设R1根据分组首部的目的地址查找自己的转发表,查找结果是“下一跳为路由器R2”,则R1转发分组给R2。当分组正在R1与R2之间的链路上传送时,仅占用R1与R2这段链路,而不会占用分组交换网中的其他资源。
假设路由器R2收到分组后按上述方式将分组转发给路由器R3,如图所示。R3收到分组后将分组转发给主机H3。
假设在主机H1给H3连续发送多个分组的过程中,路由器R1与R2之间的通信量太大,那么R1可以把分组沿另一条路径转发给路由器R5。R5转发分组给R4,R4转发分组给R3,R3把分组转发给主机H3。
从上述例子可以看出,分组交换与电路交换有着很大的不同。分组交换没有建立连接和释放连接带来的开销,分组在哪段链路上传送才占用这段链路的通信资源,因而数据的传输效率更高,这对于突发式的计算机数据的传送是非常适宜的。相比于采用电路交换传送突发式的计算机数据,分组交换的通信线路利用率大大提高。
为了提高分组交换网的可靠性,常采用网状拓扑结构。当少数交换节点或链路出现故障时,又或是网络发生拥塞时,交换节点都可以相应地改变转发路由,而不会引起通信中断或全网瘫痪。另外,网络中的主干线路也常由一些高速链路组成。
分组交换的优缺点:
1.3.3 报文交换
电路交换、报文交换以及分组交换的对比:
1.4 计算机网络的定义和分类
1.4.1 计算机网络的定义
计算机网络并没有一个精确和统一的定义。在计算机网络发展的不同阶段,人们对计算机网络给出了不同的定义,这些定义反映了当时计算机网络技术发展的水平。
计算机网络早期的一个最简单定义是,一些互连的、自治的计算机的集合。“互连”是指计算机之间可以进行数据通信,而“自治”是指独立的计算机,它有自己的软硬件,可以独立运行。然而,在当今这个计算机网络技术飞速发展的信息时代,上述有关计算机网络的最简单定义已经不能很好地反映出计算机网络技术的发展水平。
有关计算机网络的一个较好的定义是,计算机网络主要是由一些通用的、可编程的硬件互连而成的,而这些硬件并非专门用来实现某一特定目的(例如,传送数据或视频信号)。这些可编程的硬件能够用来传送多种不同类型的数据,并能支持广泛的和日益增长的应用。这个较好的定义包含了以下含义:
- 计算机网络所连接的硬件,并不限于一般的计算机,还包括智能手机、具有网络功能的传感器以及智能家电等智能硬件。定义中的“可编程的硬件”表明这种硬件一定包含有中央处理单元CPU。
- 计算机网络并非只用来传送数据,而是能够基于数据传送进而实现各种各样的应用,包括今后可能出现的各种应用。
1.4.2 计算机网络的分类
1.5 计算机网络的性能指标
1.5.1 速率
注意:
- 在表1中,数据量单位中的K、M、G、T的数值分别为2^10、2^20、2^30、2^40;在表2中,速率单位中的k、M、G、T的数值分别为10^3、10^6、10^9、10^12。然而在实际应用中,很多人并没有严格区分上述两种类型的单位。例如,某块固态硬盘的厂家标称容量为250GB,而操作系统给出的容量却为232GB,如图所示。产生容量差别的原因在于,厂家在标称容量时,GB中的G并没有严格采用数据量单位中的数值2^30,而是采用了数值10^9;但操作系统在计算容量时,GB中的G严格采用了数据量单位中的数值2^30。
- 在日常生活中,人们习惯于用更简洁但不严格的说法来描述计算机网络的速率,例如网速为100M,而省略了单位中的b/s。
1.5.2 带宽
1.5.3 吞吐量
1.5.4 时延
- 发送时延是主机或路由器发送分组所耗费的时间,也就是从发送分组的第一个比特开始,到该分组的最后一个比特发送完毕为止所耗费的时间。
- 传播时延是电磁波在链路(传输介质)上传播一定的距离所耗费的时间。
- 当分组进入路由器后,会在路由器的输入队列中排队缓存并等待处理。在路由器确定了分组的转发接口后,分组会在输出队列中排队缓存并等待转发。分组在路由器的输入队列和输出队列中排队缓存所耗费的时间就是排队时延。
- 路由器从自己的输入队列中取出排队缓存并等待处理的分组后,会进行一系列处理工作。例如,检查分组的首部是否误码、提取分组首部中的目的地址、为分组查找相应的转发接口以及修改分组首部中的部分内容(例如生存时间)等。路由器对分组进行这一系列处理工作所耗费的时间就是处理时延。
1.5.5 时延带宽积
我们可以将链路看作一个圆柱形管道,管道的长度是链路的传播时延(即以时间作为单位来表示链路长度),管道的横截面积是链路的带宽,如图所示。因此,时延带宽积就相当于这个管道的容积,表示这样的链路可以容纳的比特数量。
1.5.6 往返时间
往返时间(Round-Trip Time,RTT)是指从发送端发送数据分组开始,到发送端收到接收端发来的相应确认分组为止,总共耗费的时间。
在下图中,主机A与主机B通过多个异构型的网络和多个路由器进行互连。以太网中的主机A给无线局域网中的主机B发送数据分组(①),主机B收到数据分组后给主机A发送相应的确认分组(②)。从主机A发送数据分组开始,到主机A收到主机B发来的相应确认分组为止,就是这一次交互的往返时间。请读者注意,卫星链路带来的传播时延比较大,这是因为卫星链路的通信距离一般都比较远,例如地球同步卫星与地球的距离大约为36000km,信号的往返传播时延为
往返传播时延 = = 240ms
1.5.7 利用率
1.5.8 丢包率
1.6 计算机网络的体系结构
1.6.1 常见的三种计算机网络体系结构
1.6.1.1 开放系统互连参考模型
开放系统互连参考模型(Open Systems Interconnection Reference Model,OSI/RM),简称OSI。
1.6.1.2 TCP/IP参考模型
因特网是全球覆盖范围最广、用户数量最多的互联网,它采用TCP/IP参考模型。
由于TCP/IP在网络层使用的核心协议是IP协议,IP协议的中文意思是网际协议(Internet Protocol,IP),因此TCP/IP体系结构的网络层也常称为网际层。
大多数网络用户每天都有使用因特网的需求,这就要求用户的主机必须使用TCP/IP体系结构。在用户主机的操作系统中,通常都带有完整的TCP/IP协议族。而因特网中用于网络互连的路由器,就其所需完成的网络互连这一基本任务而言,只包含TCP/IP的网络接口层和网际层即可,因此我们一般认为路由器的网络体系结构的最高层为网际层(网络层),如图所示。
TCP/IP体系结构各层包含的主要协议如图所示。
1.6.1.3 原理参考模型
1.6.2 计算机网络体系结构分层的必要性
1.6.2.1 物理层(physical layer)
我们可以将上述这些问题划归到物理层。
注意,严格来说传输媒体并不属于物理层范畴,它并不包含在计算机网络体系结构之中。另外,计算机网络中传输的信号,并不是我们举例的简单的数字基带信号。之所以举例成数字基带信号,是为了更容易理解。
1.6.2.2 数据链路层(data link layer)
解决了物理层的问题后,主机间可以通过信号来传送比特0和1了。
主机A、主机B和主机C通过总线互连成了一个总线型网络,如图所示。在总线型网络中,需要考虑的主要问题有哪些?
注意,上述这种总线型网络早已淘汰。现在常用的是使用以太网交换机将多台主机互连成交换式以太网,如图所示。在交换式以太网中,不会出现主机争用总线而产生碰撞的问题。
那么以太网交换机又是如何实现的呢?就是以太网交换机自学习和转发帧的原理。
对于交换式以太网这种有线网络,很少出现数据误码的情况,而对于无线网络,比较容易出现数据误码。这就引出了如何检测数据在传输过程中是否出现了误码的问题,也就是差错检测。当检测到数据包有误码时,是直接丢弃,然后什么也不做,又或是让发送方重传有误码的数据包。这就引出了出现传输差错如何处理的问题,根据应用需求,可分为可靠传输服务和不可靠传输服务。
再来看这种情况,主机A给主机B连续发送数据,然而,主机B正在处理很多其他任务,来不及取走输入缓存中的数据。于是,主机B给主机A发送通知,通知主机A停止发送。这就引出了接收方控制发送方注入网络的数据量问题,即流量控制。
1.6.2.3 网络层(network layer)
解决了物理层和数据链路层各自所面临的问题后,就可以实现数据包在一个网络上传输了。然而,我们的网络应用往往不仅限于在一个单独的网络上。例如,我们几乎每天都会使用的因特网,是由非常多的网络和路由器互连起来的,仅解决物理层和数据链路层的问题,还是不能正常工作。
我们可以把如图所示的小型互联网看作因特网中很小的一部分,我们来看看在该小型互联网中,需要考虑的主要问题有哪些。
1.6.2.4 运输层(transport layer)
解决了物理层、数据链路层以及网络层各自的问题后,就可以实现分组在多个网络之间的传送了。然而,对于计算机网络应用而言,仍有一些重要问题需要考虑。
1.6.2.5 应用层(application layer)
解决了物理层、数据链路层、网络层以及运输层各自的问题后,就可以实现进程之间基于网络的通信了。
在进程之间基于网络通信的基础上,可以制定各种应用协议,并按协议标准编写相应的应用程序,通过应用进程之间的交互来实现特定的网络应用。例如支持万维网的HTTP协议、支持电子邮件的SMTP协议以及支持文件传送的FTP协议等。另外,在制定应用协议时,还需要考虑应用进程基于网络通信时的会话管理问题和数据表示问题(采用何种编码、是否加密和压缩数据)。
我们可以将上述这些问题划归到应用层。
1.6.3 计算机网络体系结构分层思想举例
为了更好地领会计算机网络体系结构的分层思想,我们将通过一个常见的网络应用实例来介绍计算机网络体系结构的分层处理方法。
如图所示,主机属于网络N1,Web服务器属于网络N2,N1和N2通过路由器互连。用户在主机中使用浏览器访问Web服务器的过程如下:
- 用户在浏览器地址栏中输入Web服务器的域名(①)。
- 主机向Web服务器发送一个请求报文(②)。
- Web服务器收到请求报文后,执行相应的操作,然后给主机发送响应报文(③)。
- 主机收到响应报文后,由浏览器负责解析和渲染显示(④)。
注意,上述网络应用实例仅给出了一个简化的示意过程,因为本节的重点是计算机网络体系结构的分层处理方法,而不是浏览器和Web服务器的详细交互过程。
主机和Web服务器之间基于网络的通信,实际上是主机中的浏览器应用进程与Web服务器中的Web服务器应用进程之间基于网络的通信。我们从如图所示的五层原理体系结构的角度来看看其具体过程。
1.6.3.1 主机对数据包的处理过程
- 应用层:根据HTTP协议的规定,构建一个HTTP请求报文,用来请求Web服务器执行相应的操作。应用层将构建好的HTTP请求报文向下交付给运输层。
- 运输层:给HTTP请求报文添加一个TCP首部,将其封装成TCP报文段。TCP首部的主要作用是区分应用进程和实现可靠传输。运输层将封装好的TCP报文段向下交付给网络层。
- 网络层:为TCP报文段添加一个IP首部,将其封装成IP数据报。IP首部的主要作用是P寻址和路由。网络层将封装好的IP数据报向下交付给数据链路层。
- 数据链路层:为IP数据报添加一个首部和一个尾部,将其封装成帧。帧首部和尾部的主要作用是MAC寻址和帧校验。数据链路层将封装好的帧向下交付给物理层。
- 物理层:并不认识帧的结构,仅仅将其看作比特流,以便将比特流转换成相应的电信号进行发送。对于以太网,物理层还会在比特流前添加前导码,目的是使接收方的时钟同步,并做好接收准备。
1.6.3.2 路由器对数据包的处理过程
- (接收口的)物理层:将收到的电信号转换成比特流,并去掉前导码,然后将帧向上交付给数据链路层。
- (接收口的)数据链路层:去掉帧的首部和尾部后,将IP数据报向上交付给网络层。
- 网络层:网络层从IP数据报的首部中提取出目的IP地址,根据目的IP地址查找自己的转发表,以便决定从哪个接口转发该IP数据报。与此同时,还要对首部中的某些字段值(例如生存时间TTL字段的值)进行相应的修改,然后将该IP数据报向下交付给数据链路层。
- (转发口的)数据链路层:为IP数据报添加一个首部和一个尾部,将其封装成帧,然后将帧向下交付给物理层。
- (转发口的)物理层:将帧看作比特流,给其添加前导码后转变成相应的电信号发送出去。
1.6.3.3 Web服务器对数据包的处理过程
Web服务器收到数据包后,按网络体系结构自下而上的顺序对其进行逐层解封,解封出HTTP请求报文,如图所示。
1.6.3.4 Web服务器给主机发送HTTP响应报文的过程
Web服务器的应用层收到HTTP请求报文后执行相应的操作,然后给主机发送包含有浏览器请求内容的HTTP响应报文。与浏览器发送HTTP请求报文的过程类似,HTTP响应报文需要在Web服务器层层封装后才能发送。数据包经过路由器的转发到达主机。主机对收到的数据包按网络体系结构自下而上的顺序逐层解封,解封出HTTP响应报文。上述过程如图所示。
1.6.4 计算机网络体系结构中的专用术语
1.6.4.1 实体和对等实体
1.6.4.2 协议
注意,将两个对等实体间的通信称为“逻辑通信”,是因为这种通信其实并不存在,它只是我们假设出来的一种通信。这样做的目的,是方便我们单独研究网络体系结构某一层时,不用考虑其他层。例如,当研究运输层时,可以假设只有运输层的对等实体在进行逻辑通信,而不用顾及其他各层。
计算机网络协议有三个要素。它们分别是语法、语义以及同步。