是的,我终于读完了这本书。
作为一个在大学里没有学过计算机网络课程的人,我长期以来一直想集中学习这门学科。然而,我找不到向公众开放的可靠大学课程(比如麻省理工学院的算法导论)。许多以“简介”为前缀的教科书花费了数百页的篇幅来解释相当低级的概念,例如路由算法甚至连接大陆的物理线路!
然后我找到了网上经常推荐的Beej的网络编程指南。乍一看,我觉得这本书很容易读,因为作者以幽默的方式解释概念。但同时,与其他计算机网络书籍相比,这本书包含了很多代码示例,因此我认为它更适合想要实际套接字编程实践的程序员。
读完除了第9章之外的所有章节(因为它更像是一堆C套接字函数的参考),我发现它读得很好。
本书从IP、端口、套接字等一些基本概念开始。然而,它并没有深入介绍用于网络通信的非常技术性的算法或物理设备。作为一名每天处理 Web 应用程序的开发人员,我发现它与我的工作更相关。尽管这本书有时会提到位和字节,但它仍然是可读的,而且你在阅读书中的 C 代码时通常不会进行任何按位运算。
对于那些想要亲自接触代码的人来说,这本书适合你。除了计算机网络的一般概述部分外,书中的大部分解释都附带了 C 代码示例。这对于了解 Web 应用程序中实际的网络通信如何发生特别有用。例如,轮询操作会扫描所有已注册的套接字,检查是否有传入事件需要处理。
此外,这些示例不导入任何外部库,因此您不必处理恼人的第三方依赖问题。
这本书非常适合作为套接字编程和相关系统调用的友好参考。然而,它不会“更高”或“更低”:
但是,我发现了同一作者编写的另一个很好的资源:Beej's Guide to Networking Concepts。它似乎比这本书更全面地涵盖了许多核心概念,并带有大量编码练习。我希望这本“概念”书能够填补“编程”书的空白。
如果您对 C 编程了解不多,这本书可能会让您不知所措。它没有解释任何基本概念,例如指针或类型转换。虽然我们不会像处理 CMake 时那样遭受依赖地狱的困扰,但如果你对 C 不太了解,那么阅读代码仍然会很困难。
我个人对 C 代码没问题。然而,如果这本书是用 Python 编写的话,可能会更适合初学者,Python 的套接字库中几乎包含了 C 语言套接字函数的所有对应函数。同一个作者的“概念”书这次使用了Python,所以我们可以期待其中的乐趣。
总的来说,本书充满了实用的代码示例,在理解使用套接字系统调用的网络应用程序时非常有用。当然,在编写自己的应用程序时,您实际上并不需要使用这些函数,因为许多语言都支持自己的那些“低级”套接字网络函数的包装器(Python 有像 socketserver 和 http 这样的库)。尽管如此,我认为一旦你成为一名开发人员,你就应该了解所有这些使用 HTTPS 或 websocket 的高度抽象通信背后发生的事情。从这个意义上来说,这本书值得一读,也是一本很好的参考书。
以上是[书评] Beej 的网络编程指南的详细内容。更多信息请关注PHP中文网其他相关文章!