zoukankan      html  css  js  c++  java
  • 网络基础笔记——OSI七层模型

    OSI七层模型

    由于整个网络连接的过程相当复杂,包含硬件、软件数据封包与应用程序的互相链接等等。假设想要写一支将联网所有功能都串连在一块的程序。那么当某个小环节出现故障时,整仅仅程序都须要改写。所以我们将整个网络分成数层,每层都有自己独立的功能,并且每层的代码都能够独立撰写,由于相互之间不会干扰。如此一来,当某个小环节出现故障时,仅仅要将该层的代码改写就可以。

    并且这样能够让整个网络层次更加的清晰。



    在网络上传输信息就像是一个发包裹的过程,从己方的应用程序開始往第七层的包裹里塞数据,再依次塞到第一层的包裹中去,最后通过传输媒介传送到接收端,并层层解开包裹(因为每层仅仅认识对方同样阶层)。

    既然说是包裹,那我们都知道,包裹封面都会有个重要的信息,这些信息包含有来自哪里、要去哪里、接收者是谁等等。 而包裹里面才是真正的数据。

    相同的。在七层模型中。每层都会有自己独特的表头数据 (header)。告知对方这里面的信息是什么。 而真正的数据就附在后头。我们能够使用例如以下的图示来表示这七层每一层的名字,以及数据是怎样放置到每一层的包裹内:


    上图中细致看每一个数据报的部分。上层的包裹是放入下层的数据中,而数据前面则是这个数据的表头。

    当中比較特殊的是第二层, 由于第二层 (数据链结层) 主要是位于软件封包 (packet) 以及硬件讯框 (frame) 中间的一个阶层, 他必需要将软件包装的包裹放入到硬件可以处理的包裹中,因此这个阶层又分为两个子层在处理相相应的数据。

    由于比較特殊,所以第二层的数据格式比較不一样喔,尾端还出现一个检查码。

    每个阶层所负责的任务是什么呢?简单的说。每一层负责的任务例如以下:

    分层

    负责内容

    Layer 1
    物理层
    Physical Layer

    因为网络媒体仅仅能传送 0 与 1 这样的位串,因此物理层必须定义所使用的媒体设备之电压与讯号等, 同一时候还必须了解数据讯框转成位串的编码方式,最后连接实体媒体并传送/接收位串。

    Layer 2
    数据链结层
    Data-Link Layer

    这一层是比較特殊的一个阶层,由于底下是实体的定义,而上层则是软件封装的定义。因此第二层又分两个子层在进行数据的转换动作。

    在偏硬件媒体部分,主要负责的是 MAC (Media Access Control) ,我们称这个数据报裹为 MAC 讯框 (frame)。 MAC 是网络媒体所能处理的主要数据报裹,这也是终于被物理层编码成位串的数据。MAC 必需要经由通讯协议来取得媒体的使用权, 眼下最常使用的则是 IEEE 802.3 的以太网络协议。具体的 MAC 与以太网络请參考下节说明。

    至于偏向软件的部分则是由逻辑链接层 (logical link control, LLC) 所控制,主要在多任务处理来自上层的封包数据 (packet) 并转成 MAC 的格式, 负责的工作包含讯息交换、流量控制、失误问题的处理等等。

    Layer 3
    网络层
    Network Layer

    这一层是我们最感兴趣的啰,由于我们提及的 IP (Internet Protocol) 就是在这一层定义的。 同一时候也定义出计算机之间的联机建立、终止与维持等。数据封包的传输路径选择等等,因此这个层级其中最重要的除了 IP 之外,就是封包是否能到达目的地的路由 (route) 概念了!

    Layer 4
    传送层
    Transport Layer

    这一个分层定义了发送端与接收端的联机技术(如 TCP, UDP 技术), 同一时候包含该技术的封包格式,数据封包的传送、流程的控制、传输过程的侦測检查与复原又一次传送等等, 以确保各个数据封包能够正确无误的到达目的端。

    Layer 5
    会谈层
    Session Layer

    在这个层级其中主要定义了两个地址之间的联机信道之连接与挂断。此外,亦可建立应用程序之对谈、 提供其它加强型服务如网络管理、签到签退、对谈之控制等等。

    假设说传送层是在推断资料封包能否够正确的到达目标, 那么会谈层则是在确定网络服务建立联机的确认。

    Layer 6
    表现层
    Presentation Layer

    我们在应用程序上面所制作出来的数据格式不一定符合网络传输的标准编码格式的。 所以,在这个层级其中。基本的动作就是:将来自本地端应用程序的数据格式转换(或者是又一次编码)成为网络的标准格式, 然后再交给底下传送层等的协议来进行处理。

    所以,在这个层级上面主要定义的是网络服务(或程序)之间的数据格式的转换, 包含数据的加解密也是在这个分层上面处理。

    Layer 7
    应用层
    Application Layer

    应用层本身并不属于应用程序全部,而是在定义应用程序怎样进入此层的沟通接口,以将数据接收或传送给应用程序,终于展示给用户。

    其实, OSI 七层协议仅仅是一个參考的模型 (model),眼下的网络社会并没有什么非常知名的操作系统在使用 OSI 七层协定的联网程序代码。那...讲这么多干嘛?这是由于 OSI 所定义出来的七层协议在解释网络传输的情况来说, 能够解释的非常棒,因此大家都拿 OSI 七层协议来做为网络的教学与概念的理解。

    至于实际的联网程序代码。那就交给 TCP/IP 这个玩意儿吧!



  • 相关阅读:
    如何把一个一般的git库变成“裸库”?
    MacOSX下杀掉sudo进程
    nginx FastCGI错误Primary script unknown解决办法
    Lua继承userdata
    Unity图文混排
    C++轻量级跨平台文件系统API
    lua_next()
    重载方法匹配算法
    C++模板函数只能全特化不能偏特化
    xcode离线安装包下载
  • 原文地址:https://www.cnblogs.com/gavanwanggw/p/7205265.html
Copyright © 2011-2022 走看看