network - 网络域

时间:2017-07-24 09:10:58

标签: networking linux-kernel

我一直在寻找答案,但我找不到明确的答案。

从freebsd手册页,它描述了mbuf如下:

An mbuf is a basic unit of memory management in the kernel IPC subsystem. Network packets and socket buffers are stored in mbufs.
A network packet may span multiple mbufs arranged into a mbuf chain (linked list), 
which allows adding or trimming network headers with little overhead.
An mbuf consists of a variable-sized header and a small internal buffer for data.

到目前为止我能理解的环形缓冲区是NIC驱动程序将为数据包接收过程预先分配数据包缓冲区(环形缓冲区)(在这种情况下为Rx)。

我不明白这两种不同缓冲区在linux网络域中的作用。

请回复你的理解。

谢谢

*mbuf

1 个答案:

答案 0 :(得分:0)

你有很好的环形缓冲区的基础知识。

就mbuf而言,如果你听说过它们,它们会与pbuf类似,但看起来它们有点复杂。它们只是一个简单的结构,使内存管理更容易(在这种情况下是分组数据)。除非你在处理内核代码,否则我认为你不需要使用mbuf,因为套接字系统应该在用户空间中将它抽象出来。

以下是有关mbuf的更详细信息:https://www.freebsd.org/cgi/man.cgi?format=html&query=mbuf%289%29