1. 计算机网络体系结构干嘛的?

  刚开始学习网络相关知识,感觉很复杂,平时经常听到的什么IP/MAC/TCP/UDP/HTTP/网关/路由......等等一些词汇,但一直搞不太清到底是什么,怎么用,实际上这些东西是计算机网络体系结构中的一部分,设计出来就是为了更好的解决计算机之间的网络通信问题,但是连接在网络上的两台计算机需要进行通信时,需要考虑很多问题,比如:

  •   这两台计算机之间必须有一条传送数据的通路
  •   告诉网络如何识别接收数据的计算机;
  •   发起通信的计算机必须保证要传送的数据能在这条通路上正确发送和接收;
  •   对出现的各种差错和意外事故,如数据传送错误、网络中某个节点交换机出现故障等问题,应该有可靠完善的措施保证对方计算机最终能正确收到数据。

  计算机网络体系结构标准的制定正是为了解决这些问题从而让两台计算机(网络设备)能够像两个知心朋友那样能够互相准确理解对方的意思并做出优雅的回应。也就是说,要想完成这种网络通信就必须保证相互通信的这两个计算机系统达成 高度默契。事实上,在网络通信领域,两台计算机(网络设备)之间的通信并不像人与人之间的交流那样自然天然,这种 计算机间高度默契的交流(通信) 背后需要十分复杂、完备的网络体系结构作为支撑。那么,用什么方法才能合理地组织网络的结构,以保证其具有结构清晰、设计与实现简化、便于更新和维护、较强的独立性和适应性,从而使网络设备之间具有这种 “高度默契” 呢?

  人类利用分层思想就设计了一种网络通信结构,来解决上述及其他各种问题。


2. 当初设计完善网络体系结构的思路

为了更好的理解网络结构为何设计成了当下的“样子”,当初是怎么想的?首先看一下分层思想什么意思,网络系统又是怎么用的。也就是说,我们可以将这个庞大而复杂的问题转化为若干较小的、容易处理的、单一的局部问题,然后在不同层次上予以解决,这也就是我们所熟悉的 分层思想 。在计算机网络体系结构中,分层思想的内涵就是: 每层在依赖自己下层所提供的服务的基础上,通过自身内部功能实现一种特定的服务。

2.1 分层思想在日常生活中的应用

2.1.1 邮局或者快递业务的处理-分层看

  在我们的日常生活中有很多分层思想的应用,比如快递系统的组织结构:

        

  从上图我们可以看出,一个完整的事件,我们分成了好几层,其实就是整个过程的各个阶段,而同时你会发现,上面的工作依赖下面的工作的进行与完成,但无需参与其他层的具体工作,例如:用户和用户之间的通信依赖于下层的服务,但是他们并不需要关心快递、运输等细节,也就是说,寄信者只需将写好的信交给快递员而收信者只需从快递员手中查收信件即可。类似地,快递员也只需要从寄信人手中拿到信件并交给分检员或将信件从分检员手中拿走并交给收信人即可,至于分检员为何要把这份信交给他进行投递(事实上,每个快递员会负责某个片区,分检员根据收信人地址将信件分发给不同的快递员),他不需要关心也没必要关心。显然,在这个快递系统中,各个角色(用户、快递员…)在功能上相互独立却又能协调合作达成一种 “高度默契”,这在很大程度上得益于分层思想的理念和应用。下图更直观地体现了该系统的分层思想:

            

2.1.1 国际对话-分层看

两位哲学家,他们一个会讲阿拉伯语和英语,一个会讲汉语和法语,哲学家1希望把“I like rabbits”感情传递给哲学家2,由于没有共同语言,他们都雇佣了一个翻译,放在第二层,哲学家1通过1/2层间的接口将“I like rabbits”传递给翻译,两位翻译都至少有一种双方都能理解的语言:如荷兰语,消息被翻译成荷兰语,选择语言是第二层协议的事情,也就是说翻译们的事情,然后翻译将消息交给秘书第三层,让她送出去,至于怎么送只有秘书知道,传真或者电话。当消息到达的时候,翻译成汉语传递给哲学家2。

