计算机网络——概述
1. 概述
互联网(Internet)是一个世界范围的网络。即它是一个互联了全世界数十亿计算设备的网络,这些设备包括电脑,服务器,智能手机,平板电脑,家用电器等。
网络是由若干结点(node)和连接这些结点的链路(link)组成。网络中的结点可以是计算机,集线器,交换机,路由器等(这些设备后面的文章都会介绍)。
如上图,有三台计算机通过三条链路连接到一个集线器中,构成了一个简单的网络。多数情况下,我们可以用一朵云表示一个网络,这样可以不去关注网络中的相当复杂的细节问题,只关注我们关心的问题。
网络之间还可以同通过路由器互连起来,这就构成了一个覆盖范围更大的计算机网络,也称为网络中的网络。如下图
有时也会把有关的计算机画在云的外面,这样云里面就只剩下许多路由器和连接这些路由器的链路了。这两种表现方式都可以,其中与网络相连的计算机常称为主机(host)。
2. 互联网的组成
互联网的结构虽然非常复杂,并且在地理上覆盖了全球,但从其工作方式上,可划分为以下两大块:
- 边缘部分:由所有连接在互联网上的主机组成,这部分是用户直接使用的,用来进行通信(传送数据)和资源共享。
- 核心部分:由大量的网络与连接这些网络的路由器组成。这部分为边缘部分提供服务(提供连通性与交换)。
2.1 边缘部分
处在互联网边缘部分的就是连接在互联网上的所有的主机,这些主机又称为端系统 (end system)。
端系统在功能上可能有很大差别:
- 小的端系统:普通个人电脑、智能手机、网络摄像头等。
- 大的端系统:非常昂贵的大型计算机或服务器。
2.2 核心部分
网络核心部分是互联网中最复杂的部分,因为网络中的核心部分要向网络边缘中的主机提供连通性,使任何一台主机都能够向其他主机通信。
在网络核心部分起特殊作用的是路由器 (router)。路由器是实现分组交换 (packet switching) 的关键构件,其任务是转发收到的分组。
2.2.1分组交换
在各种网络应用中,端系统彼此交换报文(message)。报文能够包含协议设计者需要的任何东西,为了从源端系统向目的端系统发送一个报文,源将长报文划分为较小的数据块,称之为分组(packet)。
比如上图的报文,分成三段,在每个数据段前面,加上一些由必要的控制信息组成的首部(header),就分别构成了三个分组。正因为分组的首部中包含了诸如目的地址和源地址等重要的控制信息,每一个分组才能传输,并送往终点。
2.3 总结
互联网服务提供者 ISP(Internet Service Provider):例如中国电信,中国移动,中国联通等公司都是我国的ISP。
上图就可以很好的看出网络的边缘部分和核心部分的分布和关系
3. 计算机网络的性能指标
3.1速率
3.2 带宽
3.3 吞吐量
3.4 时延
时延(delay或latency)指数据(一个报文或分组,甚至比特)从网络(或链路)的一端传送到另一端所需的时间。
3.4.1 发送时延
发送时延(transmission delay)是主机或路由器发送数据帧所需要的时间,也就是从发送数据帧的第一个比特算起,到该帧的最后一个比特发送完毕所需的时间。
3.4.2 传播时延
传播时延(propagation delay)是电磁波在信道中传播一定的距离需要花费的时间。
电磁波传播速率:
- 自由空间的传播速率是光速 = 3.0 ⅹ 108m/s
- 在铜线电缆中的传播速率约 = 2.3 ⅹ 108 m/s
- 在光纤中的传播速率约 = 2.0 ⅹ 108 m/s
3.4.3 处理时延
主机或路由器在收到分组时,为处理分组(例如分析首部、提取数据、差错检验或查找路由)所花费的时间,一般不方便计算。
3.4.4 排队时延
分组在经过网络传播时,要经过许多路由器。但分组在进入路由器后要先在输入队列中排队等待处理。在路由器确定了转发接口后,还要在输出队列中排队等待转发,这就产生了排队时延。排队时延的长短往往取决于网络当前的通信量,当网络的通信量很大时会发生队列溢出,使分组丢失,这相当排队时延为无穷大。
3.4.5 总结
从上图可以看出
- 发送时延发生在机器内部的发送器中,与传输信道的长度(或信号传送的距离)没有任何关系。
- 传播时延则发生在机器外部的传输信道媒体上,而与信号的发送速率无关。信号传送的距离越远,传播时延就越大。
- 总时延 = 发送时延 + 传播时延 + 处理时延 + 排队时延
3.5 时延带宽积
3.6 往返时间RTT
3.7 利用率
3.8 丢包率
4. 计算机网络体系结构
如上图,OSI的七层协议体系结构的概念清晰,理论也比较完整,但是它既复杂也不实用。而且基于 TCP/IP 的互联网已抢先在全球相当大的范围成功地运行了。因此在后面的学习中往往采取折中的方法,即综合OSI和TCP/IP的优点,采用一种只有五层的体系结构。
4.1 具有五层协议的体系结构
4.1.1 应用层
应用层是体系结构中的最高层。应用层的任务是通过应用进程间的交互来完成特定网络应用。应用层协议定义的是应用进程(指主机中正在运行的程序)间通信和交互的规则。
在互联网中的应用层协议很多,如域名系统DNS
,支持万维网应用的HTTP
协议,支持电子邮箱的SMTP
协议等。
4.1.2运输层
运输层的任务是负责向两台主机中进程之间的通信提供通用的数据传输服务,应用进程利用该服务传送应用层报文。
运输层主要使用以下两种协议:
- 传输控制协议TCP(Transmission Control Protocol):提供面向连接的,可靠的数据传输服务,其数据传输的单位是报文段(segment)。
- 用户数据报协议UDP(User Datagram Protocol):提供无连接的服务,不保证数据传输的可靠性,其数据传输的单位是用户数据报。
4.1.3 网络层
网络层为分组交换网上的不同主机提供通信服务。
两个具体任务:
- 路由选择:通过一定的算法,在互联网中的每一个路由器上,生成一个用来转发分组的转发表。
- 转发:每一个路由器在接收到一个分组时,要依据转发表中指明的路径把分组转发到下一个路由器。
互联网使用的网络层协议是无连接的网际协议 IP (Internet Protocol) 和许多种路由选择协议,因此互联网的网络层也叫做网际层或 IP 层。
在发送数据时,网络层把运输层产生的报文段或用户数据报封装成分组或包进行传送。在TCP/IP协议中,由于网络层使用IP协议,因此分组也叫做IP数据包,或简称为数据报。
4.1.4 数据链路层
数据链路层常简称为链路层。我们知道,两台主机之间的数据传输,总是在一段一段的链路上传送的。如下图
在两个相邻节点之间传送数据时,数据链路层将网络层交下来的IP数据报封装成帧(frame),在两个相邻结点间的链路上传送帧。每一帧包括数据和必要的控制信息(如地址信息等)。
4.1.5 物理层
物理层要实现比特(0 或 1)的传输,确定连接电缆的插头应当有多少根引脚,以及各引脚应如何连接。
物理层考虑的是怎样才能在连接各种计算机的传输媒体上传输数据比特流。
物理层为数据链路层屏蔽了各种传输媒体的差异,使数据链路层只需要考虑如何完成本层的协议和服务,而不必考虑网络集体的传输媒体是什么。
注意:传递信息所利用的一些物理媒体,如双绞线、同轴电缆、光缆、无线信道等,并不在物理层协议之内,而是在物理层协议的下面。
4.2 总结
下面以一个例子结束本篇文章,这个例子是简化的,许多细节后面的文章再讲。
假设网络拓扑如下所示,主机属于网络N1,Web服务器属于网络N2,N1和N2通过路由器相连。
我们使用主机中的浏览器来访问Web服务器,如下图,当访问链接https://www.csdn.net/
后,主机会像Web服务器发送请求,Web服务器收到请求后,会发回相应的响应,主机的浏览器受到响应后,将其解析为具体的网页内容显示出来。需要注意的是,主机和Web服务器之间基于网络的通信,实际上是主机中的浏览器应用进程与Web服务器中的Web服务器应用进程之间基于网络的通信。
从主机端按体系结构自顶向下的顺序来看
- 应用层按HTTP协议的规定,构建一个HTTP请求报文,应用层将HTTP请求报文交付给运输层处理
- 运输层给HTTP请求报文添加一个TCP首部,使之成为TCP报文段,运输层将TCP报文段交付给网络层处理
- 网络层给TCP报文段添加一个IP首部,使之成为IP报文段,从而能被路由器转发、网络层将IP数据报交付给数据链路层处理
- 数据链路层给IP数据报添加一个首部和一个尾部使之成为帧,该首部的作用主要是为了让帧能够在一段链路上或一个网络上传输,能够被相应的目的主机接收,而该尾部能检查所接收到的帧是否由误码。数据链路层将帧交付给物理层
- 物理层将帧看作比特流,假设N1是以太网,则添加前导码后变换成相应的信号发送到传输媒体
- 信号通过传输媒体到达路由器,物理层将信号转化为比特流,然后去掉前导码,将其交付给数据链路层
- 数据链路层将帧的首部和尾部去掉后,将其交付给网络层。这实际上交付的是IP数据报,网络层解析IP数据报的首部,从中提取出目的网络地址,然后查找自身的路由表,确定转发端口,以便进行转发。
- 网络层将IP数据包交付给数据链路层,数据链路层给IP数据报添加一个首部和一个尾部使之成为帧,数据链路层将帧交付给物理层
- 物理层和前面操作相同,将信号传输给服务器。然后服务器也是自底向上一层一层地交付,直至到达应用层
- 应用层对HTTP数据进行解析,然后给主机发送HTTP响应报文,与之前过程类似 HTTP响应报文最终到达主机,将响应数据解析出来,呈现在浏览器界面上。
参考书籍
[1]James F. Kurose / Keith W. Ross.计算机网络(原书第7版) 自顶向下方法.机械工业出版社,2018.
[2] 谢希仁. 计算机网络(第7版).电子工业出版社,2017.
[2] https://space.bilibili.com/360996402