网路是怎样连接的(二) 网路分层架构

思考重点

  1. 组织垂直分层的好处是什麽
  2. 网路自上而下的流程与分层的关联

核心知识

什麽是网路分层

网路分层就是将整个复杂的网路系统专业分工,每个层次分别处理对应的工作项目,如同应用层专门处理与使用者相关的服务,但是却不会涉及到网路的连接部分,这种术业有专攻的工作模式不仅有效率还具备多种优势

为甚麽要使用网路分层,好处在哪

可替代性

以改装车为例,假如我们想换头灯,只要把相应零件拆解下来,换上想要的零组件就可,其他诸如轮胎、汽缸等等的零件也是相同意思。只要连接处不变,替换掉不同部件都是可行的,网路也是一样,假设今天我们想改变应用层通讯协定,只需要保证分层之间的通讯接口不变就可以,这种可替代性大大增加网路的应用场景以及灵活性

分工明确

因为大家都默认这种分层概念,在开发上可以拥有更高的共通性,增加程序码的可移植性和可读性,同时不同的分层只要专注在如何实现首要目标,不用考愈多余的问题

常见网路分层架构

网路分层的核心理念不单单只是增加可移植性与开发效率,其中相当重要的观念是上层使用下层提供的服务并结合自身的功能向更上层提供服务,例如传输层的目的是将两个不同主机端运行的不同应用程序建立沟通,他使用了网路层的IP查找功能以及数据链路层网卡驱动控制(涉及作业系统)等(1),基於这个概念,许多机构开发出特有的网路分层结构

TCP/IP与OSI差别

先说结论,目前网路分层架构大部分(90%以上)均遵守TCP/IP协定,原因是TCP/IP相较於OSI有更好的程序开发性以及实际应用的可能性

OSI参考模型

OSI模型是ISO机构在上世纪70年代设计出的网路分层结构,它的目的是要解决市面上产品的标准化问题,是第一个将网路分割出不同层次的模型,由OSI参考模型订定的协定称为OSI七层协定(2)。

OSI的核心目的是为了订立一个统一的规格,同时他将网路架构细分出七层,在进行学术探讨时能够更快地找出索引,可以说OSI代表的就是网路分层中的学术派

TCP/IP通讯协定

TCP/IP是由民间组织IETF建立的通讯协定族,其实所谓的TCP/IP就是网路中实际应用的通讯协定总称,看到它与OSI的主要不同了吗?TCP/IP主要面向的就是以程序开发为首要考量,先求能动,其次再来订定规格而且IETF机构宗旨就是让任何人都可以加入组织,普及了TCP/IP,可以说TCP/IP分层是主打应用的实战派

TCP/IP

TCP/IP是以安装在电脑上的程序,如何进行开发为目的作为模组化的,因此我们有必要介绍各层级在软件中的负责对象

  • 应用层→应用程序
  • 传输层→作业系统
  • 网路层→作业系统
  • 数据链路层→驱动程序与网路介面

接下来我们将简单介绍4个分层分别负责网路传输中的任务,并且以写信给对方作为类比

应用层

应用层直接提供服务给使用者,例如HTTP(超文本传输协议)就是像server发起请求,并把结果呈现给使用者。应用层不需要考虑额外的数据传输问题,当两个不同设备想进行通信时,应用程序就把应用数据发给传输层

以送信做为比喻的话就好比将想传达的讯息写在信中,直接把寄件人的目的表达出来

传输层

传输层的任务主要是连结两台端节点上的应用程序,并使其能够沟通,因为每台主机有可能同时运行多个应用程序,因次我们需要一个特殊的讯息来分辨到底是谁与谁在进行沟通,而这个特殊的讯息就是Port(端口)(3)

以送信做为比喻的话,传输层就好比填上寄件人与收件人地址,因为同一个地址有可能同时存在多名成员,我们必须确认是谁与谁在进行联系

网路层

为了实现应用程序之间的沟通,传输层需要仰赖网路层提供的服务

