`
xinlanzero
  • 浏览: 253077 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

(转)网络编程书籍之必修必看

阅读更多
TCP/IP协议是当前广域网和局域网通用的网络协议,因此,基于TCP/IP的编程就格外重要。从应用上来说,现在直接利用C层次Socket API进行TCP/IP编程的人确实越来越少了,各种现成的框架(如ACE、Java、.NET FCL)和控件(如IP*Works)大大简化了TCP/IP编程的难度。但是,如果想要在这个领域达到融会贯通的地步,不打下坚实的基础是不可想象的。 正如Richard Stevens在TCP/IP Illustrated中所说,在网络编程领域,开发者所遇到的实际问题中,大约有90%都与开发者对于TCP/IP的理解相关。高层的框架和控件总结了 TCP/IP的主要使用模式,并且进行了抽象和封装,这固然非常好,但是想要真正掌握TCP/IP网络编程的真谛,恐怕需要认真学习下面几本著作。

1.Richard Stevens,TCP/IP Illustrated, Vol.1 / Vol.2 / Vol.3
《 TCP/IP详解(第一卷)协议 》《 TCP/IP详解 卷2:实现 》《 TCP/IP详解卷3:TCP事务协议、HTTP、NNTP和UNIX域协议 》
《 TCP/IP详解卷1:协议(英文版) 》《 TCP/IP详解卷2:实现(英文版)》《 TCP/IP详解卷3:TCP事务协议、HTTP、NNTP和UNIX域协议(英文版)》

  这是一本众望所归的书。自从1994年出版以来,TCP/IP Illustrated就一直是TCP/IP领域具有传奇色彩的圣经级著作。这一套著作共分为三卷,第一卷通过实际动手实验的方式深入探讨TCP/IP协 议,第二卷逐行解释了4.4BSD系统TCP/IP协议栈的15,000行实现代码,第三卷探讨了T/TCP和HTTP等高级协议。整套书最大的特点就是 贴近实战,完全符合程序员的胃口,不空谈,不说教,用实验和代码来说明问题。写作这样的书,对于作者要求非常之高,即使在今天看来,敢于这么写作的作者也 是凤毛麟角。Richard Stevens以他的写作风格和作品,在TCP/IP编程领域竖立起一座丰碑,令其他作者高山仰止,心向往之。在下文将要提到的Effective TCP/IP Programming一书中,甚至把“读Stevens的书”专门列为一个条款。这套著作的地位,可见一斑。

  学习这套书,与其说需要读,不如说需要做。Stevens最强调程序员的两项能力,一是读代码,二是动手实验。他在自己所有的书里都敦促读者将 范例输入电脑,亲自编译、运行和调试。这当然需要花费大量的时间和精力,但是如果有读者能够扎扎实实地这么做,那么他所付出的每一分钟都将会有双倍的回 报。

2.Richard Stevens, UNIX Network Programming, 2/e, Vol.1 / Vol.2
《 UNIX网络编程卷2:进程间通信(影印版·第2版) 》《 UNIX网络编程(第2版)第1卷:套接口API和X/Open传输接口API 》

  又是Richard Stevens,又是经典名著。这本书的第一版问世于1990年,是Stevens的开山之作,一举奠定了Stevens在网络编程领域的重要地位。如果 说TCP/IP Illustrated解答了“什么是TCP/IP”和“TCP/IP是怎么实现的”两个问题,那么这本书则是在回答“怎样运用TCP/IP开发网络应用 程序”的问题。显而易见,这本书的内容更加贴近普通程序员,因此,大多数人是先学习UNP,然后再深入学习TCP/IP Illustrated。

  这也是一本让人伤感的书,Richard Stevens从1997年开始撰写此书第二版,制定了一个宏大的计划,卷1阐述Socket API和TLI API,卷2阐述除Socket之外的其他IPC机制,卷3阐述网络编程应用。应该说,卷1和卷2都是为了给卷3打基础。然而天妒英才,就在世人翘首企盼 第三卷的时候,1999年9月1日,Richard Stevens英年早逝。留下这套未完成的巨著,让人感慨不已。不过最近从Prentice Hall传来好消息,出版社已经找到合适的作者,重新修订这套经典巨著,其中第一卷即将问世,并且已经在Amazon上热卖。相信会有当世高人沿着 Stevens的足迹给我们续写第三卷的,让我们拭目以待。

可选图书:Douglas E. Comer, Internetworking with TCP/IP, Vol.1 / Vol.2 / Vol.3
《 用TCP/IP进行网际互联第一卷:原理、协议与结构(第四版) 》《用TCP/IP进行网际互联-第二卷:设计、实现与内核(第三版) 》《用TCP/IP进行网际互联第三卷:客户-服务器编程与应用(Linux/POSIX套接字版) 》

  这套书也是三卷,前两卷内容与TCP/IP Illustrated相似,最后一卷则偏重应用程序的开发。总体上来看,这三卷书的内容与上述Stevens的两套著作相当。Comer教授的这套书定 位是教材,因此写出来中规中矩,寓精彩于平和之中。读者如果喜欢阅读教材风格的书,这套应该是很好的选择。

3.Jon C. Snader, Effective TCP/IP Programming
(中文版《 高级TCP/IP编程 》,中国电力出版社)
自 彻读Effective C++之后,我总结出一条经验。无论在哪个领域中,一旦掌握基础知识,则应该迅速去寻找该领域中一本名为“Effective XXX”的著作并阅读之,一定可取得事半功倍的效果。Effective C++如此,Effective STL如此,Effective Java如此,这本Effective TCP/IP同样如此,也是一剂功效强大的催化剂。

  本书作者是经验丰富的TCP/IP程序员,他在这本书中总结了44个难得的TCP/IP开发经验,并且将每条经验背后的道理都详细地讲解。毫无疑问,这种“专家经验”型著作对于提高读者水平,能够起到最高效、最直接的作用。

  初学TCP/IP的朋友可能觉得,自己应该先把基本知识熟练掌握,再看这本书,效果会更好。我认为不必如此,您可以在基本观念建立起来之后直接 品读此书。这本书篇幅不大,起点不高,却对很多关键问题进行了全面而细致地介绍,在具体问题的阐述上颇有Richard Stevens之风,也是纯而又纯的程序员风格——拿代码说话。

  系统学习和重点难点的突破相结合,历来是快速掌握一门技术的良方。由Scott Meyers开创的“Effective”之风,已有愈演愈烈之势,这是程序员们的巨大福音。我强烈建议大家,不要放过任何一本以“Effective” 为名的技术书籍。

4. Douglas Schmidt, Steven Huston,C++ Network Programming, Vol.1 / Vol.2 (中文版将分别由华中科技大学出版社和电子工业出版社出版)
《 C++网络编程 卷1:运用ACE和模式消除复杂性 》《 C++网络编程,卷2 基于ACE和框架的系统化复用 》

ACE介绍
今天的网络编程环境是建立在C的基础之上。如果你满足于C层次的TCP/IP编程,那么Stevens的书可以说达到了一个 最高境界,你大可以登东山而小鲁。但是如果再上一个层次,考虑如何运用C++强大的抽象机制是网络编程变得更加富于艺术性,更加高效可靠,那么恐怕必须要 高度重视这套书。

  这套书共两卷,篇幅都不大,主要内容是介绍ACE。在C++领域,由于这套书被Bjarne Stroustrup编入C++ In Depth系列,因此具有崇高的地位。而在网络编程领域,也有人称赞此书为Stevens之后最重要的网络编程著作。作者Douglas Schmidt是C++、网络程序设计和模式领域中国际公认的权威专家,潜心研究C++网络编程已经十多年。他发起的ACE开源项目是目前当之无愧的最优 秀和最成功的C++网络编程环境,不仅具有非常出色的可移植性,而且性能卓越。美国国防部的ARPA已经支持这个项目好几年了,其最终目的是在ACE的基 础上建立可用于现代战争的分布式实时嵌入式系统。毫无疑问,ACE无论在理论上还是在实践中,都是最值得程序员关注的网络编程典范项目,而这一套两卷对 ACE的介绍性书籍,也毫无疑问是最值得网络程序员品读分析的经典。学习这两本书,你可以将经典的基于C API的网络编程知识与现代面向对象、模式和框架等最新技术思想结合起来,从而使你对网络编程的认识上升到一个新的高度。

分享到:
评论

相关推荐

    计算机网络管理课程基本介绍PPT学习教案.pptx

    课程中将涉及网络编程的基础知识,以及数据库管理和系统开发的相关技术。 为了帮助学生更好地掌握网络管理知识,课程还推荐了一系列权威教材。William Stallings的《SNMP网络管理》等书籍为学生提供了深入学习网络...

    《网络工程实践》课程教学大纲.doc

    - 后续课程是计算机网络编程,学生将在实践中进一步提升网络应用开发技能。 5. **教材与参考书**: - 教材推荐CCNA相关的书籍,以提供Cisco认证的基础知识和实践指导。 通过这门课程的学习,学生不仅能够掌握...

    高效算法:竞赛、应试与提高必修128例.rar

    《高效算法:竞赛、应试与提高必修128例》是一本专注于算法实践的书籍,对于准备面试和提升编程能力的读者来说,是一份非常宝贵的资源。书中的算法实例涵盖了数学、数据结构和算法设计等多个方面,旨在帮助读者在...

    《计算机网络实验》课程教学大纲.docx

    参考书籍包括《计算机网络(第五版)》、《计算机网络实践教程》和《计算机网络实验指导书》等,为学生提供了丰富的学习资源。 总的来说,《计算机网络实验》课程注重理论与实践相结合,通过实际操作,使学生能够熟练...

    3D游戏编程大师技巧 中文版.rar

    此外,网络编程章节讨论了多人在线游戏的同步和通信问题,这对于现代网络游戏的开发者来说是一门必修课。 总的来说,《3D游戏编程大师技巧》不仅提供了3D游戏编程的理论知识,更为读者提供了大量的实践指导,帮助...

    算法导论大神必看

    这本书之所以被称为大神必看,原因在于其深入浅出的讲解方式,以及精心挑选的示例代码。这些代码都是用伪代码表述的,因此它不是面向任何特定的编程语言,这让读者可以专注于算法本身,而不是编程语言的细节。 书中...

    java 编程思想4(中文版pdf)

    六、网络编程 Java的Socket和ServerSocket类实现了基于TCP/IP的网络通信,DatagramSocket和MulticastSocket支持UDP协议。 七、反射与注解 1. 反射:允许在运行时动态获取类的信息并操作对象,如Class类、...

    网络职业规划.pptx

    - **特长分析**:根据个人特长(如编程、设计、营销)分析其在网络行业的市场需求。 - **个人定位及目标设定**: - **短期与长期目标**:制定具体计划,包括技能提升、项目经验积累等。 - **职业定位**:明确在...

    Java编程艺术 高永强 源代码

    9. **网络编程**:Java提供了Socket和ServerSocket类进行网络通信,理解和编写基于TCP/IP和UDP的网络应用程序是现代软件开发的基础。 10. **JVM原理**:了解Java虚拟机的工作原理,包括类加载、内存管理(如堆、栈...

    UNIX高级编程21-23(大师著作)

    "UNIX高级编程21-23(大师著作)"这个压缩包文件包含了三部分关于这一主题的深度学习资料,分别命名为022.PDF、021.PDF、023.PDF,这些PDF文件很可能是从一本经典的UNIX编程书籍中提取的章节。 UNIX高级编程涵盖了...

    安全编程技巧

    最后,"安全程序设计"和"安全编程修炼之道"这两本书籍的提及,表明该主题深入探讨了安全编程的实践和理论,涵盖了一系列从基础到高级的安全编程技巧和方法。 总之,安全编程是一个多维度的课题,包括ShellCode编写...

    C++ 学习资料大全 C++编程思想 WINDOWS 核心编程 WINDOWS程序设计第5版 深入浅出MFC简体中文版 C++ Primer 3rd Edition 中文完美版

    2. **WINDOWS核心编程**:这是一本深入探讨Windows操作系统内部机制的书籍,涵盖了进程、线程、内存管理、文件系统、网络编程等关键主题,对于想要编写底层系统级程序的开发者来说是不可或缺的参考书。 3. **...

    编程学习指南

    通过以上知识点的详细介绍,我们可以看出,《编程学习指南》不仅为编程初学者提供了宝贵的入门建议,还推荐了一系列经典的计算机科学书籍,帮助读者建立坚实的技术基础。此外,该指南还对大学期间的必修课程进行了...

    java算法分析与设计之矩阵连乘问题源代码

    算法作为计算机专业学生的必修课,同时也是软件开发过程中必备的编程思想,对学习研究计算机专业意义重大;正因为这门课程难,所以除了相关方面的书籍,网络资源少的可怜,尤其是java代码简直如大海捞针。因此,做完...

    TCP-IP详解(三卷全)

    这套书不仅是理论研究的宝贵资料,同时也是网络编程、设备配置与管理实践中的得力助手。无论是初学者还是资深专家,都能从中受益匪浅。 总之,《TCP-IP详解》三卷全书是对网络协议栈从底层到应用层的全方位解读。...

    java算法分析与设计之图的m着色问题源代码

    算法作为计算机专业学生的必修课,同时也是软件开发过程中必备的编程思想,对学习研究计算机专业意义重大;正因为这门课程难,所以除了相关方面的书籍,网络资源少的可怜,尤其是java代码简直如大海捞针。因此,做完...

    java算法分析与设计之集装箱装载问题源代码

    算法作为计算机专业学生的必修课,同时也是软件开发过程中必备的编程思想,对学习研究计算机专业意义重大;正因为这门课程难,所以除了相关方面的书籍,网络资源少的可怜,尤其是java代码简直如大海捞针。因此,做完...

    java算法分析与设计之最长公共子序列问题源代码

    算法作为计算机专业学生的必修课,同时也是软件开发过程中必备的编程思想,对学习研究计算机专业意义重大;正因为这门课程难,所以除了相关方面的书籍,网络资源少的可怜,尤其是java代码简直如大海捞针。因此,做完...

    算法分析与设计之套汇问题java源代码和实验报告

    算法作为计算机专业学生的必修课,同时也是软件开发过程中必备的编程思想,对学习研究计算机专业意义重大;正因为这门课程难,所以除了相关方面的书籍,网络资源少的可怜,尤其是java代码简直如大海捞针。因此,做完...

    java算法分析与设计之单源最短路径(Dijkstra算法)源代码

    算法作为计算机专业学生的必修课,同时也是软件开发过程中必备的编程思想,对学习研究计算机专业意义重大;正因为这门课程难,所以除了相关方面的书籍,网络资源少的可怜,尤其是java代码简直如大海捞针。因此,做完...

Global site tag (gtag.js) - Google Analytics