我正在阅读 Linux 中的内核网络。我发现这篇http://www.ibm.com/developerworks/linux/library/l-linux-networking-stack/文章很有帮助。阅读本文后,我怀疑如果我在 Linux 平台上创建任何软件.. 比方说,一些聊天程序.. 我是否必须利用所有可用的 API(sk_buff 和所有)来连接到另一个网络? 请帮帮我。
3 回答
sk_buff 是一个内核结构,它是内核 TCP/IP 堆栈的一部分。您不需要直接触摸它,实际上会发现这样做很困难。
相反,您需要学习用于网络通信的用户空间 API。要快速学习 Unix 上的网络通信基础知识,很难击败Beej's Guide。
如果您想创建一个聊天软件,我建议您查看 BSD Sockets 或任何适用于 Linux 的 TCP/IP 网络指南。您无需了解内核中发生的事情即可对聊天软件进行编程。
如果您想创建一个新的设备驱动程序但您似乎高于协议级别,则 sk_buff 是相关的。
如果您想创建聊天,您将创建一个服务器套接字(侦听器)和客户端,它们连接到您的服务器正在侦听的地址并通过 TCP/IP 交换信息。
sk_buff 是套接字缓冲区的内核数据结构。您不必为您的聊天服务器触摸它。如果您参加过操作系统课程,您一定注意到有一个进程结构(Linux 中的 struct proc),但这是否意味着您必须在编写程序时使用它?不,sk_buff 是类似的情况,Linux 内核使用它来缓冲某些数据。你不必担心它。
对于您的聊天服务器,请查看 Beej 的指南,如果我没记错的话,它有一个聊天服务器的实现,它是我所知道的在 Linux 上开始网络编程的最佳指南,并且充满了幽默感。要更深入地了解网络编程,请参阅 Richard Stevens Unix Network Programming, Volume 1 和 Volume 2。它被认为是网络编程的圣经。