本文介绍一些计算机网络的入门基本概念。
1. 辨析几种“网”
1.1. 计算机网络
首先来看一张普通的网——蜘蛛网:
那么该蜘蛛网有什么特点呢?从几何上看,无外乎有两个特征:点(红色部分)和线(蓝色部分)。
其实生活中你能见到的网,如渔网、铁网、绳网等等,都具有这个特征。
以此类推,计算机网络也具有这两个特征,只不过再叫点和线就不合适了,我们换两个名词:结点和链路。
所以,计算机网络就是由若干结点和连接这些结点的链路组成的。
结点可以是计算机、交换机、路由器等设备。链路可以暂时简单理解为网线。
下图是由五个结点(四台计算机、一台集线器)和四条链路组成的计算机网络,可以简称为网络:
在研究网络之间的关系时,我们需要把网络当成一个整体来看,忽略网络内部的复杂情况。这时,一个网络可以用一朵云来代替:
把某个网络比作一个人,结点和链路则是心肝脾肺肾和血管。研究网络内部就好比医生看病,关注的是你身体内的某个器官,以及这些器官之间的联系。
研究网络和网络之间的关系就好比人际交往,关注的是人这个完整的个体,而不关注器官,毕竟没人要和器官交朋友。
1.2. 网络的网络(互连网/internet)
网络的网络就好比“人际关系网”:
智能手机把人们连接在一起,构成了人际关系网。把人换成网络,智能手机换成路由器,“人际关系网”即是“网络的网络”。
可以暂时把路由器看做一台特殊的计算机。打个比方:把结点比作市,链路比作高速公路,网络比作省,传送的数据比作客运汽车,路由器比作省际高速公路收费站,互连网比作国。
网络之间通过路由器连接起来构成一个范围更大的计算机网络,这种网络就是“网络的网络”,可称之为互连网(internet)。
图1-4中一朵云代表了一个网络,该网络连接了多台计算机。图1-6中多朵蓝色的云(网络)连接在一起构成了一朵更大的灰色的云(互连网)。由这两张图,我们可以得出:计算机连接在一起构成网络,网络通过路由器连接在一起构成互连网。
1.3. 互联网(Internet)
互联网(Internet) 是全球最大、最重要的计算机网络。如果你真正了解了互联网,那么你也可以说自己真正了解计算机网络。
那什么是互联网呢?
我们每天都会上网,微信聊天、王者荣耀、看视频、看博客等等。我们上的这个“网”指的就是互联网。我们之所以能够一起聊天、玩游戏就是因为大家都被连接在了同一张“网”上了。这是互联网给我们用户的第一个体验:所有上网的人被无形地连在一起了,即连通。各位现在能够看到我写的博客文章,这是互联网给我们用户的第二个体验:共享资源,如果没互联网,大家就看不到我的文章了。
互联网的两个特性:连通性、资源共享。
internet和Internet要做区分:
- internet泛指多个计算机网络连接在一起而形成的计算机网络。
- Internet特指互联网,即现在全球最大、最重要的那个计算机网络,我们平时上的那个是Internet,而不是internet。
互联网发展至今,连接在其中的已经不仅仅只是我们平常使用的“电脑”了,诸如智能手机、智能手环、智能电器能都可以接入互联网中。这些设备我们可以都称之为主机或端系统。
图1-7强调了主机接入网络中,而忽略网络中的路由器或链路。
那主机是怎样接入互联网中的呢?
这就得先说说目前的互联网的基础结构了。现在的互联网是多层次ISP结构的互联网。
ISP即互联网服务提供商(Internet Service Provider),比如中国移动。ISP从互联网管理机构中申请到许多IP地址,同时也拥有通信链路和路由器等设备。我们普通用户只需向ISP交纳费用,就可获得一个IP地址,然后就可以上网了(就是交网费上网,我家是交给中国移动)。
举个例子,IP地址就像车牌一样,你只买了个车,但是没车牌是上不了路的。ISP就负责发车牌、修公路、修收费站。
IP地址经过了互联网管理机构、ISP、最后才到用户手中,并且互联网管理机构分给ISP的是一批IP地址。
这个模式类似于生产厂家、经销商、消费者。
多层次是指根据提供服务的覆盖面积大小以及拥有的IP地址数目的不同,ISP可以分为不同层次的ISP:主干ISP、地区ISP、本地ISP。
主干ISP服务面积最大(通常能覆盖全国),有几个专门的公司创建和维持。地区ISP次之,地区ISP之间可通过主干ISP连接起来。地区ISP则直接给用户提供服务。
类似于国家、省、市,用户则类似于市民。
2. 互联网的组成
互联网是全球最大的、覆盖全球的计算机网络。如此之大的网络,从工作方式上看可以分为两部分:边缘部分和核心部分
2.1. 边缘部分
边缘部分由连接在互联网上的主机组成,这部分由用户直接使用,为用户提供数据通信和资源共享的服务。
边缘部分要利用核心部分提供的服务,才能为用户提供通信和资源共享的服务。比如图1-8中任意两个人都可以利用面前的电脑进行通信。
通信的方式有两种:客户-服务器方式和对等连接方式。
一. 客户-服务器方式
这种方式是目前互联网上最常用的方式。网上的各种信息都存储在服务器上,我们需要某信息时就通过互联网的核心部分提供的服务向服务器发送请求,将其检索出来,然后服务器再发送给我们的设备。
客户是服务请求方,服务器是服务提供方。
客户和服务器还具有以下特点:
- 客户主动向服务器发送请求,服务器被动接受请求,这就要求服务器要一直运行。
- 客户需要知道服务器的地址,服务器不需要知道客户的地址。
- 客户对硬件的要求不高(普通的电脑和智能手机即可),服务器对硬件要求较高。
二. 对等连接方式
即P2P(peer-to-peer),指两台主机在通信时并不区分哪一个是服务请求方,哪一个是服务提供方。二者可以互相下载对方提供的内容。其实这种方式也是一种特殊的客户-服务器方式,只不过二者地位相等。
打个比方,客户-服务器方式就相当于学生向老师请教问题,而P2P方式就相当于学生之间互相请教问题。
2.2. 核心部分
核心部分由大量网络和连接这些网络的路由器组成。核心部分为边缘部分提供了服务——连通性和交换,所以边缘部分中的主机才能够进行数据通信和资源共享。核心部分要比边缘部分复杂的多。
核心部分中的大量网络提供了连通性,这不难理解。那交换是谁提供的?交换的是什么?分组是什么?怎么交换分组?下面就简单介绍一下这些问题。
Q1: 交换是谁提供的?
A1: 路由器
路由器是一种特殊的计算机,它的任务就是进行分组交换。
Q2: 交换的是什么?分组是什么?
A2: 交换的是分组
在网络中,我们想要传输的信息即报文(message),不是整个的传输出去,因为有的会比较长(比如这篇文章),所以通常会将其划分一个个更小的数据段,但是这些数据块中只有数据,它并不认识路,怎样使它在复杂的网络中不迷路呢?需要给它再加上一些必要的控制信息(首部),数据块加上首部就构成了一个分组。
打个比方,一个公司要运100吨货物,这么多货物一下肯定运不完,所以要分开运,比如每个集装箱运10吨。但是这10吨货物也不认识路,就需要给集装箱加个货车头,货车头中有司机和地图,所以能找到目的地。100吨货物就是我们要发送的信息(报文),每个集装箱就是一个个划分后的数据段,货车头就是首部,货车头加上集装箱才是一个完整的货车,即分组。
Q3: 怎么交换分组?
A3: 使用分组交换技术
举个例子,我们平常使用微信交流,两人之间可能相隔十万八千里,你想说的话怎么会刚好到达对方的手机上?
这就是网络核心部分最重要的功能——分组交换。
图1-6中路由器把许多网络连接在一起构成了一个更大的网络,互联网中的大大小小的网络更是不计其数,而且通信链路更是复杂多变。
你可以打开中国地图,看看上面的铁路和公路,让人眼花缭乱。互联网中的情况和这差不多。
路由器是实现分组交换的关键部件,路由器收到一个分组,会先暂时存下来,然后根据分组中的首部信息,为其选择一条合适的接口,将其转发出去。分组交换使用了存储转发技术。
举个西游记中的师徒四人去取经的例子,分组交换就是“敢问路在何方”。唐僧每到一个地方都会说借宿人家说:“贫僧是从东土大唐而来,去往西天拜佛求经的和尚”,别人一听这句话,只要不是妖怪,自然会告诉他下一步该走哪。虽然可能会走弯路,或者被妖怪抓,但是总体上肯定会离西天越来越近,最终到达。
在上面的情境中,“东土大唐”就是源地址,“西天”就是目的地址,这两个信息存在了分组的首部中,所以分组才能在网络中传送。“唐僧四人”就是分组,“借宿人家”就是路由器,分组交换就是你问路的过程,不过这种问路,路人不会告诉你全路线,只会告诉你下一步怎么走。
3. 了解计算机网络
3.1. 定义
上面介绍了好几种网,蜘蛛网、人际关系网、计算机网络、网络的网络(互连网 / internet)、互联网(Internet)。除了前两种,其余都是计算机网络。但是说了这么多,好像也没精准说清楚计算机网络到底是什么?能不能像数学定理一样,给出一个精准的定义?
我认为现在大可不必。(定义在相关书籍和网上都能检索到)
举个例子来说,在你第一次有想学计网这个念头的时候,首先做的(几乎是条件反射般的)是不是上网查一查什么是计算机网络?这说明计算机网络已经深入了我们的生活,并且我们能够很熟练地使用它。所以我认为初学计网时,不必死扣它的定义。
现在作为初学者的我们只需要提到计算机网络,就联想到一张网,然后有许多计算机连接在一起就可以了,如图1-4和图1-6。
3.2. 分类
一. 按照网络的作用范围分类:
- 广域网WAN(Wide Area Network):作用范围为几十到几千公里,能长距离地运送数据。
- 城域网MAN(Metropolitan Area Network):作用范围为5到50公里。
- 局域网LAN(Local Area Network):作用范围较小,学校和公司经常使用。
- 个人区域网(Personal Area Network):作用范围很小,10m左右,个人工作使用。
二. 按照网络的使用者分类
- 公用网(public network):电信公司出资建造的大型网络,普通用户交纳费用即可使用。
- 专用网(private network):某个单位自己建造的网络,不对本单位外的人提供使用。
3.3. 性能指标
以人为例,要衡量一个人健康或强壮与否,需要制定各种指标,比如身高体重、血压、血糖、肺活量等来定量地衡量。计算机网络同样如此,即性能指标。
在介绍计算机网络的几种性能指标前,先再看一遍前面的那个比喻:把结点比作市,链路比作高速公路,网络比作省,传送的数据比作客运汽车,路由器比作省际高速公路收费站,互连网比作国。
一. 速率
速率指的是数据的传送速率,即每秒钟传送多少位信息,也叫数据率。因为无论传送的是什么数据,都得转化为二进制数字,所以单位是bit/s或b/s或bps。
注意这里是小写的b,而平常我们下载东西时会看到的MB/s、KB/s中的B是大写的。小写的指位(bit),大写的指字节(Byte),1Byte = 8 bit。
二. 带宽
在计算机网络中,带宽用来表示网络中某通道传送数据的能力。也即单位时间内网络中某信道所能通过的最高数据率,因此单位也为bit/s。
所以带宽越宽,所能传送的最高数据率也越高。
带宽类似于高速公路的路宽,路越宽,单位时间内能通过的车越多。
三. 吞吐量
吞吐量表示在单位时间内通过某个网络的实际数据量。
四. 时延
时延指数据从网络的一端传送到另一端所需的时间,由多个部分组成。
时延可以比作你坐客运汽车从出发地到目的地的总时间。
(1)发送时延:是主机或路由器发送数据帧所需要的的时间。
发送时延 = 数据帧长度(bit)/ 发送速率(bit/s)
发送时延可以比作你的客运汽车出收费站的时间。
(2)传播时延:指电磁波在信道中传播一定的距离需要花费的时间。
传播时延 = 信道长度(m)/ 电磁波在信道上的传播速率(m/s)
传播时延可以比作客运汽车(假设速度像电磁波一样恒定)在高速公路上花费的时间。
(3)处理时延:主机或路由器收到分组后处理分组花费的时间。
处理时延可以比作客运汽车经过收费站时缴费所花的时间。
(4)排队时延:分组经过路由器后需要排队等待处理的时间和处理完后排队等待离开的时间。
排队时延可以比作进入收费站后排队等待缴费的时间。如果不需要排队,则排队时延为0.
所以,总时延 = 发送时延 + 传播时延 + 处理时延 + 排队时延。数据在网络中的时延由这四部分组成,不能只考虑一部分。
五. 时延带宽积
时延带宽积是传播时延和带宽的乘积。
如上图,用传播时延表示长方形的长,带宽表示宽,则时延带宽积即是面积。
六. 往返时间RTT
往返时间即两个结点双向交互一次所需的时间。
类似于你买了个往返票,做客运汽车从车站出发到目的地一趟,再回到车站的总时间。
七. 利用率
分为信道利用率和网络利用率两种。
- 信道利用率:指某信道有百分之几的时间是被利用的(有数据通过)。完全空闲的的信道的信道利用率为0。
- 网络利用率:指全网络的信道利用率的加权平均值。
信道或网络的利用率过高会产生非常大的时延,所以某些较大主干网ISP通常控制信道利用率不能超过50%,如果超过就要准备扩容,增大线路带宽。
很好理解,路上车多了,就容易堵车,要么把路上的车变少,要么把路修的宽一些。
3.4. 非性能指标
如果把性能指标比作氪金游戏中玩家的技术水平的高低,那非性能指标就相当于玩家的钱包厚度。人民币玩家能够弥补一些技术上的差距,如果该玩家技术又棒,钱包又鼓,那称霸游戏便不再话下。
非性能指标有:费用、质量、标准化、可靠性、可扩展性和可升级性、易于管理和维护。这些都是见名知意的名词,不用再解释了。
4. 计算机网络体系结构
4.1. 分层
观察我们的现实社会,会发现有许多事物都有其体系结构,比如社会、学校、医院、车站、人等等,这些都是复杂的集合体,正是有了体系结构,才使其能够正确运作。
以车站为例,车站客流量大,但是人们进去之后能够保持有序,该干什么就干什么,不会像无头苍蝇一样乱撞。因为车站划分好了层次,卖票窗口、安检门、候车区、上车区、出站门......井井有序。
从下向上顺次经过,乘客能在每一层完成部分动作,下层为上层提供服务,但层次之间不相互干扰。比如我们撤销卖票窗口,改为取票机,并不影响其他层次,我们只要求过了安检门能去取票机取票,取完票的能去候车区候车。如此一来,就把乘车这个“大问题”划分成了若干小问题,这些小问题比较好解决。
计算机网络也是如此,对其体系结构进行划分层次。这样就能像图1-12那样按部就班的进行工作。对计算机网络进行分层能把这个复杂大问题,也能分成若干局部小问题,便于研究和处理。
4.2. 协议分层
我们使用互联网最常做的事就是通信,那两个通信实体(比如两台电脑)之间进行通信,是随便发送信息就能接收到吗?肯定不是。
举个例子,甲乙的日常对话(乙不会英语):甲:吃了吗?
乙:吃了。
甲:What a nice day!
乙:你在说什么?????
同一种意思可以用多种语言来表达,但甲和乙不用相同的语言是无法交流的,协议就好比语言。
互联网中,涉及的两个通信实体受协议的约束,并且协议无处不在。协议定义了在两个或多个通信实体之间交换的报文的格式和 顺序,以及报文发送或接受报文或其他事件中所采取的动作。
前面的车站已经进行分层了,井然有序。现在对协议进行分层(这里只介绍五层协议模型)。
- 应用层:定义应用进程之间的通信和交互的规则。
- 运输层:负责向两台主机中进程之间的通信提供通用的数据传输服务。
- 网络层:负责为分组交换网上的不同主机提供通信服务、路由选择、IP地址管理。
- 数据链路层:负责在互连设备之间传递数据。
- 物理层:考虑怎样才能在连接各种计算机的传输媒体上传输数据比特流,而不是具体的传输媒体。
4.3. 实体、服务、协议、协议访问点
一. 实体
实体就是用于发送和接收信息的硬件或软件进程。如图1-13中的用户电脑中的软件进程。
二. 服务
在分层体系中,每层都有各自的功能,下层会为上层提供服务,但下层提供的服务并不是其全部功能。只有上层看的见的功能才算是下层提供的服务。
打个比方,员工会为领导定时汇报工作,但汇报内容是有限的、精简的。如果你把一日三餐,吃喝拉撒等鸡毛蒜皮的小事都汇报了,那会被开的。
三. 协议
协议是控制两个(多个)对等实体进行通信的规则的集合。在协议的控制下,两个对等实体间的通信使得本层能够向上一层提供服务。要实现本层协议,还要使用下面一层所提供的服务。
打个比方,员工之间需要交流进度,共同协作才能完成工作,然后向领导汇报工作。而领导需要下属汇报的工作材料才能完成领导的工作。
四. 服务访问点
上层使用下层提供的服务必须通过与下层交换一些命令——服务原语。
在同一系统中,相邻两层的实体进行交互的地方称为服务访问点(Service Access Point,SAP),它是抽象的,实际上是一个逻辑接口。
图1-14画出了上面四个名词的关系:
可以看出:协议是不同系统对等实体间的,是水平方向的;服务是同一系统上下层之间的,是垂直方向的。
本文只是介绍了一些入门基本概念,并未真正深入。比如路由器、分组交换、协议、五层模型等,都只是稍微提一下。因为真正想要了解这些,只言片语肯定不够,比如对五层模型的理解,可能需要你把这五层都看了一篇,才能在心里建立真正的五层模型。
作者简介
我是「 行小观」,我会在公众号『 行人观学』中持续更新「Java」、「Go」、「数据结构和算法」、「计算机基础」等相关文章。
\
本文章属于系列文章「 趣解计算机网络」。
\
欢迎关注,我们一起踏上编程的行程。如有错误,还请指正。