网路层提供处理数据的最小单位Packet(封包),并且查询IP地址,好让核心网(4)中的路由器进行IP跳转。IP协议是网路层最常使用的协议,他提供两大重要功能:

  • IP地址查找→下一个目的地该往哪里走
  • 路由→该选择哪一条路线

以送信作为比喻的话,就好比收件地址,例如:台北市信义区XXX里XXX巷XX号,让邮差能够依照地址不断查找收件人住址,并且邮差有能力判断应该走哪一条路线比较有效率

数据链路层

当我们由网路层得知下一跳目标IP地址时,就可以进行IP地址跳转,但问题来了,由於在网路核心中存在着无数台网路交换设备,要如何知道这个IP地址对应的是哪台路由的?

网路中每台配有网卡的设备都会有一个代表它的MAC地址,数据链路层要处理的就是藉由ARP协议计算该IP地址对应的MAC地址(5),这样就可以知道要转发给谁了
以送信做为比喻的话,数据链路层就像邮差送信途中不断查找门牌号码,决定该走哪条路的这个行为

物理层

之所以没有将物理层列入具体的TCP/IP协议族中,是因为TCP/IP是面相软件应用开发的,物理层的用意是将数据练路层的数据转换成01数位讯号,让其能够在通信介质上传输

综合以上观点,假如只讨论TCP/IP协定,我们就只需要专注应用层、传输层、网路层、数据链路层,但如果我们探讨的是网路分层协定的架构,就需要把物理层算进去

以送信做为比喻的话,物理层就像是邮差的交通工具

数据的封装性

从上图我们可以看出网路分层中,每往下走一阶层就会将原有的数据包加上一个专属的头部消息,或者对消息封包做分割处理,这种层层堆叠的处理模式有利於各层专门处理相应的任务,下层不断地向上层提供他自己本身的服务,最终我们透过物理传播媒介,将数据链路层包装後的消息封包转换成二进位消息後传送出去

相反的,每个分层透过解析头部消息,执行该层所提供的服务,并将消息主题上交给上一层,最後对方的应用程序就可以获取本地应用程序想交付的应用程序消息,这些特性都体现了网路分层架构中的一个重要特性: 封装性

网路传输过程中设备都应该具备所有分层吗

不用,例如主机端节点的目的是为了要传送应用程序消息,所以需要使用到应用层,但有些网路核心中的路由器,只需要使用到IP查找与跳转的功能,因此往往只具备数据链路层与网路层,而有些交换机则只需要计算MAC地址,这也代表他仅仅只需要数据链路层的功能而已

(1):分层不单单是使用软件来实现,例如应用层和传输层几乎是使用软件来达成,但网路层则使用了软件以及硬体来达成
(2):OSI的各层工作原理将会在深入理解篇介绍
(3):通常服务器上的端口号都是事先规定好的,例如Web浏览器是80
(4):计算机网路概述(一) 网路是甚麽 网路核心章节
(5):更精确地说应该是每一个网卡都有相应的MAC地址,因为同一台电脑可同时存在多个网卡

相关文章: 计算机网路概述(一) 网路是甚麽


<<:  Day05-Variables

>>:  Day5 常见的HTML元素

Day08-gitlab job 的工作流

Job 昨天的范例终究是一个 Job 每一个 Job 是最小的单位 但是如果我们写多个 Job 的时...

离职倒数1天:铁人赛心得

今天是最後一篇 我居然写完了 中间还去了屋久岛 三天两夜完全没网路 一天打越洋电话回台湾叫朋友帮忙发...

【DAY 3】 Microsoft 365 开发人员计画... 包山包海,但你需要知道你想要什麽

哈罗,大家好,欢迎跟着温秘书继续 Microsoft 365 开发人员计画。 在昨天完成基础设定後,...

用爬虫下载图片

这次我要将电影的海报下载下来,那我们就开始吧。 依赖包主要是这两个以及所要取得资料的网页路由 接下来...