总结:TCP/IP 详解(卷2:实现)--第二章 mbuf:存储器缓存

第二章  mbuf:存储器缓存

在本书几乎所有的函数中我们都会遇到 mbuf。它们的主要用途是在进程和网络接口之间传递用户数据时用来存放用户数据,但 mbuf 还用于保存其他各种数据;源地址和目标地址、插口选项等等。

根据 M_PKTHDR 和 M_EXT 标志是否被设置,这里有 4 种类型的 mbuf:

  • 无分组首部,mbuf 本身带有 0~108 字节数据;
  • 有分组首部,mbuf 本身带有 0~100 字节数据;
  • 无分组首部,数据在簇(外部缓存)中;
  • 有分组首部,数据在簇(外部缓存)中。

我们查看了几个 mbuf 宏和函数的源代码,但不是所有的 mbuf 例程源代码。

查看了我们要遇到的两个函数的操作:m_devget,很多网站设备驱动程序调用它来存储一个收到的帧;m_pullup,所有输入例程调用它把协议首部连续放置在一个 mbuf 中。

由一个 mbuf 指向的簇(外部缓存)能通过 m_copy 被共享。例如,用于 TCP 输出,因为一个被传输的数据的副本要被发送端保存,直到数据被对方确认。比起进行物理复制来说,通过引用计数,共享簇提高了性能。

希望我的总结可以帮助大家,感谢阅读我的博客!

猜你喜欢

转载自blog.csdn.net/weixin_42558631/article/details/81384518