或许存在疑问,翻译1不能直接将“I like rabbits”翻译成汉语,然后直接表达给哲学家2吗?
事实上,这是不符合常理的,因为翻译1和哲学家2不具有对等的地位,无法直接通信,正如两国的国家领导人谈话,后面各有一个翻译一样。

2.2 分层思想的优点

 2.2.1 耦合度低(独立性强)

上层只需通过下层为上层提供的接口来使用下层所实现的服务,而不需要关心下层的具体实现。也就是说,下层对上层而言就是具有一定功能的黑箱。

 2.2.2 适应性强

只要每层为上层提供的服务和接口不变,每层的实现细节可以任意改变。

2.2.3 易于实现和维护

把复杂的系统分解成若干个涉及范围小且功能简单的子单元,从而使得系统结构清晰,实现、调试和维护都变得简单和容易。也就是说,对于设计/开发人员而言,这种方法使设计/开发人员能够专心设计和开发他们所关心的功能模块;对于调试/维护人员而言,这种方法也方便调试/维护人员去处理他们所负责的功能模块。


3. 计算机网络体系结构的概念与标准

如你所料,计算机网络体系结构也采用了分层的思想。那么,既然计算机网络体系结构的设计采用的是分层思想,那么它就必须得解决以下几个问题:

  •   网络体系结构应该具有哪些层次,每个层次又负责哪些功能呢?   (分层与功能)
  •   各个层次之间的关系是怎样的,它们又是如何进行交互的呢?   (服务与接口)
  •   要想确保通信的双方能够达成高度默契,它们又需要遵循哪些规则呢?  (协议)

3.1 计算机网络体系结构的概念

  根据上面的几个问题,计算机网络体系结构必须包括三个内容,即分层结构每层的功能服务与层间接口和协议。所以,计算机网络体系结构的定义为:

  在计算机网络中,层、层间接口及协议的集合被称为计算机网络体系结构。

3.2 计算机网络体系结构的标准

  目前,由国际化标准组织ISO制定的网络体系结构国际标准是 OSI七层模型,但实际中应用最广泛的是 TCP/IP体系结构。换句话说,OSI七层模型只是理论上的、官方制定的国际标准,而TCP/IP体系结构才是事实上的国际标准。其实就是因为OSI标准没有市场背景,也就只是理论上的成果,并没有过多地应用于实践。

两种结构的示意图如下:

OSI七层模型:

TCP/IP体系结构: 


4. 计算机网络体系结构的分层原理

4.1 基本概念

  在介绍网络体系结构的分层原理前,我们有必要先了解以下几个基本概念,其对应关系如下图所示:

              

  • 实体: 任何可以发送和接收信息的软硬件进程;
  • 对等层: 两个不同系统的同一层次;
  • 对等实体: 分别位于不同系统对等层的两个实体;
  • 接口: 上层使用下层所提供的功能的方式;
  • 服务: 某一层及其以下各层的所完成的功能,通过接口提供给相邻的上层;
  • 协议: 通信双方在通信过程中必须遵循的规则。

4.2 网络体系结构模型

              

  我们在网络中的任何一个系统都是按照上图中的层次结构模型来组织的,该模型具有以下特点:

  • 同一网络中,任意两个端系统必须具有相同的层次;
  • 每层使用其下层提供的服务,并向其上层提供服务;
  • 通信只在对等层间进行,当然这里所指的通信是间接的、逻辑的、虚拟的,非对等层之间不能互相“通信”;
  • 实际的物理通信只在最底层完成;
  • Pn代表第n层的协议,即第n层对等实体间通信时必须遵循的规则或约定。

4.3 对等层通信的实质

  在逻辑上,网络分层体系结构原理允许不同主机的对等实体进行通信,但禁止不同主机非对等实体间进行直接通信;在物理上,每一层必须依靠下层提供的服务来与另一台主机的对等层通信,这是 对等层通信的实质 。也就是说,模型中的上层(第n+1层)使用下层(第n层)所提供的服务,是下层(第n层)服务消费者;而模型中的下层(第n层)向上层(第n+1层)提供服务,是上层(第n+1层)的服务生产者(提供者)。

  进一步地,源进程传送消息到目标进程的过程是这样子的: 首先,消息送到源系统的最高层,紧接着消息从最高层开始自上而下逐层封装 ,最后该消息经物理线路传输到目标系统。而当目标系统收到信息后,其会将该信息 自下而上逐层处理并拆封,最后由最高层将消息提交给目标进程。这个处理过程与邮政通信过程类似,如下图所示:

            

