TCP/IP网络编程之四书五经

                                                                                                                            孟岩



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、TCP/IP Illustrated, Vol.1 / Vol.2 / Vol.3

       
     

Richard Stevens,TCP/IP Illustrated英文版(卷一、
卷二卷三)、中文版(卷一、
卷二卷三
机械工业出版社

这是一本众望所归的书。

自从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、UNIX Network Programming, 2/e, Vol.1 / Vol.2

                 

Richard Stevens,UNIX Network Programming英文版(卷一、
卷二)、中文版(卷一、
卷二) 清华大学出版社

又是Richard Stevens,又是经典名著。

这本书的第一版问世于1990年。是Stevens的开山之作,一举奠定了Stevens在网络编程领域的重要地位。

假设说TCP/IP Illustrated解答了“什么是TCP/IP”和“TCP/IP是怎么实现的”两个问题,那么这本书则是在回答“如何运用TCP/IP开发网络应用程序”的问题。

显而易见。这本书的内容更加贴近普通程序猿,因此,大多数人是先学习这本书,然后再深入学习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 Illustrated相似,最后一卷则偏重应用程序的开发。整体上来看。这三卷书的内容与上述Stevens的两套著作相当。Comer教授的这套书定位是教材,因此写出来中规中矩,寓精彩于平和之中。读者假设喜欢阅读教材风格的书,这套应该是非常好的选择。

3、Effective TCP/IP Programming

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、C++ Network Programming, Vol.1 / Vol.2

        

Douglas C. Schmidt,Stephen
D. Huston
,,C++ Network Programming英文版(卷一、
卷二)、中文版(卷一、
卷二

今天的网络编程环境是建立在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的网络编程知识与现代面向对象、模式和框架等最新技术思想结合起来。从而使你对网络编程的认识上升到一个新的高度。

TCP/IP是计算机网络协议中的一族。我们学习TCP/IP。是为了更好的进行网络编程。

而为了更好地学习网络编程,还应该打下扎实的计算机网络理论基础。虽说“计算机网络”书籍应该是另外一个主题,可是假设考虑到与TCP/IP的学习相配合,我倒想在这里额外推荐一本相关的书籍:

Larry Patterson & Bruce Davie,Computer Networks:
Systems Approach Second Edition

这本书的作者是普林斯顿大学教授,对于网络系统有极为深刻的理解。作品的最大特点是以很系统的方式介绍了网络系统的“why”和“how”,整本书思维很清晰,读来连贯一致,欲罢不能。而对于提高你的TCP/IP编程能力。它有一个非常有意义的作用。

版权声明:本文博客原创文章,博客,未经同意,不得转载。

TCP/IP的经典网络编程的更多相关文章

  1. 读书笔记——网络编程与开发技术(3)基于TCP/IP协议的网络编程相关知识

    TCP/IP协议:数据链路层,网络层,传输层,应用层. IP地址分为5类:A类.B类.C类.D类.E类. (A类.B类.C类是基本类,D类多用于多播传送,E类为保留类.) "*"表 ...

  2. 计算机网络通信TCP/IP协议浅析 网络发展简介(二)

    本文对计算机网络通信的原理进行简单的介绍 首先从网络协议分层的概念进行介绍,然后对TCP.IP协议族进行了概念讲解,然后对操作系统关于通信抽象模型进行了简单介绍,最后简单描述了socket   分层的 ...

  3. TCP/IP概述(网络互联与TCP/IP)

    TCP/IP概述(网络互联与TCP/IP) 用IP实现异构网络互联 从用户角度如何实现异构网络互联: 从用户角度看,实现异构网络互联的关键点就是使各种网络类型之间的差异对自己透明.在TCP/IP协议中 ...

  4. 《TCP/IP入门经典》摘录--Part 1

    TCP/IP基础知识 什么是TCP/IP Transmission Control Protocol/Internet Protocol的简写,中译名为传输控制协议/因特网互联协议,又名网络通讯协议, ...

  5. TCP/IP笔记(一)网络基础知识

    计算机与网络发展 计算机自诞生伊始,经历了一系列演变与发展.大型通用机计算机.超级计算机.小型机.个人电脑.工作站.便携式电以及现如今的智能手机终端都是这一过程的产物.它们性能逐年增强,价格却逐年下降 ...

  6. 【TCP/IP】【网络基础】网页访问流程

    引用自 <鸟哥的linux私房菜> http://cn.linux.vbird.org/linux_server/0110network_basic_1.php#ps7 那 TCP/IP ...

  7. 《TCP/IP入门经典》摘录--Part 3

    TCP/IP协议系统 3.子网划分和CIDR 子网 划分网络 为什么需要划分子网? 子网划分就是在网络 ID 之下提供了第 2 层逻辑组织.路由器能够把数据报发送给网络里的某个子网地址(一般对应于一个 ...

  8. 《TCP/IP入门经典》摘录--Part 2

    TCP/IP协议系统 1.网络访问层 网卡(network adapter),即网络接口板,又称网络适配器或NIC (网络接口控制器),是一块被设计用来允许计算机在计算机网络上进行通讯的计算机硬件,由 ...

  9. linux视频学习3(linux安装,shell,tcp/ip协议,网络配置)

    linux系统的安装: 1.linux系统的安装方式三种: 1.独立安装linux系统. 2.虚拟机安装linux系统. a.安装虚拟机,基本是一路点下去. b.安装linux. c.linux 安装 ...

随机推荐

  1. 这么多的技术,作为一个freshman,什么研究?

    科学技术,从哪里学习?        杨问了我几个最近:"如何学习技术?".说实话,其实,我自己只是一个资深兄弟.对于这个答案.这是更难以在本身回答. 可是.既然比师弟们多吃了几年 ...

  2. String,StringBuffer和StringBuilder的异同

                                                                    String,StringBuffer和StringBuilder的异同 ...

  3. iOS UIWebView 载入https 网站出现NSURLConnection/CFURLConnection HTTP load failed (kCFStreamErrorDomainSSL,

    今天在载入https网站的时候遇到例如以下的错误问题.所以对自己之前写的iOS内嵌webview做了一些改动,能够让它载入http网站也能够让它载入https网站. 以下是我载入https网站的时候出 ...

  4. Thread.join()分析方法

    API: join public final void join() throws InterruptedException 等待该线程终止. 抛出: InterruptedException - 假 ...

  5. [原创] linux 下上传 datapoint数据到yeelink 【golang版本】

    package main /* Create by sndnvaps<sndnvaps@gmail.com> * date : 2015-04-05 * upload datapoint ...

  6. 小米2S twrp 中文,支持双系统

    更新日志: 更新日志: 汉化了要使用的功能 修改语言选择方式,修改为下拉方式 TDB(TrueDualBoot) 功能完美实现 **adb**功能,完美实现,无需特别操作(比CWM强大) 修改双系统切 ...

  7. ORACLE触发特定的解释

    ORACLE PL/SQL编程八: 把触发器说透 本篇主要内容例如以下: 8.1 触发器类型 8.1.1 DML触发器 8.1.2 替代触发器 8.1.3 系统触发器 8.2 创建触发器 8.2.1 ...

  8. Lua中的require(转)

    lua中的require机制    为了方便代码管理,通常会把lua代码分成不同的模块,然后在通过require函数把它们加载进来.现在看看lua的require的处理流程.1.require机制相关 ...

  9. Scrapy系列教程(2)------Item(结构化数据存储结构)

    Items 爬取的主要目标就是从非结构性的数据源提取结构性数据,比如网页. Scrapy提供 Item 类来满足这种需求. Item 对象是种简单的容器.保存了爬取到得数据. 其提供了 类似于词典(d ...

  10. android 常见的解决(mdpi、hdpi 、xhdpi、xxhdpi )屏幕调整

    查询到执行的system service后,就能够在dumpsys后面加上service的名字,查看指定的service信息. adb shell dumpsys activity adb shell ...