我怎样才能真正学习底层网络编程?
所以我想学习所有关于网络的知识。 远低于套接字,一直到原始套接字之类的东西。 我想了解集线器、路由器、接入点等。例如,我希望能够编写自己的软件来执行此类操作。* 是否有此类信息的重要来源?
我知道我在这里问了很多,要充分解释这一切需要从高层次到低层次。 我想我正在寻找与 Applied Cryptography 范围和深度相似的来源,但是关于网络。
感谢任何可以帮助我(以及像我这样的人?)指明正确方向的人。
* 是的,我意识到使用任何我手工制作的网络堆栈代码都将是一个巨大的安全问题,我只是想这样做来学习:)
类似问题: 此处。 然而,我寻找的不仅仅是“TCP/UDP 套接字下面有什么?”。
编辑澄清:我所说的深度高于驱动程序级别。 因此,假设这些位可以往返于电线的另一端,接下来该怎么办?
So I want to learn all about networks. Well below the socket, down to raw sockets and stuff. And I want to understand hubs, routers, access points, etc. For example, I'd like to be able to write my own software to do this kind of stuff.* Is there a great source for this kind of information?
I know that I'm asking a LOT here, and that to fully explain it all requires from high level down to low level. I guess I'm looking for a source similar in scope and depth to Applied Cryptography, but about networks.
Thanks to anyone who can help to point me (and others like me?) in the right direction.
* Yes, I realize using any of my hand-crafted network stack code would be a huge security issue, and am only looking to do it to learn :)
Similar Question: here. However I'm looking for more than just 'what's below TCP/UDP sockets?'.
Edited for Clarification: The depth I'm talking about is above the driver level. So assuming that the bits can make it to and from the other end of the wire, what next?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(11)
我从 TCP/IP 说明 中学习了 IP 网络。 强烈推荐。
I learned IP networking from TCP/IP Illustrated. Highly recommended.
这可能无法帮助您学习它,但是像 Wireshark 这样的数据包嗅探器可以让您深入了解数据的外观就像一个相当低级的协议(TCP/IP)。
This may not help you learn it, but a packet sniffer like Wireshark will give you some insight into what the data looks like at a pretty low-level protocol (TCP/IP).
正如您显然已经认识到的那样,宇宙并不以 IP 协议开始和结束。 查看 OSI 7 层模型,其中 IP 是第 3 层(网络)协议。 常见的 IP 路由器将在此级别运行,但在开始编写自己的网络堆栈之前,您可能应该了解数据链路层和物理层的更多复杂性。
从各种形式的数据通信基础知识开始,然后逐步向上,直到到达需要停止的地方。 Data Communications, Computer Networking and Open Systems是很好的基础课文,然后看有关您需要关注的每个领域的更多详细信息。 以前的答案包括 IP 和 TCP/IP 的良好链接,并且如上所述,Wireshark 将让您向下查看某些层
As you have obviously recognised, the universe does not start and end with the IP Protocol. Take a look at the OSI 7 Layer Model where IP is a Layer 3 (Network) protocol. Common IP Routers will operate at this level, but there is more complexity you probably should understand in the Data Link and Physical layers before you start coding your own network stacks.
Start with the fundamentals of data communications in all its myriad forms and work your way up the stack until you get to where you need to stop. Data Communications, Computer Networking and Open Systems is a good foundation text, and then look for more detail on each area you need to focus on. Previous answers include good links for IP and TCP/IP, and as mentioned Wireshark will let you look down through some of the layers
CISCO CCNA 材料包含了很棒的网络基础知识,但不影响编程方面。 我不确定是否有官方免费链接,但你可以尝试找到它们。
CISCO CCNA materials contain a great network fundamentals, but does not affect programming aspect. I'm not sure that there is an official free link, but you can try to find them.
您应该为自己配备 ac 编译器以及操作系统所需的库和头文件并进行测试。 您可能想阅读例如:
http://snap.nlc。 dcccd.edu/learn/fuller3/chap13/chap13.html
我的美味帐户中有更多链接,但它们都消失了;-)
You should equip yourself with a c compiler and the necessary libs and headers for your OS and play around. You may want to read for example:
http://snap.nlc.dcccd.edu/learn/fuller3/chap13/chap13.html
I had some more links in my delicious account, but they all went down the digital drain ;-)
您有嵌入式编程经验吗? 如果是这样,我建议您购买这些开发板之一。 它们很便宜,允许您处理网络堆栈的每个部分,而且所需的所有软件工具都是免费的。
请注意,继续下去并不容易,我最终阅读了 CS8900 IC 数据表,以了解如何使其与基于 ARM7 的处理器进行通信。 但如果你喜欢这类事情(就像我一样),那么它们会很有趣。
Have you any embedded programming experience ? If so I recommend you buy one of these development boards. They are cheap and allow you work on every part of the networking stack plus all the software tools required are free.
Note that getting going on it isn't easy and I ended up reading the CS8900 IC datasheet to learn how to make it communicate with the ARM7 based processor. But if you enjoy that sort of thing (as I do) then they are great fun.
嗯...您研究过计算机网络 作者:Tanenbaum ?
Hmmm ... have you looked into Computer Networks by Tanenbaum ?
TCP/IP 指南
The TCP/IP Guide
我发现 oreilly 的“理解 Linux 内核”和“理解 Linux 网络内部结构”中的网络章节非常有帮助。
TCP/IP 堆栈是一个非常好的开始,但还有更多内容,对以太网如何工作以及以太网!= IP!= the-interweb 的良好理解将大有帮助。
有关网络安全的书籍通常可以在简洁的背景下解释网络如何工作,即使不是很好。
对我来说真正有用的是从事 NAT 工作:)
I have found the networking chapter in "understanding the linux kernel" and "understanding linux network internals" from oreilly to be very helpful.
The TCP/IP stack is a very good start but there is a lot more and a good understanding of how ethernet works and how ethernet != IP != the-interweb will go a long way.
books on network security often do a decent if not goos job explaining how networks work in a concise context.
what really did the trick for me was taking a job implementing NAT :)
这门课程对我有用:普林斯顿大学的 COS 461 。 请注意,它假设您具有系统级 C 编程经验。
几乎所有阅读材料和讲座都可以在“教学大纲”下在线获取。 您也可以尝试分配(不幸的是,您将无法访问虚拟网络系统)。
This course worked for me: COS 461 at Princeton. Note that it assumes system-level programming experience with C.
Pretty much all the readings and lectures are available online under "Syllabus". And you can try the assignments too (unfortunately, you won't have access to the Virtual Network System).
检查这个..这是一个很好的信息集合:
http://www.tcpipguide.com/free/t_toc.htm
Check this.. it is a good collection of information:
http://www.tcpipguide.com/free/t_toc.htm