因此,我正在使用 Boost::Asio(或者如果你愿意的话,也可以只使用 Asio)进行大量高性能网络编程,并且对 TCP 和 UDP 协议的基本知识有相当扎实的掌握。不过我想知道,因为尽管我有知识,但我仍然不认为自己是网络专家,什么是构建网络程序员应该知道的基本知识的好方法,特别是对于那些试图提高基于大型网络的性能的人应用程序?
有一篇关于程序员以及他们应该了解的关于内存的好文章(见下文),所以我想知道是否有人为网络整理了类似的东西。
因此,我正在使用 Boost::Asio(或者如果你愿意的话,也可以只使用 Asio)进行大量高性能网络编程,并且对 TCP 和 UDP 协议的基本知识有相当扎实的掌握。不过我想知道,因为尽管我有知识,但我仍然不认为自己是网络专家,什么是构建网络程序员应该知道的基本知识的好方法,特别是对于那些试图提高基于大型网络的性能的人应用程序?
有一篇关于程序员以及他们应该了解的关于内存的好文章(见下文),所以我想知道是否有人为网络整理了类似的东西。
我的一些要点是你应该知道的:
\r\n\r\n
Ascii 序列化和消息框架(在 HTTP中是什么意思?)更新:基于协议的设计是什么意思?
考虑一下 HTTP,Web 的协议。Apache、IIS、Lighttpd、Firefox、Opera、WebKit 等……所有这些软件都使用 HTTP。很可能他们都没有共享代码来这样做。当然,不利的一面是由于代码的净量而增加了错误的可能性。有很多好处:
当你设计一个网络协议时,你可以自己构建几个 API,每个 API 都是针对特定用例量身定制的。或者你可以建立一个,这取决于你。联网的软件组件可以相互独立升级。基本上,您听到的所有关于 Java/C# 接口和 C++ 抽象类的优点,但都应用于网络层而不是编程语言层。