zoukankan      html  css  js  c++  java
  • 《计算机网络思想》系列(1)网络体系结构———理解,总结,辨析,升华

    http://tincehuang.blog.51cto.com/6229018/1377586/

    从这篇文章起,我的每一篇博文都会列出一些基本属性元素,目的是为了方便读者更好的归纳知识,方便地把文章中有用的信息纳入自己的知识体系里,并且提供信息让读者判断,自己的知识水平是适合阅读这篇文章的(既不会太高,大牛就需要看大牛的文章,也不会太低,基础没掌握)具体的属性包括但不限于:知识树,内容深度,最适合人群,最低基础要求,类型。

    稍微解释一下几个属性:

    1. 知识树:每个人在学习的时候,都应该构建自己的知识树或知识体系。知识树的树根范围可大可小,并且可以不断在细分。例如:我以计算机科学为树根构建一棵知识树,则计算机网络是里面的一片叶子。现在我把计算机网络拿出来作为树根,构建一科计算机网络的知识树,则其中一种构建树的方法可以按OSI 7层模型划分,学到一个知识点(比如一种协议:IP)那就挂在网络层这个字节点上。以后,要研究IP协议内部的细节,则把细节的知识再挂在父节点(IP协议上)

       

    2. 内容深度:主要分为了解,理解,应用,深入理解,熟练应用

       
      等。这里的划分并不一定是按深度递增的原则:例如有些人会应用,会配置一个路由协议,但是里面的细节理解却很不好。而一些人对路由协议算法的理解很深入,但可能并不会在一个具体的路由器上配置(需要先查看文档)
    3. 最适合人群:即知识掌握到了某个程度(比如说看了什么书)后阅读博文的收获会比较大

    4. 最低基础要求:有很多基本的概念(可以从网络,书本轻易学习到)并不会再文章里介绍,所以最少需要掌握一些基本的概念才可以阅读。

    5.  

      类型:是以上各个元素的总结和补充,说明该篇文章的性质。大概包含:

      1. 读书笔记(阅读完经典的名著后的总结)特点是突出重点,逻辑顺序较好,但没有什么创新的方面。

      2. 总结抽象:主要是思想上的总结,比读书笔记更少细节

      3. 思想创新:以上的含创新点较多的版本

      4. 概念辨析:特别针对一些重要的且易混乱的概念做辨析

      5. 细节知识:一般会具体到某个协议或技术的探讨,可能是协议的大的结构,也可能是更细节的知识

       

    • 关于知识树的学习方法:从头学一个学科,那毫无疑问,必须从树根上面的知识学起。通常树根是指导整个学科学习的一些基本思想,概念,架构等等。对于计算机网络,毫无疑问网络体系结构是树根上的知识。学完了树根的知识后(达到了解程度),有两种可选的学习方法:

    1. 是沿着树叶学习,每个知识点都达到了解的程度,然后再回过来学一边,树根->树叶,但这次把所有知识点都达到理解的程度。

    2. 先把树根的知识学到了理解的程度,甚至是深入理解,然后才学习树叶的知识。

      我的建议:学习能力较强,想一直深入学习整个学科的,采用第二种。

    在《计算机网络思想》这个专题里,我都以计算机网络为主题(整棵大树)而网络体系结构是主要的根知识。现在,终于可以介绍这次这篇博文的基本元素了。

     

    ***本文属性***

     

    =========================================================================================

    《计算机网络思想》系列(1)网络体系结构———理解,总结,辨析,升华

    ****文章属性****

    ★知识树位置:树根

    ★深度:了解+理解

    ★最适合人群:完整阅读过一本计算机网络的书籍

    ★最低基础要求:大概了解过网络体系结构是什么

    ★类型:读书笔记+总结抽象

    =========================================================================================

     

    ***正文***

     

    阅读完本文,你可以获得的是:

    • 获得一些计算机网络核心的思想,对网络知识体系的整体认识有所提升

    • ★掌握一些基本的网络学习方法

    • 对网络体系结构与其设计思想有更深的理解

    • 对OSI,TCP/IP框架有更深的理解,了解它们的缺陷与优势

     

      在研究了《计算机网络-Andrew》的目录与篇章结构多次,总结出比较好地介绍知识通用顺序。

    好书的写作顺序大概是这样的:

    1. 需求与应用:为什么这样的一项技术会存在,会发展?

    2. 总体框架与分类方法

    3. 最一般化的指导思想

    4. 按照一定分类方法后,每一项的相对一般化的原则/思想

    5. 具体的技术介绍

    6. 应用(与1不同,1主要还是强调技术为什么会有,从哪来,这里强调用在哪有优势)

    7. 产业现状:如提出一些标准化组织

    8. 学习帮助:参考书目,如何深入学习等等

    为什么要提这个呢?因为我的这篇文章,完全没有按照上面的标准来讲解知识,我仅仅是集中在2与3上。并且,我已经默认了读者已经学习了基本的网络体系结构的基本知识,我做的仅仅是总结精华,强调重点,没有从头开始讲解一项项知识。其实网络上一般的博文,都集中在5上,像我比较喜欢抽象总结与归纳,2,3比较多。而其他的写作要点大部分都不会呈现,这也是为什么,看书一般比看网络的文章要好。

    网络体系结构,属于的是2,3点的内容。

     

    ■关于计算机网络,并没有一种普遍接受的分类方法,但总体来说,可以分为网络硬件与网络软件。网络硬件总体上一般按传输技术和网络尺度划分。而网络软件,就是利用网络体系结构来划分。

     

    【【什么是网络体系结构】】

     

    ★为了降低网络设计的复杂性,绝大多数网络都组织成一个层次栈(a stackof layer)或分级栈(a stack of level),每一层都建立在其下一层的基础之上。层的个数、每一层的内容以及每一层的功能各个网络都不尽相同。每一层的目的是向上一层提供特定的服务,而把如何实现这些服务的细节对上一层加以屏蔽。从某种意义上讲,每一层都是一种虚拟机,它向上一层提供特定的服务。

     

    这种分层的概念被广泛应用于计算机科学各个领域中,只是称谓有所不同---信息隐藏、抽象数据类型、数据封装以及面向对象程序设计。其基本思想是一个特定的软件/硬件向其用户提供某种服务,但是将内部状态和算法细节隐藏。其实,分层在【软件体系结构】这门学科中有详细描述,分层结构是一种有实际价值软件体系结构风格,但也有缺点。

    ★层和协议的集合称为网络体系结构。网络体系结构的规范必须包含足够的信息,以便实现者为每一层编写的程序或者设计的硬件能遵守有关的协议。实现细节和接口规范不属于网络体系结构的内容,因为他们在机器内部,对外界是不可见的。甚至,一个网络中所有机器的接口也不必都一样,只要每台机器能够正确地使用所有的协议即可。*注1

    在《计算机网络-Andrew》中,作者严格区分了网络体系结构中三个最重要的概念:服务,协议,与接口

     

     

    wKioL1MlWriyXFb5AAGISrvuc1k315.jpg

     

    【服务】

    服务是指某一层向它上一层提供的一组原语(操作)服务定义说明了该层是做什么的,而不是上一层实体如何访问这一层,或者这一层如何工作

    【协议】

    协议是一组规则,规定了同一层上对等实体之间所交换的数据包或者报文的格式和含义。每一层用到的对等协议是本次自己内部的事情,它可以使用任何协议,只要它不改变呈现给用户的服务即可。

    【接口】

    每一层的接口告诉它上面的进程如何访问本层。它规定了有哪些参数,以及结果是什么。*注2

     

    【【OSI与TCP/IP】】

     

    现在看看具体的网络体系结构:OSI参考模型和TCP/IP参考模型。首先明确一个概念:网络体系结构包含模型和协议,而OSI参考模型本身并不是一个网络体系结构,因为它并没有定义每一层的服务和所用的协议,它只是指明了每一层要做什么。

    ★OSI参考模型真的就是一个模型,它先把模型设计出来,然后ISO这个组织为所有层都指定了相应的标准,也就是具体的协议。严谨来说,这些标准并不属于参考模型本身。OSI的模型本身有普遍意义,因此极具参考价值,但其相关的协议没有任何人使用。TCP/IP协议模型有完全相反的特性:具体的协议先被设计出来然后被广泛使用,然后才亡羊补牢似的创建一个模型。这个模型本身,实际上没有多大的用处。

     

    wKioL1MlWwiCoMZqAAJNvg3XoV4372.jpg

     

    在学习网络知识的角度里,OSI参考模型无疑重要的多。无论学习任何网络体系结构(TCP/IP,ATM,DECnet ,802体系)还是具体的网络协议,都可以网OSI参考模型上套。绝大部分网络体系结构实现了参考模型的一个子集,而绝大部分协议总能划分到7层上的某一个层上面。如果你发现哪个协议违反了分层模型的原则,或者实在是难以在上面套用,那么恭喜你,你的《违反分层模型收集列表》又可以多一项了。可以尝试思考,这些与OSI思想违背的技术和协议,他们到底是好还是不好。

     

    【【OSI为何败给了TCP/IP】】

     

    现在来描述一下OSI模型的基本原则,然后看看TCP/IP如何作为OSI参考模型的一个子集而存在,然后分析为何ISO定义的与OSI搭配的具体协议被TCP/IP的协议打败。

    <OSI参考模型原则>:

    1)第n层的实体在实现自身定义的功能时,只能使用第n-1层提供

    的服务。

    2)第n层在向第n+1层提供的服务时,此服务不仅包含第n层本

    身的功能,还包含由下层服务提供的功能。

    3)仅在相邻层间有接口,且所提供服务的具体实现细节对上一层完全屏蔽

     

    <TCP/IP>

    wKiom1MlW1DyxCV-AAIDA3E80zk043.jpg

    • 从图中得知,TCP/IP与OSI在3-7层上基本是对等的,只是TCP/IP的应用层基本涵盖了表示层和会话层。但是,TCP/IP在底下二层根本没有任何作为,虽然有一个层叫“链路层”(图中的主机至网络)但仅仅是主机与传输线路之间的接口。该层描述了链路必须要满足什么功能(比如PPP,以太网,这也是现实中最常使用的底层技术)但自身没有对这些层次的任何定义和具体协议。所以可以简单的说,TCP/IP仅仅有3-7层的功能

    • 现在直观地从功能实现的范围来看,TCP/IP仅仅实现了OSI架构定义的一个子集。可为什么结果OSI架构搭配的协议并没有人使用呢?因为OSI的协议实在太失败了。

    • OSI协议失败的原因可以概括为4点:

    1.糟糕的时机

    2.糟糕的技术

    3.糟糕的实现

    4.糟糕的政策

    一个标准在什么时候建立与改标准成功与否绝对重要

    麻省理工学院的David Clark有一套关于标准的理论,称之为两头大象(研究活动和商业投资活动)的启示。当一个主题首次提出,会爆发大量的研究活动,如讨论、论文和会议,随后渐渐平息并形成标准,直到企业发现该主题,然后出现投资浪潮。
    关键在于标准的编写必须处于两头大象之间,如果写得太早,研究工作还未结束,该主题可能并未理解透彻,会影响到标准的质量。如果写得过晚,很多公司已经以不同的方式实现并做了大量投资,标准也就无人理会。
    如果两头大象的间隔太短,开发标准的人可能被挤在夹逢中举步维艰。OSI就陷入了这种境地。OSI的提出时间在TCP/IP研究活动期与TCP/IP商业 投资期之间,OSI的标准尚未形成,TCP/IP的商业投资刚刚开始。企业对于OSI采取观望态度,都希望等待其它企业先对OSI进行投资。直到最 后,OSI的标准根本就没出现。

    wKioL1MlWz7wh0ZCAACYg134HY8705.jpg

    OSI的模型和协议都存在缺陷

    ★在模型上,选择7层很大程度和政策上考虑有关。其中的两层(会话层和表示层)几乎是空的,而数据链路层和网络层又包含太多内容。

    ★OSI具体的服务定义和协议都很复杂,实现起来很庞大,很笨拙,效率也很慢。很快OSI就等同于“糟糕的质量”了。而TCP/IP早起实现是基于UNIX的一部分,运行很好,并且免费,推广迅速,很快得到了庞大的用户群。

    政策的影响

    OSI被认为是一些政府官僚的产物,他们把技术上不足的标准强加给实际开发计算机网络的可怜的研究人员和程序员。

    ■TCP/IP的缺陷也很明显:

      1. 非常不通用,不适合描述TCP/IP意外的任何其他协议栈。

      2. 缺少数据链路层和物理层(也没有区分两层)。

      3. 没有严格区分服务,接口,协议的概念(虽然现在有所改进)

      4. 很多协议是自主形成的(油不知疲倦的研究生开发出来)它们也许性能不好,缺乏安全性,违反分层模型,但是出现的早,被广泛应用,地位根深蒂固。

  • 相关阅读:
    简单的模板解析函数
    HTML通过事件传递参数到js 二 event
    HTML通过事件传递参数到js一
    通过this获取当前点击选项相关数据
    LeetCode 20. 有效的括号(Valid Parentheses)
    LeetCode 459. 重复的子字符串(Repeated Substring Pattern)
    LeetCode 14. 最长公共前缀(Longest Common Prefix)
    LeetCode 168. Excel表列名称(Excel Sheet Column Title)
    LeetCode 171. Excel表列序号(Excel Sheet Column Number) 22
    LeetCode 665. 非递减数列(Non-decreasing Array)
  • 原文地址:https://www.cnblogs.com/feng9exe/p/6808853.html
Copyright © 2011-2022 走看看