总结: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 输出,因为一个被传输的数据的副本要被发送端保存,直到数据被对方确认。比起进行物理复制来说,通过引用计数,共享簇提高了性能。

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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值