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