在BSD的TCP/IP代码中的一个基本概念是存储器缓存,成为mbuf,在整个实现中用于存储各种信息。(在linux中使用
的是skbuff,UNUX和LINUX在TCP/IP实现上有不同。)
下图是BSD TCP/IP代码的大概组织。
1.输出处理
1.1.包含socket地址结构的mbuf
下图是一个包含socket地址结构的mbuf。
mbuf的前20个字节是首部,它包含关于这个mbuf的一些信息。mbuf总长是128个字节。
mbuf使用成员m_next和m_nextpkt链接起来。
成员m_data指向mbuf中的数据,成员m_len指示它的长度,成员m_type指示包含在mbuf中的数数据类型。上图是MT_SONAME。