【问题标题】:How can I learn _really_ low-level network programming?我怎样才能真正学习低级网络编程?
【发布时间】:2010-10-31 13:47:33
【问题描述】:

所以我想了解所有关于网络的知识。远低于套接字,一直到原始套接字和其他东西。而且我想了解集线器、路由器、接入点等。例如,我希望能够编写自己的软件来做这类事情。*这类信息有很好的来源吗?

我知道我在这里问了很多,而要完全解释这一切需要从高层次到低层次。我想我正在寻找与Applied Cryptography 在范围和深度上相似但关于网络的来源。

感谢任何可以帮助我(以及其他像我一样的人?)指明正确方向的人。

* 是的,我意识到使用我手工制作的任何网络堆栈代码都将是一个巨大的安全问题,我只是想学习一下 :)

类似问题:here。但是,我寻找的不仅仅是“TCP/UDP 套接字下面是什么?”。

为澄清而编辑:我所说的深度高于驱动程序级别。所以假设这些位可以进出电线的另一端,接下来呢?

【问题讨论】:

  • 你想多低级;你想学习: * 只使用原始套接字编写 TCP 实现吗? * 为您的操作系统或嵌入式系统编写新的 TCP/IP 堆栈? * 是否也进行框架封装? (连接到每个以太网有线网络、Gig-E、拨号、ATM、令牌环、wifi、蓝牙等都会有所不同) * 编写网卡驱动程序来获取帧并将它们发送到 NIC?

标签: networking network-programming network-protocols


【解决方案1】:

您应该为自己配备一个 c 编译器以及您的操作系统所需的库和头文件,然后玩转。例如,您可能想阅读:

http://snap.nlc.dcccd.edu/learn/fuller3/chap13/chap13.html

我的美味帐户中有更多链接,但它们都被数字化了;-)

【讨论】:

    【解决方案2】:

    检查这个..这是一个很好的信息集合: http://www.tcpipguide.com/free/t_toc.htm

    【讨论】:

      【解决方案3】:

      这门课程对我有用:COS 461 at Princeton。请注意,它假定具有 C 的系统级编程经验。

      几乎所有的阅读材料和讲座都可以在“教学大纲”下在线获得。您也可以尝试分配任务(不幸的是,您无法访问虚拟网络系统)。

      【讨论】:

      • 只是出于好奇,这属于普林斯顿大学本科课程的哪个部分?
      • 一般是CS专业大三、四年级的时候拿的,但也有一些人是因为感兴趣才拿的。
      【解决方案4】:

      我发现 oreilly 的“了解 linux 内核”和“了解 linux 网络内部”中的网络章节非常有帮助。

      TCP/IP 堆栈是一个非常好的开始,但还有更多内容,并且对以太网的工作原理以及 ethernet != IP != the-interweb 的作用有很长的了解。

      有关网络安全的书籍在解释网络如何在简明的环境中工作时通常做得不错,如果不是很好的话。

      对我来说真正的诀窍是找到一份实施 NAT 的工作 :)

      【讨论】:

        【解决方案5】:

        嗯……你看过 Tanenbaum 的 Computer Networks 吗?

        【讨论】:

        • 这本书很棒,很有趣,让你编写“低级”C++代码!
        【解决方案6】:

        您有嵌入式编程经验吗?如果是这样,我建议您购买these development boards 之一。它们很便宜,可以让您在网络堆栈的每个部分上工作,而且所需的所有软件工具都是免费的。

        请注意,这并不容易,我最终阅读了 CS8900 IC 数据表以了解如何使其与基于 ARM7 的处理器通信。但是,如果您喜欢这种事情(就像我一样),那么它们会很有趣。

        【讨论】:

          【解决方案7】:

          CISCO CCNA 材料包含很好的网络基础知识,但不影响编程方面。我不确定是否有官方免费链接,但您可以尝试找到它们。

          【讨论】:

            【解决方案8】:

            正如您显然已经认识到的那样,宇宙并不是以 IP 协议开始和结束的。查看OSI 7 Layer Model,其中 IP 是第 3 层(网络)协议。通用 IP 路由器将在此级别运行,但在开始编写自己的网络堆栈之前,您可能应该了解数据链路和物理层的更多复杂性。

            从各种形式的数据通信的基础知识开始,然后逐步向上,直到到达需要停下来的地方。 Data Communications, Computer Networking and Open Systems 是一个很好的基础文本,然后在您需要关注的每个领域寻找更多细节。以前的答案包括 IP 和 TCP/IP 的良好链接,如前所述,Wireshark 将让您向下看一些层

            【讨论】:

              【解决方案9】:

              【讨论】:

                【解决方案10】:

                我从TCP/IP Illustrated 学习了 IP 网络。强烈推荐。

                【讨论】:

                【解决方案11】:

                这可能无法帮助您了解它,但像 Wireshark 这样的数据包嗅探器可以让您深入了解数据在相当低级协议 (TCP/IP) 上的样子。

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 2021-07-10
                  • 2021-11-27
                  • 1970-01-01
                  • 2014-08-14
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多