前言
作为一名CRUD的业务工程师,在实际开发中,我们接触的最多最近却最容易不受重视的技术可能就是计算机网络了,通常我们深陷于业务需求->开发的重复劳动中,用吴晟大佬(Skywalking的项目VP)的话来说就是属于劳动密集型工作,从而对分布式、微服务、各种中间件框架技术十分向往,然而了解之后,你会发现它们所涉及的技术中不可缺少的都有网络通信模块,不管是RPC还是HTTP通信,都是基于TCP/IP协议,可见其非常重要。
所以这两个星期内,我重新系统地回顾和学习了一下计算机网络,我们知道计算机网络所涉及的范围很广,从底层硬件配置支撑到上层软件协议解析,介绍起来可能就两个字-网络,但是其中包含的技术知识还是非常繁杂的,本系列我们来好好回顾下计算机网络技术中的林林总总。
基础概念
什么是计算机网络?
通俗的说就是连接多台计算机进行通信的系统,专业全面的介绍就是利用通信设备和线路将不同区域的独立的多个计算机连接起来,在网络软件和协议的管理下,实现网络的硬件、软件及资源共享和信息传递的系统。
那平时我们说的互联网和Internet是不是都是一个意思?
虽然严谨地说它们是不太一样的,但是其实都相差不多的,为什么这么说,因为互联网属于“网络的网络”,可以理解为连接不同计算机网络的网络;至于Internet,它的叫法有很多,像因特网、万维网等等,它代表的是全球性的互联网,最开始是由军用的ARPNET发展而来,逐渐被科用、商用,最后标准化为国际化民用网络。
它们的最大特点就是开放性,都是基于TCP/IP协议。
网络类别
那具体到最贴近我们生活的常见概念来说,现在生活及工作中我们基本都离不开电脑和手机,通常我们在公司电脑上使用的网络是公司内部的局域网,手机基本也是连接公司的无线网进行使用,显然以上两种都是属于网络,但是叫法却不一样,这其实是一种对网络类别的分类。
那本文我们就先介绍下网络的不同类别划分,内容也比较简单。
作用范围
首先从作用范围来划分,计算机网络可以分为下面五种:
- 广域网:指几十公里以上范围的网络,通常就代表我们现在所使用的国际互联网Internet。
- 城域网:泛指一个城市,范围在5-50公里的网络,实际情况中,这其实与局域网之间相差不大。
- 局域网:相信对在公司工作的人很清楚,应用很广泛,范围在1公里左右。
- 个人区域网:通常我们手机连接的电脑或其他手机热点的个人无线网最为代表,范围在10m左右。
使用者分类
其次从使用者角度来划分,有以下两种:
- 公用网:通常是各大运营公司,像电信、移动、联通等建设的大型网络,提供给开通的客户去公共使用,像家里的宽带等等,特点就是多台独立计算机的公用网络。
- 专用网:像一些对网络有特殊要求的企业或个人,单独建设的网络,不向其他企业和个人提供服务的私有网络。
这和你电脑上的设置->网络-属性->网络配置所代表的意思相似,主要用于区分网络属性为公用还是专用。
拓扑结构
上面两种可能从生活中直接接触的最为普遍,那如果从建设者的角度来看看我们使用的网络是怎么划分的,也就是网络的物理拓扑结构,大概有下面几种:
-
星形:有一个中心节点,其他节点与之构成点到点的连接,所有网络都受中心节点的管理和控制,一般用于网络运营商,比如中国电信,我们通过开通宽带账号,然后连接到共同的运营商的网络节点上进行网络服务,但是这种情况下中心节点的负担压力较大,容易对网络传输形成瓶颈。 -
树形:有一个根节点,下面分布着多个叶子节点,可以延伸出很多子分支,所以扩展性很高,同时每个节点下出现故障问题也易于隔离,但是和星形结构一样,如果根节点出现问题则会导致整个网络不可用。 -
总线型:广播式信道,所有节点都连接到一条传输总线上,下面的计算机通过物理接口进行连接;结构简单,易于扩展,且有较高的可靠性,适用于局域网络,但是所有节点共用一条线进行网络传输,需要有介质访问控制传输以防止冲突,同时出现问题会导致整个总线网络瘫痪,所以这种结构实际中很少使用了。 -
环形:所有节点通过点对点的依次连接形成一个闭环,有单向环和双向环结构,这样每个节点的发送数据就必须经过所有的环路节点,最终流回到发送的节点;但是这样也会导致单节点的故障会变成整个网络的故障,同时它对信道的利用率也比较低,也很少使用。 -
全连接:每个节点都与其他任意节点进行点对点的连接,这样每个节点都可以直接连接到任意节点进行传输,无需中间节点转发,效率很高,但是显而易见,如果节点很多,这样的建设成本会大大提高,所以只适用于节点数很少作用比较核心的广域网中。 -
不规则网状:与全连接的作用相同,唯一不同的是,每个节点与其他任意节点仅部分连接,这样更便于节省成本,但是由于连接的不安全性,需要有交换节点进行转发。
现实中一个复杂的网络系统往往都会考虑到实际成本和效率的平衡性,选择上面这些不同的拓扑结构混合组成建设。
交换技术
当然除了上面这些类别,还能从交换技术来划分,那什么是交换技术?
其实很简单,就是对通信资源的转发,常见的交换技术有下面三种:
电路交换 :以电路联接来为目的的交换方式,典型就是早期的电话网络,有两种不同的形式:
- 专线形式:多台电话之间通过多对电线连接起来进行通信,和全连接结构一样。
- 交换形式:使用一台或多台交换机进行转发交换,和星形结构与树形结构一样。
从上面能看出,它的特点就是面向连接,同时这条电路是独占的,在连接过程中有三个阶段:
- 建立连接:相当于拨号,寻找到目的主机;
- 通信:相当于通话,用于传输数据信息;
- 释放连接:相当于挂断,断开网络连接,释放连接资源给其他连接使用。
通过上面的连接阶段,能知道在这种连接方式下,数据的传输是可靠、迅速、不会丢失的,同时数据之间保持着原先的序列,不会错乱;但是缺点也很明显,连接时间长,线路独占无法复用,导致利用率很低,这样的方式对于计算机网络来说是不适合的。
报文交换 :以报文为数据单位的交换方式,在报文中携带目标地址、源地址、传输的数据等信息,像以前的电报就是通过这种方式传输的。
它的交换过程如下,
不同设备可以通过同一线路进行传输,由于在交换节点上采用存储转发的方式,所以这里可以通过分段分时去占用线路进行传输,相比较电路交换,它的线路利用率大大提高;但是传输的报文没有长度限制,同时每个节点都要进行存储转发,导致数据传输的整体时间延迟增加,同时中间交换节点的要求较高。
分组交换 :以分组为数据单位的交换方式,和报文交换一样都是进行存储转发,对中间交换节点要求较高,但是不同的是,分组单位的长度是一定的,每个分组都要携带地址和控制信息,整个传输过程较为复杂,这也是当前互联网中较为广泛的使用方式。
它的分组工作过程如下:
-
将较长的报文划分为较短,长度固定的多组数据报文; -
每组数据报文中添加包含目标地址、源地址、序号、长度填充等首部信息; -
发送端以分组为单位一次进行传输; -
接收端接收到多个分组之后,有序排列取出数据部分并还原成正确的原始报文。
虽然分组交换同时拥有报文交换方式的优点,但是分组必须携带首部也带来了一定的开销,同时由于数据分组的传输路径可能不相同,导致到达顺序与发送顺序可能不一致,所以需要额外的处理机制来保证接收端对分组报文的顺序解析。
身未动,心已远。
把一件事做到极致就是天分!
|