我该如何学习真正低层次的网络编程?

33

我想学习有关网络的所有知识,从套接字到原始套接字等各种内容。我还想了解集线器、路由器、接入点等设备。例如,我想编写自己的软件来执行这种操作。是否有一个很好的信息来源?

我知道我在这里要求了很多,并且要完全解释所有内容需要从高级到低级进行讲解。我想找到一个与应用密码学在范围和深度方面类似的来源,但是关于网络的。

感谢任何可以帮助指引我(和像我这样的人)正确方向的人。

* 是的,我意识到使用任何我手工编写的网络堆栈代码都会带来巨大的安全隐患,我只是想学习 :)

类似问题: 这里。然而,我正在寻找的不仅仅是“低于TCP / UDP套接字”的内容。

编辑说明:我所说的深度在驱动程序级别之上。因此,假设位可以在电缆的两端传输,接下来会发生什么?


3
你想深入了解多少底层知识呢?你想学习:
  • 仅使用原始套接字编写TCP实现吗?
  • 为你的操作系统或嵌入式系统编写新的TCP/IP协议栈?
  • 也要编写帧封装吗?(连接以太网有线网络、Gig-E、拨号、ATM、令牌环、WiFi、蓝牙等每种网络都不同)
  • 编写网络适配器驱动程序以接收帧并将其发送到网络接口卡吗?
- Stobor
11个回答


15

这可能不能帮助您学习它,但是像Wireshark这样的数据包嗅探器将为您提供有关数据在相当低级协议(TCP / IP)中的外观的一些见解。


10

显然,宇宙并不仅限于IP协议。可以查看OSI 7层模型,其中IP是第3层(网络)协议。常见的IP路由器将在此级别上运行,但在编写自己的网络堆栈之前,您可能应该了解数据链路和物理层中的更多复杂性。

从各种形式的数据通信基础开始学习,并逐层向上,直到您需要停止的地方。 《数据通信、计算机网络和开放系统》是一个很好的基础教材,然后寻找您需要关注的每个领域的更多详细信息。以前的答案包括有关IP和TCP/IP的良好链接,并且正如提到的那样,Wireshark将让您查看一些层次结构。


6

CISCO CCNA材料包含了很好的网络基础知识,但并不涉及编程方面。我不确定是否有官方免费链接,但你可以尝试寻找。


5

4
如果您有嵌入式编程经验,我建议您购买其中一款开发板。它们价格便宜,可以让您在网络堆栈的每个部分上工作,而且所需的所有软件工具都是免费的。
请注意,开始使用它并不容易,我最终阅读了CS8900 IC数据表以了解如何使其与基于ARM7的处理器通信。但如果您喜欢这种事情(像我一样),那么它们非常有趣。

4

这本书很棒,有趣且能让你编写“低级”C++代码! - Mauricio Pasquier Juan


2
我发现O'Reilly的《深入理解Linux内核》和《深入理解Linux网络内部》中的网络章节非常有帮助。TCP/IP协议栈是一个很好的开始,但是了解以太网如何工作以及以太网与IP和互联网不同的地方会更有帮助。网络安全书籍通常在简洁的背景下做出了不错的解释。对我真正有用的是接手实施NAT的工作 :)

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接