4.4 协议

  正如上图所示,发信人和收信人对信件内容的共识就是二者之间的协议,正是由于这种协议的存在使得他们都能读懂信的内容并理解对方的意思,达成默契;类似地,寄件邮局与收件邮局也能对信件的传递达成共识,也就是说,有一套规则来保证邮局之间的“ 默契,二者间的这种默契要么能把信件完好无损地送给收信人,要么能够把信件完好无损地退给发信人;同样地,运输系统也能对信件如何运输达成共识,而正是由于这种共识,信件才能到达指定邮局也就是说,对等实体间的这种默契(共识)就是协议。

  同样地,在计算机网络体系结构中,不同层需要完成不同的功能或者提供不同的服务。比如,计算机网络体系结构应该提供对应的差错控制,从而使对等层的通信更加可靠;除此之外,还应该提供流量控制以控制发送端的发送速率以便接收端能来得及接收消息;分段和重装机制也很必要,就是说发送端在发送消息时应该将数据块分成更小的单位以便传输,而接收端能够准确地将这些数据块重新组合并还原数据的原貌; 通信会话复用同一条低层连接可以提高效率;建立连接和释放连接机制是不同主机通信的保障,等等。

上面列举的这些功能(服务)实际上都是由计算机体系结构中具体的某一层来实现的,更具体地说,主要是通过每层相应的通信协议来实现这些功能的。也就是说,计算机间网络中所有的通信活动都是由协议控制的,也正是各种各样的协议保证了计算机间高度默契的通信。


5. 通信协议

上一节的最后一部分非常形象地介绍了协议的内涵,使我们对网络通信协议有了一个感性的理解。实际上,人类在相互交流过程中也遵守某种“协议”,只不过这种协议是一种文化而已。下图对比了人相互交流的协议和计算机间相互通信的协议:       

5.1 协议的概念

  通信协议定义了 网络实体间发送报文和接收报文的格式、顺序以及当传送和接收消息时应采取的行动(规则)。这个定义指明了通信协议的三要素:

5.1.1 语义

语义是指对协议中各协议元素的含义的解释,例如:在HDLC协议中,标志Flag(7EH)表示报文的开始和结束;在BSC协议中,SOH(01H)表示报文的开始,STX(02H)表示报文正文的开始,ETX(03H)表示报文正文的结束。

5.1.2 语法

语法是指协议元素与数据的组合格式,也就是 报文格式,如下图所示:

5.1.3 时序

时序是指在通信过程中,通信双方操作的执行顺序与规则,如本节开头的图示。

协议三要素之间的关系:

计算机间通信的本质就在于信息报文的交换,而信息报文也就是我们在下面提到的协议数据单元(PDU)。实际上,语法规定了PDU的格式;而在此基础上,语义赋予了PDU的特定内涵;时序通过控制这种具有特定语义的报文来实现计算机间的通信,也就是说,时序是通信规则的体现。

  现在我们类比一下人类的对话来理解协议三要素之间的内在联系。假设这样一个场景,Rico在和Livia交谈,Rico说:“Livia,早上好啊~”,这时Livia会莞尔一笑并答道:“早上好,Rico~”。对于这段会话,语法就是这些汉字/语句的组织规则,正是由于这种组织规则这些简单汉字的叠加才有了一定的语义,而时序保证了你问我答的这种会话(交流)的进行,更进一步地,时序保证了通信各方对PDU语义的理解并做出恰当的回应。

  总的来说,语法是语义的载体,而时序又是对语义的有序组织。正是基于这种关系,计算机在通信时才得以保持高度默契。

  实际上,在网络体系结构中,每层可能会有若干个协议,但一个协议只隶属于一个层次。在实现方式上,协议可以由软件或硬件来实现。比如,网络通信协议软件、网络驱动程序,网络硬件等。常用协议组有:TCP/IP(Windows、Unix、Linux、…)、NetBEUI(Windows)、IPX/SPX(NetWare、Windows)等。

