📄 前 言.txt
字号:
前 言当本书第1版在1996年(按因特网的时间仿佛已是一百年以前)出版时,在因特网上购物还是很新奇的事情,那时如果一个公司能用它的域名做广告,它就会被认为具有极大的优越条件。而当今社会,因特网商务已经进入日常生活中,公司以“.com”来注册它的法定名字,而不是因特网名字,已经不是什么稀罕的事情。证券经纪人也经常查询“.com股票”。当一个咖啡零售商宣布发展一个因特网策略计划时,它的身价倍增。指出因特网上飞速度化的事情,就有点像指出天空是蓝的一样。尽管有这么大的变化,我们在第1版中提出的问题对于今天来说仍然是有效的:什么是使因特网运行的基本概念和技术?回答是TCP/IP体系结构的大部分功能对于今天仍然适用,这一点正像30年前它的创立者预见的那样。这并不是说因特网的体系结构没什么新鲜的,而正相反。一个体系结构30年来不仅幸存下来,而且促进因特网快速地增长和变化,了解其中的设计原理正是我们的出发点。正像第1版一样,第2版把因特网的体系结构“何以如此”作为它的基础。读者我们的目的是把这本书作为网络课的入门教材,供研究生或高年级本科生使用。我们也相信,这本书的核心概念不但对正在进行再培训以便完成网络相关任务的专业人员有吸引力,而且也可以帮助网络从业人员深入理解每天都要接触的网络协议并且可以对网络有一个整体的概念。根据我们的经验,第一次学习网络的学生和专业人员常常把网络协议理解成一种从高层传到低层的命令,所以只要尽量学习术语缩写就可以了。事实上协议是从工程设计原理的应用中开发出的复杂系统的建造模块。不仅如此,根据现实世界的经验,协议总是不断地被精炼、扩展和替换。因此,这本书的目标并不单纯介绍当今使用的协议,更侧重于解释合理的网络设计的基本原理。我们认为把握这些基本原理是对付当今网络瞬息万变的最好办法。在第2版中的变化侧重网络的基本原理听起来好象是为第2版中不做改动找借口。其实正相反,第2版跟踪网络的最重要的新进展,补充了大量的新材料。我们也删除、重新组织和改变了原有材料的侧重点,以反映这4年中发生的变化。另外,我们也考虑到来自读过第1版的人,和没读过第1版的人的大量反馈意见。本版的改动包括: ■ 新增关于网络安全的一章,内容包括PGP、IPSEC、安全套接字和防火墙。 ■ 新增关于网络应用的一章,内容包括SMTP、HTTP、SNMP、DNS以及实时多媒体应用使用的RTP协议等。 ■ 在服务质量和拥塞控制方面补充了大量新材料,内容包括在区分服务和RSVP方面的最新进展。 ■ 对路由选择协议的进一步探讨,内容包括OSPF和BGP。 ■ 新增关于无线技术的一节,内容包括扩展频谱技术和最近新出现的802.11标准。 ■ 对音频和视频压缩的探讨,内容包括MPEG和MP3。 ■ 增加了ATM的内容,内容包括局域网仿真(LANE) 。 ■ 在公共的因特网顶层建立虚拟专用网(VPN)的材料。 ■ 高速网的内容贯穿全书,而不是限制在某一章中。总的说来,本书x有两点明显的改动。首先,按照教师的反馈意见,我们把理解协议实现的教学工具x-kernel去掉了,用不依赖于操作系统的C代码代替它。在下面还要讨论这种改动的细节。其次,我们在每章的最后明显增加了练习的数量和质量。这一工作由一个专门的教师负责,他从第1版开始就讲授我们这本书。方法对于像计算机网络这样动态的和不断变化的领域来说,一本教材能提供的最重要的东西就是洞察能力,以便能够区别什么是重要的,什么是不重要的,什么是长久的,什么是肤浅的。基于我们致力于网络新技术研究的20年经验,和对本科生和研究生讲授网络最新趋势的课堂反馈,以及把先进的网络产品投放市场的经验,我们已经提炼出我们自己的观点,叫做系统方法,它构成了本书的精髓,这种系统方法有以下几个含义: ■ 与其接受实际网络产品作为,不如从最基本的原理开始,让你了解通向当今网络技术的发展过程。这就能让你解释网络为什么像现在这样设计。根据我们的经验,一旦你理解了基本原理,你遇到的任何新协议就会很容易地被你消化吸收。 ■ 虽然材料基本上是围绕传统的网络分层组织的,从底层开始并且按协议栈向上展开,但是我们并不严格的采用分层方法。许多课题没有分层的含意,例如拥塞控制和安全性就是这样,所以我们在传统的分层模型之外讨论它们。简言之,我们相信可以很好地使用分层,但是不必受它的限制。采用端到端的观点常常是有用的。 ■ 与其抽象的理解协议如何工作,不如我们使用当今最重要的协议具体地说明网络是如何工作的,许多协议都是源自TCP/IP因特网的。这就允许我们在讨论中借鉴实际经验。 ■ 虽然在最底层可以用从计算机销售商那是购买的硬件构造网络,并且通信服务可从电话公司租用,但是只有软件才可以使网络提供新的服务,并且迅速地适应新的需求。这就是我们为什么强调网络软件是如何实现的理由,而不是只停留在描述所涉及到的抽象算法。 ■ 网络是由许多组件构成的,而在解决一个具体问题时,基本的方法是忽略一些不重要的因素,而理解所有的组件如何组织在一起,构成一个具有特定功能的网络。所以我们花费大量的时间解释网络总体的端到端行为,而不只是个别的组成部分,以便能够理解一个完整的网络,从应用到硬件的所有方面是如何工作的。 ■ 这种系统方法是指要进行性能研究,并且使用两个方面积累起来的数据,即定量分析各种设计选择和指导优化实现中的数据。这种强调经验分析的方法贯穿全书。 ■ 网络很像其他计算机系统,例如,操作系统、处理器体系结构、分布式和并行系统等。它们都很大,很复杂。为了处理这种复杂性,系统设计者常常提出一组设计原则。我们重点介绍这些贯穿全书的设计原则,并且用计算机网络中的例子加以说明。软件如上所述,为了理解计算机网络,软件和它的实现在系统方法中扮演着重要的角色。第1版使用x-kernel作为教学工具,它是实现网络协议的一种软件模板,但在使用x-kernel时,存在额外的启动开销,所以许多人不愿意使用它。因此,我们在第2版中去掉了x-kernel。为了说明如何实现某种协议和算法,全书仍然使用代码段,事实上,我们已经增加另外的代码,这些代码段是用不依赖于操作系统的C语言,而不是x-kernel协议给出的。对于想继续使用x-kernel的用户,书中去掉的材料可以从以下站点 http://www.cs.princeton.edu/xkernel 因为我们把网络软件看做是建网的基本构件,所以在第2版的第1章中引入了一个简单的应用套接字程序的例子。基于UNIX套接字的程序设计作业,可在线访问得到(见下面)。教学法和特点第2版我们保留了几个建议你充分利用的特点: ■ 问题陈述。在每一章的开头,我们描述在网络设计中必须解决的一个问题,由它引出本章探讨的一些课题。 ■ 阴影框。本书中,阴影框详细说明要探讨的课题或介绍相关的高级课题。多数情况,这些阴影框与实际生活中的网络模型有关。 ■ 突出的段落。这些段落归纳了你想从讨论中得出的重要结论,例如广泛使用的系统设计原理。 ■ 实际的协议。虽然本书着重核心概念而不是已有的协议说明,但实际的协议常用来说明大部分重要的思想。因此本书可以用作许多协议的参考源。为了帮助你找到这些协议的描述,每个相应的小节标题中用括号括起来的是协议名称,指明在那一节定义的协议。例如,5.2节描述可靠的端到端协议的原理,它提供了TCP的详细描述,TCP是这个协议的典型例子。 ■ 开放的问题。每章的叙述以一个开放讨论的问题结尾。这些仍有争议的各种课题,包括研究领域、商界以及整个社会正在研究的课题。我们发现这些讨论能使读者更贴近地了解所讨论的网络课题并对其产生浓厚的兴趣。 ■ 推荐的阅读部分。在每一章以最后都列有大量参考书目。这些书目一般都包含刚讨论的有关课题的启发性文章。我们竭力推荐那些高级读者(如研究生)学习推荐阅读目录中的这些文章,以便补充本章所讲的材料。本书结构和课程使用 ■ 第1章介绍全书使用的核心概念。特别是进行了网络体系结构的讨论,并给出网络设计常常需要考虑的定量的性能标准。 ■ 第2章综述了广泛的低层网络技术,从以太网到令牌环再到无线网络。也描述了所有链路协议必须解决的许多课题,包括编码、成帧和错误检验。 ■ 第3章讲述交换网络(数据报虚电路网)的基本模型,并详细地介绍一种流行的交换技术(ATM)。也讨论基于硬件的交换机设计问题。 ■ 第4章讲述互连网络,并且描述网际协议(IP)的基本原理。这一章讨论的中心问题是像因特网这样规模的网络如何对分组进行路由选择。 ■ 第5章讲述传输层,详细地描述因特网的传输控制协议(TCP)和远程过程调用,它们用在建立客户 / 服务器的应用中。 ■ 第6章讨论拥塞控制和资源分配。这一章的课题贯穿网络层(第3章和第4章)和传输层(第5章)。特别注意的是,这章描述拥塞控制如何在TCP上工作,并且介绍了为了提供服务质量,因特网和ATM所使用的机制。 ■ 第7章考虑通过网络发送的数据。这涉及表示格式和数据压缩两方面的问题。压缩的讨论包括解释MPEG视频压缩和MP3音频压缩是如何工作的。 ■ 第8章讨论网络安全,范围包括加密协议(DES、RSA、MD5),安全服务的协议(鉴别、数字签名、消息的完整性)以及完整的安全系统(增强型加密邮件、IPSEC)的讨论。这一章也讨论像防火墙这样的实际课题。 ■ 第9章描述网络应用的典型实例,既包括像电子邮件和万维网这样传统的应用,也包括使用实时传输协议(RTP)的多媒体应用。对本科生的课程,可能需要多些课时以帮助学生理解第1章的导论材料,而跳过第6~8章的提高课题。然后在第9章转到网络应用的典型课题上。相反,研究生的指导教师可用一两次课讲完第1章的内容,让学生自己更仔细地研究材料,因此腾出更多的时间深入讲授最后四章的内容。研究生和本科生都要完成中间四章(第2~5章)的核心材料。但本科生可有选择地跳过那些更深入的章节(例如2.2、2.9、3.4和4.4节)。如何自学本书?我们相信我们所选的教材涵盖了计算机网络的核心内容,因此建议你从前到后顺序阅读即可。另外我们提供了详细的参考文献目录,以帮助读者能进一步找到你感兴趣领域的补充材料。本书采取独特的方法来讨论拥塞控制,即把有关拥塞控制和资源分配的所有课题集中到第6章中。之所以这样做是因为拥塞控制问题不能在任何一层单独解决,我们希望你同时能够考虑各种设计选择(这和我们的观点是一致的,即严格的层常常掩盖了重要的设计考虑)。然而,对拥塞控制的更传统的处理方式是可能的,可在第3章对照学习6.2节的内容以及在第5章对照学习6.3节的内容。练习在第2版中对练习做了大量的修改。特别是,为了修改练习,我们得到芝加哥Loyola大学教授网络课的Peter Dordal 老师的支持。他增加了很多习题(从196个增加到362个),并且根据课堂测验我们发现这样大大提高了教学的质量。目前的练习集有以下几种不同的风格: ■ 分析性的练习,要求学生做简单的代数计算,说明他们对基本关系的理解。 ■ 设计问题,要求学生提出和评价各种情况下的协议。 ■ 动手能力问题,要求学生写较短的代码行去测试一个想法或实践已有的网络实用功能。 ■ 文献研究问题,能够让学生更深入了解某一个问题还有,正如下面更详细描述的,x-kernel和基于套接字的程序设计作业是可以在网上得到的。补充材料和在线资源为了帮助教师,我们已经准备了一个教师手册,内容包括所选练习的答案。这个手册可从出版商那里得到。其他的教学材料,包括讲课的幻灯片、正文中的插图、基于套接字的程序设计作业和测验样题,都可以在Morgan Kaufmann出版公司网站http://www.mkp.com上找到。我们建议你每隔几周访问一下本书的主页,因为我们会经常增加相关材料并与有关的站点建立链接。致谢如果没有许多朋友的帮助本书是不可能问世的。我们非常感谢他们为改进本书所做出的贡献。然而,在致谢之前,我们要提到的是,我们已经尽力改正审阅人指出的错误以及尽量准确地描述我们的同事给我们解释的协议和机制。如果还有什么错误,那就是我们的责任。如果你发现任何错误,请发电子邮件给我们的出版商Morgan Kaufmann公司,地址是netbugs@mkp.com,我们将在本书再次印刷时改正它们。首先我们衷心感谢各章草稿的审阅人。这一名单是很长的,包括Kentucky大学的Ken Calvert,Iowa州立大学的Douglas Jacobson,Sherbrooke大学的Michel Barbeau,Colorado-oulder大学的Ken Klingenstein,Stephen F. Austin州立大学的Robert Strader,Utah大学的Lee Hollaar, Marist学院的James TenEyck,学院的Walt Will,Lancaster大学的David Hutchison,Rutgers大学的Ivan Marsic,Infocus and Nova South eastern大学的Lee Leitner,BeComm公司的顾问Michael Cochran和Edward Balassanian UC-Davis的Matt Bishop,以及Cisco的 Steve Casner。第二,普林斯顿网络系统组和亚利桑那大学的几位专家提供了意见、例子、校订、数据和代码段。除了第1版提到的之外,George Tzanetakis 为我们解释了MP3,Chad Mynhier帮助修改了文献目录。正如以前一样,我们希望感谢国防部高级研究计划署和国家科学基金会在过去这几年对我们网络研究课题的支持。第三,我们衷心地感谢我们的编辑,David Clark 以及Morgan Kaufmann出版公司中在本书编写期间指导过我们的所有人。还要特别感谢我们的主编Jennifer Mann;她的助手Karyn Johnson;和我们的责任编辑, Cheri Palmer。MKP 公司的全体人员都很愉快地与我们合作。最后,我们希望感谢我们的妻子,Lynn Peterson 和Jody Davie,在解释网络如何实际运行的过程中遇到困惑时,她们一直支持着我们。
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -