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程序去应用层实现需求把。

      

  • 相关阅读:
    poj 1743 Musical Theme 后缀数组
    poj 1743 Musical Theme 后缀数组
    cf 432D Prefixes and Suffixes kmp
    cf 432D Prefixes and Suffixes kmp
    hdu Data Structure? 线段树
    关于position和anchorPoint之间的关系
    ios POST 信息
    CALayers的代码示例
    CALayers详解
    ios中得sqlite使用基础
  • 原文地址:https://www.cnblogs.com/yizhizhangBlog/p/10058470.html
Copyright © 2011-2022 走看看