linux协议栈:对Linux网络协议栈结构的理解

      Linux协议栈其实是源于BSD协议栈它向上以及向下接口以及协议栈本身软件Software分层组织非常好   Linux协议栈基于分层设计思想总共分为 4层从下往上依次是:物理层链路层网络层应用层

  物理层主要提供各种连接物理设备如各种网卡串口卡等;链路层主要指是提供对物理层进行访问各种接口卡驱动如网卡驱动等;网路层作用是负责将网络数据包传输到正确位置最重要网络层协议当然就是IP协议了其实网络层还有其他协议如ICMPARPRARP等只不过不像IP那样被多数人所熟悉;传输层作用主要是提供端到端说白点就是提供应用的间通信传输层最著名协议非TCP和UDP协议末属了;应用层顾名思义当然就是由应用提供用来对传输数据进行语义解释“人机界面”层了比如HTTPSMTPFTP等等其实应用层还不是人们最终所看到最上面层应该是“解释层”负责将数据以各种区别表项形式最终呈献到人们眼前

  Linux网络核心架构Linux网络架构从上往下可以分为 3层分别是:

  用户空间应用层

  内核空间网络协议栈层

  物理硬件层

  其中最重要最核心当然是内核空间协议栈层了

  Linux网络协议栈结构Linux整个网络协议栈都构建和Linux Kernel中整个栈也是严格按照分层思想来设计整个栈共分为 5层分别是 :

  1系统接口层实质是个面向用户空间应用接口向用户空间应用提供使用网络服务接口

  2协议无关接口层就是SOCKET层是屏蔽底层区别协议(更准确来说主要是TCP和UDP当然还包括RAW IP SCTP等)以便和系统层的间接口可以简单简单不管我们应用层使用什么协议都要通过系统接口来建立个SOCKET这个SOCKET其实是个巨大sock结构它和下面网络协议层联系起来屏蔽了区别网络协议区别只吧数据部分呈献给应用层(通过系统接口来呈献)

  3网络协议实现层毫无疑问这是整个协议栈核心层主要实现各种网络协议最主要当然是IPICMPARPRARPTCPUDP等层包含了很多设计窍门技巧和算法相当不错

  4和具体设备无关驱动接口层主要是为了统区别接口卡驱动和网络协议层接口它将各种区别驱动功能统抽象为几个特殊动作如opencloseinit等层可以屏蔽底层区别驱动

  5驱动就很简单了就是建立和硬件接口层

  可以看到Linux网络协议栈是个严格分层结构其中层都执行相对独立功能结构非常清晰

  其中两个“无关”层设计非常棒通过这两个“无关”层其协议栈可以非常轻松进行扩展在我们自己软件Software设计中可以吸收这种设计思路方法

Tags:  协议栈开发 tcpip协议栈 协议栈 linux协议栈

延伸阅读

最新评论

发表评论