【问题标题】:Linux Networking KernelLinux 网络内核
【发布时间】:2013-04-04 11:19:04
【问题描述】:

我正在阅读 linux 中的内核网络。我发现这篇 http://www.ibm.com/developerworks/linux/library/l-linux-networking-stack/ 文章很有帮助。阅读本文后,我怀疑如果我在 Linux 平台上创建任何软件.. 比方说,一些聊天程序.. 我是否必须利用所有可用的 API(sk_buff 和所有)来连接到另一个网络?请帮帮我。

【问题讨论】:

    标签: linux networking linux-kernel


    【解决方案1】:

    sk_buff 是一个内核结构,它是内核 TCP/IP 堆栈的一部分。您不需要直接触摸它,实际上会发现这样做很困难。

    相反,您需要学习用于网络通信的用户空间 API。要快速学习 Unix 上的网络通信基础知识,Beej's Guide 是很难击败的。

    【讨论】:

    • 非常感谢您的回答。请告诉我在什么情况下我们必须使用 sk_buff 或其他网络内核类..这会让我很好地理解这个概念..
    • @Ashwin 如果您在 TCP/IP 堆栈上进行内核级工作,那么您将需要使用它。这是我能想到的最简单的解释方式,因为它包含了很多东西。我想说,程序员为 Linux 编写的大量、vastVAST 大部分网络代码不需要这个。您应该按照 POSIX 标准进行编码,而不是内核中的内容。
    • @Ashwin 你了解用户空间和内核空间的区别吗?
    • 对不起.. 我对 Linux 内核真的很陌生。现在了解这两者的区别。但是如果我有一个例子,我们必须使用网络内核(也有一个)..它有助于我理解这个概念.. :(
    【解决方案2】:

    如果您想创建一个聊天软件,我建议您查看 BSD Sockets 或任何适用于 Linux 的 TCP/IP 网络指南。您无需了解内核中发生的事情即可对聊天软件进行编程。

    如果您想创建一个新的设备驱动程序但您似乎高于协议级别,则 sk_buff 是相关的。

    如果您想创建聊天,您将创建一个服务器套接字(监听器)和客户端,它们连接到服务器正在监听的地址并通过 TCP/IP 交换信息。

    【讨论】:

      【解决方案3】:

      sk_buff 是套接字缓冲区的内核数据结构。您不必为您的聊天服务器触摸它。如果您参加过操作系统课程,您一定注意到有一个进程结构(Linux 中的 struct proc),但这是否意味着您必须在编写程序时使用它?不,sk_buff 是类似的情况,Linux 内核使用它来缓冲某些数据。你不必担心它。

      对于您的聊天服务器,请查看 Beej 的指南,如果我没记错的话,它有一个聊天服务器的实现,它是我所知道的在 Linux 上开始网络编程的最佳指南,并且充满幽默感。要更深入地了解网络编程,请参阅 Richard Stevens Unix Network Programming, Volume 1 和 Volume 2。它被认为是网络编程的圣经。

      【讨论】:

        猜你喜欢
        • 2012-04-08
        • 2017-10-14
        • 2014-08-18
        • 2011-05-28
        • 2013-02-17
        • 2014-01-02
        • 1970-01-01
        • 1970-01-01
        • 2012-01-28
        相关资源
        最近更新 更多