我怎样才能学习_really_低级网络编程?

时间:2021-06-28 20:40:13

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?'.

类似的问题:这里。但是,我正在寻找的不仅仅是“TCP / UDP套接字以下的内容?”。

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?

编辑澄清:我所谈论的深度高于驾驶员水平。假设这些位可以进出线的另一端,接下来是什么?

11 个解决方案

#1


I learned IP networking from TCP/IP Illustrated. Highly recommended.

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

#2


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).

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

#3


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.

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

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

从各种形式的数据通信基础开始,沿着堆栈向上工作,直到到达需要停止的位置。数据通信,计算机网络和开放系统是一个很好的基础文本,然后查找需要关注的每个领域的更多细节。以前的答案包括IP和TCP / IP的良好链接,如上所述,Wireshark将让您向下看一些层

#4


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.

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

#5


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.

请注意,继续使用它并不容易,我最终阅读了CS8900 IC数据手册,以了解如何使其与基于ARM7的处理器进行通信。但如果你喜欢那种东西(和我一样),那么它们就很有趣。

#6


Hmmm ... have you looked into Computer Networks by Tanenbaum ?

嗯......你看过Tanenbaum的计算机网络吗?

#7


I have found the networking chapter in "understanding the linux kernel" and "understanding linux network internals" from oreilly to be very helpful.

我从oreilly中找到了解“了解linux内核”和“理解linux网络内部”的网络章节非常有帮助。

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.

TCP / IP堆栈是一个非常好的开始,但是有很多并且很好地理解以太网如何工作以及以太网!= IP!= -interweb将会有很长的路要走。

books on network security often do a decent if not goos job explaining how networks work in a concise context.

关于网络安全的书籍通常会做一个体面的,如果不是goos工作,解释网络如何在简洁的环境中工作。

what really did the trick for me was taking a job implementing NAT :)

对我来说真正的诀窍就是实现NAT的工作:)

#8


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:

您应该为自己的操作系统配备一个c编译器和必要的库和标题,并进行操作。您可能想要阅读例如:

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 ;-)

我在我的美味账户中有更多的链接,但他们都在数字流失;-)

#9


The TCP/IP Guide

TCP / IP指南

#10


This course worked for me: COS 461 at Princeton. Note that it assumes system-level programming experience with C.

本课程适合我:普林斯顿大学的COS 461。请注意,它假定使用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).

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

#11


Check this.. it is a good collection of information: http://www.tcpipguide.com/free/t_toc.htm

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

#1


I learned IP networking from TCP/IP Illustrated. Highly recommended.

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

#2


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).

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

#3


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.

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

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

从各种形式的数据通信基础开始,沿着堆栈向上工作,直到到达需要停止的位置。数据通信,计算机网络和开放系统是一个很好的基础文本,然后查找需要关注的每个领域的更多细节。以前的答案包括IP和TCP / IP的良好链接,如上所述,Wireshark将让您向下看一些层

#4


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.

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

#5


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.

请注意,继续使用它并不容易,我最终阅读了CS8900 IC数据手册,以了解如何使其与基于ARM7的处理器进行通信。但如果你喜欢那种东西(和我一样),那么它们就很有趣。

#6


Hmmm ... have you looked into Computer Networks by Tanenbaum ?

嗯......你看过Tanenbaum的计算机网络吗?

#7


I have found the networking chapter in "understanding the linux kernel" and "understanding linux network internals" from oreilly to be very helpful.

我从oreilly中找到了解“了解linux内核”和“理解linux网络内部”的网络章节非常有帮助。

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.

TCP / IP堆栈是一个非常好的开始,但是有很多并且很好地理解以太网如何工作以及以太网!= IP!= -interweb将会有很长的路要走。

books on network security often do a decent if not goos job explaining how networks work in a concise context.

关于网络安全的书籍通常会做一个体面的,如果不是goos工作,解释网络如何在简洁的环境中工作。

what really did the trick for me was taking a job implementing NAT :)

对我来说真正的诀窍就是实现NAT的工作:)

#8


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:

您应该为自己的操作系统配备一个c编译器和必要的库和标题,并进行操作。您可能想要阅读例如:

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 ;-)

我在我的美味账户中有更多的链接,但他们都在数字流失;-)

#9


The TCP/IP Guide

TCP / IP指南

#10


This course worked for me: COS 461 at Princeton. Note that it assumes system-level programming experience with C.

本课程适合我:普林斯顿大学的COS 461。请注意,它假定使用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).

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

#11


Check this.. it is a good collection of information: http://www.tcpipguide.com/free/t_toc.htm

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