1.9 mbuf与输出处理在伯克利联网代码设计中的一个基本概念就是存储器缓存,称作一个mbuf,在整个联网代码中用于存储各种信息。通过我们的简单例子分析一些mbuf的典型用法。在第2章中我们会更详细地说明mbuf。
1.9.1包含插口地址结构的mbuf在sendto调用中,第5个参数指向一个Internet插口地址结构(叫serv),第6个参数指示它的长度(后面我们将要看到是16个字节)。插口层为这个系统调用做的第一件事就是验证这些参数是有效的(即这个指针指向进程地址空间的一段存储器),并且将插口地址结构复制到一个mbuf中。mbuf中针对sendto的目的地址mbuf的前20个字节是首部,它包含关于这个mbuf的一些信息。这20个字节的首部包括四个4字节字段和两个2字节字段。mbuf的总长为128个字节。稍后我们会看到,mbuf可以用成员m_next和m_nextpkt链接起来。在这个例子中都是第1章概述计计下载带有目标IP地址和端口号的16字节的sockaddr_in{}128字节20字节。
如果你对mbuf和IP处理模块感兴趣,可以参考这篇IP处理模块以及Mbuf文章,里面有详细的解释。想了解更多关于存储器缓存的信息,不妨看看这篇存储器缓存。对于sendto函数的更深入解析,可以阅读这篇文章recvfrom和sendto函数。
这些链接中的信息不仅能够帮助你更好地理解mbuf的使用和网络编程,还能为你提供更多的技术细节和实践案例。你会发现,这些资源能极大地提升你的学习体验,让你在网络编程的世界里游刃有余!
暂无评论