5.2 协议数据单元(PDU)

  计算机网络体系结构中,对等层之间交换的信息报文统称为 协议数据单元(Protocol Data Unit,PDU)。PDU由 协议控制信息(协议头) 和 数据(SDU) 组成,如下图所示。             

  其中,协议头部中含有完成数据传输所需的控制信息,比如地址、序号、长度、分段标志、差错控制信息等。传输层及以下各层的PDU均有各自特定的名称:

  • 传输层 —— 段(Segment)
  • 网络层 —— 分组/包(Packet)
  • 数据链路层 —— 帧(Frame)
  • 物理层 —— 比特(Bit)

5.2.1 PDU的封装

  在计算机网络体系结构中,下层把上层的PDU作为本层的数据加以封装,然后加入本层的协议头部(和尾部)形成本层的PDU,如下图所示。在这里,封装就是在数据前面加上特定的协议头部。因此,数据在源站自上而下递交的过程实际上就是不断封装的过程,而到达目的地后自下而上递交的过程就是不断拆封的过程,如下图所示。这个过程类似发送信件的过程,数据在传输时,其外面实际上要被包封多层“信封”。在目的站,某一层只能识别由源站对等层封装的“信封”,而对于被封装在“信封”内部的“数据”仅仅是拆封后将其提交给上层,本层不作任何处理。特别需要注意的是,每一层只处理本层的协议头部!

             

5.2.2 PDU封装实例

  下图是PDU在TCP/IP协议组的封装过程示意图:

6. 网络系统分层组成的简单理解

上文介绍了网络系统中的一些基本理论的概念或者说理解,也提到了网络系统有OSI七层模型、实际的TCP/IP体系结构:

举例:
计算机 1 向计算机 2 通过网络发送文件。可以将要做的工作进行如下的划分。

第一类工作与传送文件直接有关。

  • 确信对方已做好接收和存储文件的准备。
  • 双方协调好一致的文件格式。

两个计算机将文件传送模块作为最高的一层 。剩下的工作由下面的模块负责。

再设计一个通信服务模块

再设计一个网络接入模块

具体的实际使用的TCP/UDP网络系统结构的介绍在下一篇文章介绍,这里仅是引出来该概念。  

6.  小结

计算机网络体系结构标准的制定目的就是使得两台计算机能够像两个知心朋友那样能够互相准确理解对方的意思并做出准确的回应,所以就有了我们的TCP/IP等网络系统结构,它会有很多层,每一层什么作用?该层的工作是由什么硬件来担任并完成的呢?是否在使用中能看到具体效果?各层之间使用的什么协议?为上一层提供了什么服务,预留和何种接口?该协议又是什么样的?等等,后续慢慢学习和介绍。

