<ins id='dqpv5'></ins>

      <fieldset id='dqpv5'></fieldset>

    1. <i id='dqpv5'></i>
    2. <acronym id='dqpv5'><em id='dqpv5'></em><td id='dqpv5'><div id='dqpv5'></div></td></acronym><address id='dqpv5'><big id='dqpv5'><big id='dqpv5'></big><legend id='dqpv5'></legend></big></address>

      <i id='dqpv5'><div id='dqpv5'><ins id='dqpv5'></ins></div></i>

      <dl id='dqpv5'></dl>

        <code id='dqpv5'><strong id='dqpv5'></strong></code>
        <span id='dqpv5'></span>

        1. <tr id='dqpv5'><strong id='dqpv5'></strong><small id='dqpv5'></small><button id='dqpv5'></button><li id='dqpv5'><noscript id='dqpv5'><big id='dqpv5'></big><dt id='dqpv5'></dt></noscript></li></tr><ol id='dqpv5'><table id='dqpv5'><blockquote id='dqpv5'><tbody id='dqpv5'></tbody></blockquote></table></ol><u id='dqpv5'></u><kbd id='dqpv5'><kbd id='dqpv5'></kbd></kbd>

        2. 对Linux网络协议栈结构的理解

          • 时间:
          • 浏览:8
          • 来源:124软件资讯网

            Linux的协议栈实在是源于BSD的协议栈  ,它向上以及向下的接口以及协议栈自己的软件分层组织的很是好  。

            Linux的协议栈基于分层的设计头脑 ,总共分为四层  ,从下往上依次是:物理层 ,链路层 ,网络层 ,应用层  。

            物理层主要提供种种毗连的物理装备  ,如种种网卡  ,串口卡等;链路层主要指的是提供对物理层举行会见的种种接口卡的驱动法式  ,如网卡驱动等;网路层的作用是卖力将网络数据包传输到准确的位置  ,最主要的网络层协议固然就是IP协议了  ,实在网络层另有其他的协议如ICMP  ,ARP  ,RARP等 ,只不外不像IP那样被多数人所熟悉;传输层的作用主要是提供端到端  ,说白一点就是提供应用法式之间的通讯  ,传输层最着名的协议非TCP与UDP协议末属了;应用层  ,顾名思义 ,固然就是由应用法式提供的  ,用来对传输数据举行语义诠释的“人机界面”层了  ,好比HTTP  ,SMTP ,FTP等等 ,实在应用层还不是人们最终所看到的那一层 ,最上面的一层应该是“诠释层” ,卖力将数据以种种差别的表项形式最终呈献到人们眼前  。

            Linux网络焦点架构Linux的网络架构从上往下可以分为三层  ,划分是:

            用户空间的应用层  。

            内核空间的网络协议栈层  。

            物理硬件层  。

            其中最主要最焦点的固然是内核空间的协议栈层了  。

            Linux网络协议栈结构Linux的整个网络协议栈都构建与Linux Kernel中  ,整个栈也是严酷根据分层的头脑来设计的  ,整个栈共分为五层  ,划分是 :

            1  ,系统挪用接口层  ,实质是一个面向用户空间应用法式的接口挪用库 ,向用户空间应用法式提供使用网络服务的接口 。

            2 ,协议无关的接口层 ,就是SOCKET层 ,这一层的目的是屏障底层的差别协议(更准确的来说主要是TCP与UDP  ,固然还包罗RAW IP  , SCTP等)  ,以便与系统挪用层之间的接口可以简朴  ,统一 。简朴的说  ,不管我们应用层使用什么协议  ,都要通过系统挪用接口来建设一个SOCKET  ,这个SOCKET实在是一个庞大的sock结构  ,它和下面一层的网络协议层联系起来  ,屏障了差别的网络协议的差别  ,只吧数据部门呈献给应用层(通过系统挪用接口来呈献)  。

            3  ,网络协议实现层 ,毫无疑问  ,这是整个协议栈的焦点  。这一层主要实现种种网络协议 ,最主要的固然是IP ,ICMP  ,ARP  ,RARP  ,TCP  ,UDP等 。这一层包罗了许多设计的技巧与算法  ,相当的不错  。

            4  ,与详细装备无关的驱动接口层  ,这一层的目的主要是为了统一差别的接口卡的驱动法式与网络协议层的接口  ,它将种种差别的驱动法式的功效统一抽象为几个特殊的行动  ,如open ,close  ,init等  ,这一层可以屏障底层差别的驱动法式  。

            5 ,驱动法式层  ,这一层的目的就很简朴了 ,就是建设与硬件的接口层  。

            可以看到  ,Linux网络协议栈是一个严酷分层的结构  ,其中的每一层都执行相对自力的功效 ,结构很是清晰  。

            其中的两个“无关”层的设计很是棒 ,通过这两个“无关”层  ,其协议栈可以很是轻松的举行扩展  。在我们自己的软件设计中  ,可以吸收这种设计要领