本书涵盖了计算机网络知识的各个方面,全面翔实地讲解网络底层细节、网络技术、网络互联协议和应用软件等,并增加了UDP、IP电话及NAT的最新内容。本书包括详细的概念描述、丰富的实例、图表以及习题,巨细靡遗,清晰透彻,删繁就简,简明易学。随书光盘包含了200多张网络设备的图片、相关代码以及实例,方便读者实践练习。本书可以作为高等院校计算机、通信、电子等专业高年级本科生或研究生的教材,对于从事互联网方面工作的科技人员也是一本不可多得的参考书。本书前言本书的前一个版本已经产生了很好的效果。除了有几百所美国学校使用它作为网络课程的教科书外,专业人士也纷纷撰文赞许它在业界的使用价值,而且也收到了很多对它的国外译本的热烈评价。能够在当前网络书籍供过于求的市场中获得如此成功,真是一件令人欣慰并且感到满足的事情。本书的杰出所在,在于内容涵盖广泛,组织结构逻辑性强,概念解释清晰透彻,重点讲述因特网,以及给学生和教师提供了随书光盘和网站,其中包含了丰富的辅助资料:http://www.netbook.cs.purdue.edu新版本已经做了彻底的修订和更新,增加了新的三章(24,26,33)和附加的词汇条目。对光盘和网站也做了充实。新章节都是应教师和读者的请求增加的。第24章增加了UDP,第26章解释了网络地址转换,第33章涵盖了IP电话的内容。第33章特别引人注目,一般学生都喜欢使用IP电话。本书在最广泛的意义上回答了“计算机网络和互联网是如何工作的?”这个基本的问题。通过阐述底层细节(如数据传输和布线)、网络技术(如局域网和广域网)、网络互联协议和应用软件等全面的联网知识,给读者提供了综合的、自含的指导。阐明了协议如何利用底层硬件以及应用程序如何使用协议栈为用户提供各种服务功能。关于应该如何学习联网知识,目前已有大量的论述。其中存在两种观点:严格的“自下而上”的方法,或者严格的“自上而下”的方法。在自下而上方法中,读者先学习最低层的细节,然后学习相邻的较高层如何利用较低层提供扩展的功能。而在自上而下方法中,读者先开始学习高层应用,并学习足够的较低层知识以理解应用如何才能工作。每种方法都有各自的优点。传统的自下而上方法是以逻辑的方式来介绍内容,以使读者理解较高层如何构建在较低层之上。自上而下方法则是从熟悉的应用(如电子邮件)开始阐述,较少提供对于主题内容的介绍。我们推荐一种新的、综合的方法,这种方法综合了前述两个方法最好的方面。这种综合方法提前暴露出使用和构建网络应用方面的问题,同时以逻辑顺序陈述有关材料。为了实现这种综合方法,本书提供了大量的实例和习题,并且鼓励读者实际运行和修改这些实例,结合习题验证如何使概念和原理应用于真实的网络。本书的读者对象是高年级本科生或低年级研究生,他们几乎或没有联网方面的背景知识。本书既没有使用复杂的数学公式,也不假设要具备操作系统方面的知识,而只在于清晰地阐述概念,采用实例并提供大量技术原理的示意图,说明并分析结果但不提供数学证明。本书分为几大部分,第一部分介绍使用和构建网络应用(第1章~第3章),第二部分(第4章~第6章)简要阐述底层硬件如何工作,其中包括载波信号的概念,载波调制以及如何在载波上传输调制解调器编码数据。这部分也讨论面向字符的异步数据传输,定义一些在后续内容中要出现的术语,例如带宽和波特等。第三部分(第7章~第16章)重点讲述分组交换技术。这部分先介绍采用分组传输数据的动机和起因,然后描述基本的网络拓扑、组网方案以及用于网络归类的表征方法,例如局域网、广域网、本地环路、公共或专用网络以及面向连结型或无连结型网络等。这部分也介绍了下一跳路由的概念、交换、协议分层及其有关的术语。最后,这部分还使用了几个常用的网络技术作为例子,包括以太网、ATM和DSL。第四部分(第17章~第27章)重点讨论网络协议。在讨论了网络互联的起因和动机之后,这部分描述互联网结构、路由器、互联网编址、地址绑定和TCP/IP协议。对其中的一些协议(如IP、TCP、UDP和ICMP)做了更详细的讲解,使学生更深入地理解这些概念是如何联系实际的。涉及TCP的第25章包括了关于传输协议中重要的可靠性方面的深入课题。第五部分(第28章~第41章)介绍网络应用方面的问题。与本书的其他部分一样,这部分的内容也涵盖非常广泛—包括对一般原理和特定应用的讨论。从描述网络应用用于通信的客户/服务器模式开始,然后描述套接字API,分析了利用套接字进行通信的客户和服务器的源码例子。这部分还阐述了利用域名系统的名字解析以及应用方面的问题,诸如电子邮件、文件传送、IP电话和Web(包括对动态和活动文档的解释,并举出使用CGI、Java和JavaScript的例子)。对上述每个方面的内容,书中都描述了软件的结构并解释客户与服务器如何通过交互来提供服务。第38章讨论中间件,包括面向过程和面向对象的中间件技术。这部分的后面几章讨论网络安全问题,解释如何利用应用软件来管理网络。最后,第41章介绍初始化的相关问题。这章说明了应用层软件如何能完成那些看起来似乎不可能的事情—用协议软件去获得初始化正在使用的协议软件所需要的信息。本书很适合作为在高层次上掌握联网知识的一学期导引课程。本书按综合性课程来设计,涵盖了从布线到应用的全部课题。例如在美国普度大学的本科课程中,学生每周都有覆盖广泛课题的实践作业:网络测量、分组分析以及网络编程等。等到他们完成了我们的课程之后,我们期望每个学生能够达到以下程度:知道IP路由器如何利用路由表转发IP数据报;能描述数据报如何通过因特网传输;能解释以太网集线器与以太网交换机的区别;知道TCP如何标识连结以及为什么Web服务器能在80号端口处理多个连结;能描述桥接器和IP路由器的概念差别;能计算在100BaseT网络上传输的单个码位的长度;能解释为什么TCP被归类为端到端协议;能区分以太网上使用的CSMA/CD介质接入机制和令牌传递介质接入机制;知道DSL为何在导线上发送数据的同时也能用于模拟电话通信。单科课程的主要目标是广度而不是深度—要涵盖所有主题,不能只集中在几种技术或几个概念上。因此,一个成功课程的关键就在于能维持快速的学习步伐。为了能使学生在一个学期内学到基本的主题内容,可以把第二部分的较低层次内容压缩在一周内学完;把有关网络和网间互联的部分分别安排在五周内学完;剩余的几周留给应用部分(如网络管理与安全)。教师应该给学生强调概念和原理的重要性:有些技术可能在几年后就会过时,但原理却是永恒的。另外,教师也应该激发学生投身到联网技术中的热情。虽然本书没有哪个主题是具有挑战性的,但学生们仍可发现本书所含资料的数量还是有点让人望而生畏的。特别是学生们面对着过量的新术语、网络缩写字和行话也特别容易混淆,学生必须花费大量时间养成使用正确术语的习惯。为了帮助学生掌握术语,附录1提供了术语和缩写词汇表。特别说明,在词汇表中的定义都是单独编写的,并不是直接从书本中照搬过来的。因为程序设计和实验是帮助学生掌握网络知识的重要环节,所以实践环节是任何网络课程的重要组成部分。我们普度大学的课程比较强调分组分析和套接字编程。在学期的开始,我们先让学生构建客户软件去访问Web并提取数据(例如编写一个程序打印出当前的温度)。第3章解释了提供给学生的简单API例子;利用它,学生能够在懂得协议、地址和套接字概念之前就能编写可执行的代码。当然,到了学期的后期,学生就学会了使用套接字API。最后,他们还要编写一个并发Web服务器程序(支持服务器端脚本部分可选)。除了应用编程外,学生还可以利用实验室设施从正在运行的网络上捕获数据分组,并编写程序对分组(例如以太网帧、IP数据报、TCP段)的头部进行解码,并且观察TCP连结的情况。让学生去接触真实网络能够激发对实践的热情和勇气—我们的经验证明:凡是接触过网络现场的学生都能更好地理解学习主题,有更强的辨别能力。所以,如果没有专门的分组分析器,可以在一台标准PC上安装合适的共享软件来构建一个分析器。