基础(网络知识 一)——网络结构的组成相关推荐

  1. Lwip从入门到放弃之(一)---基础网络知识扫盲

    Lwip从入门到放弃之-基础网络知识扫盲(一) 由于工作中用到了有关Lwip的有关知识,本人作为一个网络通信协议的门外汉,打算系统的学习一下以太网通讯的有关知识.而Lwip作为一款开源的轻量级TCP/ ...

  2. 【网络入门】详解常用的基础网络知识(面试笔试常考内容)

    目录 1.概述 2.OSI七层模型和TCP/IP四层模型 3.数据进入TCP/IP协议栈时的封装过程 4.端口的概念 5.TCP建立连接时的三次握手 5.1.TCP头的构成 5.2.三次握手的流程说明 ...

  3. 3、弱电工程从业者需要知道的基础网络知识

    做弱电工程的一定要知道一些基础的网络知识,要不没法混呢!今天整理了一些基础的网络知识,大家趁着放假了解一下吧 正文: 网络的基本概念 客户端:应用 C/S(客户端/服务器) B/S(浏览器/服务器) ...

  4. 太牛了!万文长字:Java基础+网络知识+Linux+数据结构与算法+数据库+系统设计+必会工具+面试指南,一文将Java面试讲解的清清楚楚!

    前言 今天给大家推荐一本PDF文档<Java中高级核心知识全面解析>这份文档总页数:524页.分为八个部分每个部分详细地讲解了核心知识点. 第一部分 扎实的Java基础 (Java基础+容 ...

  5. IP地址基础网络知识—Vecloud微云

    在日常中我们遇到的网络故障.路由器无法连接.交换机通信等问题都与IP地址相关.在生活中我们使用具有上网功能的电子设备都有IP地址,这和每个人都有自己的名字一样. IP地址是由两部分组成的,网络部分和主 ...

  6. 70、弱电工程从业者必须知道的基础网络知识

    网络的基本概念 客户端:应用 C/S(客户端/服务器) B/S(浏览器/服务器) 服务器:为客户端提供服务.数据.资源的机器 请求:客户端向服务器索取数据 响应:服务器对客户端请求作出反应,一般是返回 ...

  7. 不需要网络的调频收音机_测试工程师真的不需要懂网络知识么?

    1 导语 随着现在互联网公司的普及,越来越多的测试工程师从事web应用测试和移动APP测试类的产品,更加偏向应用. 所以导致越来越多的测试工程师对网络基础知道的甚少. 我曾经做过一个小调查,大概200 ...

  8. 网络知识详解之:网络攻击与安全防护

    网络知识详解之:网络攻击与安全防护 计算机网络相关知识体系详解 网络知识详解之:TCP连接原理详解 网络知识详解之:HTTP协议基础 网络知识详解之:HTTPS通信原理剖析(对称.非对称加密.数字签名 ...

  9. 网络知识详解之:HTTPS通信原理剖析(对称、非对称加密、数字签名、数字证书)

    网络知识详解之:HTTPS通信原理剖析(对称.非对称加密.数字签名.数字证书) 计算机网络相关知识体系详解 网络知识详解之:TCP连接原理详解 网络知识详解之:HTTP协议基础 网络知识详解之:HTT ...

  10. python基础-网络基础知识和网络编程

    之前对这一块的知识,总是记不住,这次正好有系统的学习,所以决定好好的梳理一下 1. 计算机网络基础知识 1.1 互联网协议和OSI模型 *协议模型 互联网协议按照功能不同分为osi七层或tcp/ip五 ...

最新文章

  1. 分布式TensorFlow集群local server使用详解
  2. 为什么要使用sigmoid,tanh,ReLU等非线性函数?
  3. Java脚本学习-笔记二
  4. VUE的ajax拦截器
  5. virtual box挂载 共享文件夹
  6. 永久白嫖!发现官方漏洞,希望不要被封杀!
  7. (转)使用DataGridView控件常见问题解答
  8. python实现链表的删除_Python垃圾回收机制
  9. 三个好用的并发工具类
  10. 我的第一个*.SYS
  11. java基础面试题之:String 类的常用方法都有那些?
  12. 两台机器实现QPS3000的服务优化
  13. Java 25天基础-DAY 05-面向对象-构造函数
  14. hive udf开发超详细手把手教程
  15. 量子计算机采用量子力学原理,物理学:量子计算机的工作是不是就是根据量子力学原理造的?...
  16. 基于ssm的记账管理系统设计与实现【毕业设计jsp】
  17. 从零开始为实验室搭建一个多人使用远程登录服务器
  18. 浙江高院:引导当事人用区块链存取证据,微版权提供一站式知识产权保护服务
  19. xinput1_4.dll丢失怎么修复?修复方法分享
  20. 群晖docker搭建印象笔记_群晖docker安装蚂蚁笔记安装教程

热门文章

  1. 苹果12开发者设置_苹果12怎么省电?iPhone12系列省电设置十大技巧介绍_苹果知识...
  2. Excel怎么设置按enter键后向右移动
  3. sqlplus导数_数据导数
  4. The Forbidden Permutation
  5. JZVIdeoPlayer(节操视频播放)
  6. android sqlite模糊查询,SQLite 模糊查询
  7. 约瑟夫环---自杀环问题 简单明了的循环链表版
  8. 每临大事有静气,不信今时无古贤
  9. Mac 定时关机、重启、休眠命令
  10. 【opencv+mfc】实现身份证上的身份证号识别