TCP/IP的经典网络编程

                                                                         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编程能力。它有一个非常有意义的作用。

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

时间: 2024-10-28 23:55:39

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

基于 TCP/IP 协议的网络编程

在说明基于 TCP/IP 协议的网络编程之前,先来了解一下 Socket(网络套接字): 利用套接字(Socket)开发网络应用程序早已被广泛的采用,以至于成为事实上的标准 通信的两端都要有 Socket,是两台机器间通信的端点(API 原话) 网络通信其实就是 Socket 间的通信 Socket 允许程序把网络连接当成一个流,数据在两个 Socket 间通过 IO 传输 一般主动发起通信的应用程序属客户端,等待通信请求的为服务端 网络编程某种程度上可以称作"Socket 编程" T

加域报错:“TCP/IP没有安装网络协议”

检查电脑后发现问题: 1.电脑不能自动获取IP地址 2.手动设置IP地址后加域报错 估计TCP/IP协议损坏,重新安装即可解决:以下为重装TCP/IP协议方法: 1.打开注册表编辑器,删除以下两个键: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Winsock HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Winsock2 2.用记事本打开%winroot%\inf\nett

TCP IP入门经典+第5版 PDF

<TCP IP入门经典+第5版> PDF 只需一元 链接:https://pan.baidu.com/s/1dQUk5tJ62TTD3n9V12dYZA 密码:yzae 原文地址:https://www.cnblogs.com/luoshuifusheng/p/9305172.html

【Java TCP/IP Socket】Socket编程知识点总结

简介 1.协议相当于相互通信的程序间达成的一种约定,它规定了分组报文的结构.交换方式.包含的意义以及怎样对报文所包含的信息进行解析. 2.TCP/IP协议族有IP协议.TCP协议和UDP协议. 3.TCP协议和UDP协议使用的地址叫做端口号,用来区分同一主机上的不同应用程序.TCP协议和UDP协议也叫端到端传输协议,因为他们将数据从一个应用程序传输到另一个应用程序,而IP协议只是将数据从一个主机传输到另一个主机. 4.在TCP/IP协议中,有两部分信息用来确定一个指定的程序:互联网地址和端口号:

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

TCP/IP基础知识 TCP/IP模块化设计的主要优点是:由于TCP/IP的模块化设计,TCP/IP协议栈能够方便地进行修改来适应特定的硬件和操作环境.将网络软件划分为具体的.设计良好的组件,有助于开发人员更容易地编写出于协议系统进行交互的程序. 1.网络协议簇的规则 2.TCP/IP模型的协议层 网络访问层:提供了与物理网络连接的接口.针对传输介质设置数据的格式,根据硬件的物理地址实现数据的寻址,对数据在物理网络中的传递提供错误控制.网际层:提供独立于硬件的逻辑寻址,从而让数据能够在具有不同物

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

TCP/IP协议系统 3.子网划分和CIDR 子网 划分网络 为什么需要划分子网? 子网划分就是在网络 ID 之下提供了第 2 层逻辑组织.路由器能够把数据报发送给网络里的某个子网地址(一般对应于一个网段),而当数据报到达子网之后,就会被ARP解析为物理地址.那么子网地址从何而来呢,32位的IP地址不是被划分为网络ID和主机ID了吗?TCP/IP的设计者借用了主机 ID 里的一些位来形成子网地址.一个名为子网掩码的参数指明了地址中多少位用于子网ID.保留多少位作为实际的主机ID. 与IP地址一样

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

linux系统的安装: 1.linux系统的安装方式三种: 1.独立安装linux系统. 2.虚拟机安装linux系统. a.安装虚拟机,基本是一路点下去. b.安装linux. c.linux 安装的时候,分区是关键. /boot 分区 100M. /swap 交换分区.一般是物理内存的2倍,不超过256M. /root 根分区.尽可能的大. 3.双系统安装. 2 linux下的shell 3.TCP/IP 协议 4.samba服务器.主要是linux和window的交互.

UDP/IP协议的网络编程

//127.0.0.1是本机IP地址 package lianxi1; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import org.junit.Test; public class TestUDP1 { @Test public void send(){ DatagramSocket ds = null; try { ds = new Datagra

网络编程TCP/IP实现客户端与客户端聊天

一.TCP/IP协议 既然是网络编程,涉及几个系统之间的交互,那么首先要考虑的是如何准确的定位到网络上的一台或几台主机,另一个是如何进行可靠高效的数据传输.这里就要使用到TCP/IP协议. TCP/IP协议(传输控制协议)由网络层的IP协议和传输层的TCP协议组成.IP层负责网络主机的定位,数据传输的路由,由IP地址可以唯一的确定Internet上的一台主机.TCP层负责面向应用的可靠的或非可靠的数据传输机制,这是网络编程的主要对象. 二.TCP与UDP TCP是一种面向连接的保证可靠传输的协议