zoukankan      html  css  js  c++  java
  • 计算机网络笔记~分层介绍

    计算机网络教材 每章分层讲述。

    为什么需要分层?

             各层独立工作,层之间用接口联系,降低协议工作的复杂性。

             灵活性好。

             每层实现技术可以不同,降低复杂度。

             每层单独调试。易于维护。

             标准化。

    分层原则是:

    信宿机第n层收到的对象和信源机第n层发出的对象相同。

    TCP/IP模型(DOD模型)是现在广泛采用的

        应用层   

        传输层

        网络层(  提供主机到主机的通信)

        Internet Access层

    但是计算机网络教材不是根据TCP/IP模型介绍,也不是根据OSI 7层模型介绍。

    细细划分了

      Internet Access层为   数据链路层(DATA LINK内容太多,又细分了两章) 物理层。

    OSI模型和DOD模型相同点:

      都分层。

      都有应用层,虽然服务不同。 

           有可比较的传输层和网络层。

      都使用分组交换技术而不是电路交换技术。(在通信过程中,通信双方以分组 [又叫包]为单位、使用存储-转发机制实现数据交互的通信方式,被称为分组交换(packet switching))

           

    通俗化理解 7层OSI模型

       首先   需求1:  需要实现  两台机器的 通信需求。

            两个硬件之间怎么通信。具体就是一台发些比特流,然后另一台能收到。

           科学家发明了物理层:
       主要定义物理设备标准,如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。
          它的主要作用是传输比特流(就是由1、0转化为电流强弱来进行传输,到达目的地后在转化为1、0,也就是常说的  数字和模拟信号的转换)。
          这一层的数据叫做比特。
     
     需求2:现在通过电线我能发数据流了,但是,我还希望通过无线电波,通过其它介质来传输。

        然后我还要保证传输过去的比特流是正确的,要有纠错功能。

               想如何让格式化数据进行传输。如何让控制对物理介质的访问(不太理解)。通常还提供错误检测和纠正,以确保数据的可靠传输。

    是传输。

    现在我能发正确的发比特流数据到另一台计算机了,但是当我发大量数据时候,可能需要好长时间,例如一个视频格式的,网络会中断好多次。

    那么需求3是   保证传输大量文件时的准确性。于是,我要对发出去的数据进行封装。就像发快递一样,一个个地发。

    于是   发明了传输层(传输层在OSI模型中,是在网络层上面)

     
      例如TCP,是用于发大量数据的,我发了1万个包出去,另一台电脑就要告诉我是否接受到了1万个包,如果缺了3个包,就告诉我是第1001,234,8888个包丢了,那我再发一次。这样,就能保证对方把这个视频完整接收了。
     
      例如UDP,是用于发送少量数据的。我发20个包出去,一般不会丢包,所以,我不管你收到多少个。在多人互动游戏,也经常用UDP协议,因为一般都是简单的信息,而且有广播的需求。如果用TCP,效率就很低,因为它会不停地告诉主机我收到了20个包,或者我收到了18个包,再发我两个!如果同时有1万台计算机都这样做,那么用TCP反而会降低效率,还不如用UDP,主机发出去就算了,丢几个包你就卡一下,算了,下次再发包你再更新。 
     
    顺便提一下:TCP协议是会绑定IP和端口的协议,下面会介绍IP协议。
     
    传输层只是解决了打包的问题。
      需求4是但是如果我有多台计算机,怎么找到我要发的那台?或者,A要给F发信息,中间要经过B,C,D,E,但是中间还有好多节点如K.J.Z.Y。我怎么选择最佳路径?这就是路由要做的事。
     

       发明了网络层。即路由器,交换机那些具有寻址功能的设备所实现的功能。这一层定义的是IP地址,通过IP地址寻址。所以产生了IP协议。

      现在我们已经保证给正确的计算机,发送正确的封装过后的信息了。

       需求5 但是用户级别的体验好不好?难道我每次都要调用TCP去打包,然后调用IP协议去找路由,自己去发?当然不行,所以我们要建立一个自动收发包,自动寻址的功能

     

      于是,发明了会话层。会话层的作用就是建立和管理应用程序之间的通信。

           现在我能保证应用程序自动收发包和寻址了

      但是我要用Linux给window发包,两个系统语法不一致,就像安装包一样,exe是不能在linux下用的,shell在window下也是不能直接运行的。

       于是需要表示层(presentation),需求 6 帮我们解决不同系统之间的通信语法问题。

       需求7:现在所有必要条件都准备好了,我们可以写个android程序,web程序去应用层实现需求把。

      

  • 相关阅读:
    思源:秒级体验百亿级数据量监控钻取
    禧云Redis跨机房双向同步实践
    谈谈数据中台技术体系
    RCA:收单设备调用云端接口频繁超时排查总结
    技术上的“深淘滩,低作堰”
    企业私有源代码上传github致入侵之大疆案判决了
    那些年我们一起犯过的错
    异地双活的四个误区
    没有预见性你凭什么晋升
    中国IT史上两大严重事故对我们的警醒及预防措施
  • 原文地址:https://www.cnblogs.com/yizhizhangBlog/p/10058470.html
Copyright © 2011-2022 走看看