在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。

本文是《TCP/IP详解卷2:实现》笔记,主要探讨了在BSD TCP/IP实现中mbuf的使用,以及UDP的输出和输入处理流程。输出涉及socket地址结构的mbuf、数据mbuf、IP和UDP首部的添加;输入处理包括以太网输入、IP输入和UDP输入,描述了从以太网设备到进程接收数据的路径。
最低0.47元/天 解锁文章
7422





