我们可以先想想Web(网)的定义是甚麽?人际关系网、交通网路、蜘蛛网?其实说穿了符合以下条件的就可以成为网状结构:
也就是网路的结构由Node(节点) 与 Link(链接) 组成,我们试着把视角切换到计算机领域,节点设定成电脑上的应用程序,而链接则可以看成网路的连接设备,例如光纤、路由器、交换机等,这个就是计算机网路的雏形
接者我们可以把诸多小型网路结合更大的网路,这就让网路的规模又更上一层,例如我们把多个社区内的家用网路结合成一个区域网路,这种组合模式让使用者可以访问到更多用户,网路的网路形成更大格局的现象就是俗称的网际网路 或 互联网(1),下图是一个简单的网路沟通样貌:
在图中使用者处於不同网域中,他们代表节点也可以表示为 host(端系统) 以及end(端系统) ,这些端系统可以是电脑、手机、平板,以及近几年火热的物联网设备(例如Apple Watch)只要设备本身具要连网传输与发送功能我们都可以把他们定位程端系统
这些端系统透过一个家用路由器或公用WiFi接入网路,再透过路由器与交换机(2)交互查找最终到达目的地,整个讯息沟通的过程均遵守特定的通讯协定
待接收方接收并解析完消息封包後,回应一个消息封包给发送方,完成沟通的动作,其实网路就是不断实现这种沟通模式的通称
在软件的视角,网路可以这样定义:
分布式的应用进程与使用者直接接触,使用了他与他之下的所有服务,目的是为了与另一个分布式应用进程达成讯息交替与应用。网路的每一个层次都是运用他之下的服务结合该层特色为上层提供更完整服务。
在硬体的视角,网路可以这样定义:
网路是由终端设备、传输媒介与多种转发设备组成,目的是将类比资讯转换成高低电位,并藉由传输设备将讯息流转发至目标终端,再将数位讯号转换成使用者能够理解的类比讯号。
其实计算机网路是网际网路的一个子集,也就是说我们把焦点关注在计算机之间常用的通讯协定以及运行在计算机上的应用进程之间的沟通与传输方式,常见的计算机网路会涉及到Web应用、IP路由查找、交换机、socket等应用
甚麽是通讯协定?通讯协定是一种对等双方约定俗成的沟通方式,说大白话就是我们两个都可以听得懂的表达方式,你可以想像你在路上逢人就讲法语,应该大部分人都听不懂你在讲什麽吧... 计算机网路也是一样,在不同层次(3)之间都存在着多种不同的沟通方式,是要先确认对方身分在进行沟通,还是一上来就要求对方传递重要消息,这种状况可以说是国情不同也不为过吧
我们接下来把格局再拉大,既然客户端的目的是向服务器请求服务,那麽整体的流程是怎样达成的呢?
首先必须把整体架构分层3个层次来看,分别是:
其实网路的核心理念就是client-sever架构,也就是说客户端项服务端请求服务,服务端依照需求满足客户端,这种概念可以体现在网路的交互应用中,而为了满足所谓的CS架构,我们必须要处理消息的主体与服务类型,这就是网路想解决的问题
下图把客户端项服务器请求资料的整个流程概括出来,你也可以思考如过今天我在浏览器的网址栏输入URL以後会发生甚麽事,这个问题可以用以下的流程图当成一个参考
客户端可以是你的主机、手机、笔电等任何可以发请请求的连网设备,又可以称为host或着是Node(端系统)。我们透过运行在主机上的应用程序,例如网路浏览器等直接与使用者进行互动,透过应用层的通讯协定向下层提供服务内容,最後把消息封装成packet(封包) 然後利用网路的接线设备将线路接入区域路由(例如你家的WiFi分享器)
接入网顾名思义是将本机的类比消息转算成数位消息後再透过接线传入本地电信营运商的一个步骤,简单来说就是透过物理媒介,将端系统连上第一个路由的网路(4) ,例如透过双绞铜线实现的ADSL、乙太网等,以及无线的WiFi
网路核心代表数据封包经过接入网进入的骨干网路,其中封包会在电信业者提供的区域路由中不断地跳转,最终达到目的地,因此网路核心的重点观念会是IP的查找以及封包的传输效率、延迟、吞吐量等问题(5)
网际网路服务提供商,就是提供网路服务的电信业者,例如中华电信。我们可以把ISP想像成一个区域的电话薄,可以依照这个电话薄找到该区域的电话号码,这个范围可能是一个里,但是假如我要查找别的县市的目标号码,我们需要查找县市级别的电话簿,然後再依照区域缩小到当地里级别的电话薄完成查找,相对的全球区域的查找就要使用到国家级别的电话簿
ISP的概念也是一样,是有分等级的,更高级别的ISP好处是可以跨更大的区域,但是相对收取更高额的费用会使使用者怯步,因此网路在进行IP查找时会尽可能地使用低等级的ISP,达到成本最佳化。从ISP的概念是不是更可以理解一开始的那句话网际网路就是网路的网路
网际网路中使用的交换机制主要有两种,目前多以分组交换为主:
分组交换的特色是共用与高效,优点是多个节点可以共用一条通讯链路作为封包交换的渠道,也就是一条100MB的数据链路在使用通畅时可以达到100MB,只要该条链路的传输速度达於封包进来的速度,那麽多个节点发布消息时,该链路只要按照先後顺序即可即时的处理这些消息封包
但他的缺点是假如封包大小过大或链路处理速度较慢造成数据处理的延迟(6),例如同一时段假如有多名使用者正在使用,便需要排队等待前面的使用者完成封包的处理
电路交换的特色是稳定,则是将一条传输的链路等分给多个使用者使用,也就是假设一条100MB的传输链路分给10个使用者,每个人将会分配到10MB,不管有端少使用者正在使用这个数据链路,传输速度依然是妥妥的10MB
但电路交换在使用前需要先进行网路的拨接才能进行连网,造成即时性不佳,另外使用者也没办法完全享受传输的极致效能
以餐厅来作为比喻,分组交换就像是知名连锁店,只要店内还有座位或者吃完离开人数大於排队人数,那麽我们就可以随时想吃就吃,但是有可能发生客满的状况。电路交换就像是很少人知道的私房餐厅,一般不接收普通顾客,需要额外电话预约,且对一天的人数限制有严格的要求,但是一旦定位成功就一定保证能吃到
服务器也是属於端节点,网路边缘的一份子。 服务端在应用层上运行的应用程序会依照客户端的请求,将资料库中的数据返回给客户端。服务端一般会配置防火墙,让使用者没办法完全得知服务端消息,同时也管控请求消息是否安全,服务端缓存的功能则是保存服务端返回给客户端的数据,要是下一次客户端再请求相同数据,则直接由缓存服务端返回即可
(1): 网际网路的英文为internet,而所谓的Internet(大写开头),泛指运行在TCP/IP协议架构之上的网路设备,在全球区域内互相连线的超大型网际网路,又可以称为英特网
(2): 路由器的作用是查找下一步该跳转的IP地址,而交换机则是查询网卡地址,寻找主机,双方所使用到的分层有所不同,後面章节会提到
(3): 这里泛指TCP/IP分层
(4): 这里泛指封包会接触的一连串路由器中的第一个
(5):这部分会在後续章节中更新
(6):封包的传输效率将会再深入理解篇介绍
>>: Day2. Ruby 的基本介绍 - 让大家认识并爱上Ruby
Python程序语言总共有二种回圈的语法。第一种是"for"回圈,另外一个则是&...
Day30 - 完赛、感想、心得 心得 坚持 - 坚持阿,哪次不坚持 当初觉得30天应该不难吧,就每...
Colab连结 图片标准化 Image Normalization 不做可以吗?小实验实测差别 一般...
大家安安,小弟弟要来接续上一篇的结尾 上一篇的进度是列出了宠物的清单 而现在我们想实现在点击清单的时...
在这篇文章,我们来讨论 GitHub 与 DevOps 之间的关系,我们将从各种角度来讨论,GitH...