作家
登录

Linux网络协议栈的概念

作者: 来源: 2012-06-13 02:11:26 阅读 我要评论

在网络协议的学习中,我们发现,不同操作系统的一些协议栈建设时不一样的。那么针对Linux网络协议栈内容,我们将为大家进行一下具体的讲解。现在就让我们来看看具体的知识内容吧。

Linux网络协议栈

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网络协议栈是一个严格分层的结构,其中的每一层都执行相对独立的功能,结构非常清晰.

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


  推荐阅读

  协议栈开发的过程

网络的兴起和通信的飞腾都随着软件无线电思想与技术的发展,在这当中,值得我们注意的是协议栈开发的内容。现代数字通信系统中,越来越多地使用DSP等数字信号处理器结合高速AD、DA转换器进行OSI 7层通信体系模型中物理>>>详细阅读


本文标题:Linux网络协议栈的概念

地址:http://www.17bianji.com/xieyi/3544.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)