了解网络协议栈的人都知道,网络协议栈是一个有层次的软件结构,层与层之间通过预定的接口传递网络报文。网络报文中包含了在协议栈各层使用到的各种信息。网络报文的长度是不固定的,因此采用什么样的数据结构来存储这些网络报文就显得非常重要。在BSD的实现中,采用的数据结构是mbuf,它所能存储的数据的长度是固定的,如果一个网络报文需要多个mbuf,这些mbuf链接成一个链表。所以同一个网络报文里的数据在内存中的存储可能是不连续的。在LINUX的实现中,同一个网络报文的数据在内存中是连续存放的,每个网络报文都有一个控制结构,叫做sk_buff。当然,这只是在LINUX2.2.x里面的情况,sk_buff在LINUX2.4.x有一点变化,将会在下面讲到。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !