我正在使用Boost::Asio(或者只是Asio)进行大量的高性能网络编程,并且对TCP和UDP协议的基本要素有相当扎实的掌握。然而,尽管我的知识渐入佳境,但我仍不认为自己是网络专家,所以想问一下:有没有一个好的方式来概括网络程序员应该知道的关键要素,特别是那些试图推动其大型网络应用性能的人呢?
关于程序员需要了解内存的知识,有一篇很棒的文章(请见下文链接),所以我想知道是否有人已经为网络编程类似地撰写了相关的文章。
我正在使用Boost::Asio(或者只是Asio)进行大量的高性能网络编程,并且对TCP和UDP协议的基本要素有相当扎实的掌握。然而,尽管我的知识渐入佳境,但我仍不认为自己是网络专家,所以想问一下:有没有一个好的方式来概括网络程序员应该知道的关键要素,特别是那些试图推动其大型网络应用性能的人呢?
关于程序员需要了解内存的知识,有一篇很棒的文章(请见下文链接),所以我想知道是否有人已经为网络编程类似地撰写了相关的文章。
以下是我脑海中需要了解的一些要点:
\r\n\r\n
是什么意思?)更新:什么是基于协议的设计?
以Web为例,HTTP是Web的协议。Apache、IIS、Lighttpd、Firefox、Opera、WebKit等...所有这些软件都使用HTTP进行通信。它们之间没有共享代码也是可能的。缺点当然是由于代码量的增加而增加错误的可能性。但也有很多好处:
当你设计一个网络协议时,可以构建多个API,每个API都针对特定的用例。或者你可以只构建一个,这取决于你自己。网络化的软件组件可以独立于彼此进行升级。基本上,你听到的有关Java/C#接口和C++抽象类的好处,在网络层应用而不是编程语言层。