Linux 内核网络中的 sk_buff 数据结构

Linux 内核网络中的 sk_buff 数据结构

本文转载自 houmin.cc,原文已被删除,但因为之前阅读此文感觉说明较为清楚(后来查了下主要参考的是 Understanding Linux Network Internals 这本书),因此为方便今后查看,从 wayback machine 找到并转载了这篇文章。文章内容可能有补充修正。

在 Linux 内核的网络代码中,sk_buff 或许是最重要的数据结构,用来表示已接收或将要传输的数据。 sk_buff 定义在 include/linux/skbuff.h 中,它由许多变量组成,目标就是满足所有网络协议的需要。随着数据包在内核协议栈不同层次传递时,Linux 内核不是通过层与层之间的数据拷贝,而是通过追加头信息的方式,这即是 sk_buff 被使用的典型场景:在不同网络协议层之间移动,通过添加数据头的形式传递数据。本文分析采用的是 2.6.35 版本内核。

阅读更多
Your browser is out-of-date!

Update your browser to view this website correctly.&npsb;Update my browser now

×