第二章:mubf
一:为何要建立这样的一个数据结构缓存?
1,能在缓存头部和尾部添加数据(如底层封装来自高层的数据,譬如组帧),能从缓存中移除数据(如当数据分组向上经过协议栈时要去掉首部)
2,尽量少的为这些操作所做的数据复制。
二: mbuf的主要用途就是保存在进程和网络接口间的相互传递的用户数据。但mbuf也用于保存其他各种数据:源与目标地址,插口选项等。(视其m_type字段的不同)。
三,四种不同类型的mbuf,
无分组首部,mbuf本身带有108字节的可用空间
有分组首部,mbuf本身带有100字节的可用空间。
无分组首部,数据在外部缓存中
有分组首部,数据在外部缓存中。
四:两个操作mbuf的函数;
1,m_devget,很多网络设备(接口层)调用它来存放一个收到的帧,即创建mbuf。
2,m_pullup, 所有输入程序调用它把协议首部提取出来放在一个新的mbuf中,然后以这个mbuf作为链首。