关于我们
书单推荐
新书推荐
|
计算机网络:自顶向下方法(英文版·原书第7版)
本书采用作者独创的自顶向下方法讲授计算机网络的原理及其协议,即从应用层协议开始沿协议栈向下逐层讲解,让读者从实现、应用的角度明白各层的意义,进而理解计算机网络的工作原理和机制。本书强调应用层范例和应用编程接口,使读者尽快进入每天使用的应用程序环境之中进行学习和创造。
欢迎阅读《计算机网络:自顶向下方法》的第7版。自从第1版于16年前出版以来,这本书已经被数百所大学和学院采用,被译为14种语言,并被世界上几十万名学生和从业人员使用。我们倾听了许多读者的意见,赞扬之声不绝于耳。
第7版的新颖之处 我们认为本书成功的一个重要原因是,持续地为计算机网络教学提供了一种新颖和与时俱进的方法。第7版保持了我们认为(并且得到了使用本书的教师和学生的认可)本书为重要的方面:自顶向下方法,关注因特网和计算机网络的现代处理方式,注重原理和实践,以及易于理解的风格和学习计算机网络的方法。然而,第7版也进行了相当多的修订和更新。 本书的长期读者将注意到,自该教科书出版以来,我们首次改变了各章的组织结构。以往包括在一章中的网络层,现在包括在第4章(该章关注网络层的所谓数据平面组件)和第5章(该章关注网络层的控制平面)中。网络层范围的扩大反映了软件定义网络(SDN)重要性的迅速提升,无可置疑地证明了十年来网络非常重要和令人兴奋的进展。尽管SDN是相对新近的创新,但它已经迅速在实践中得到应用,所以介绍现代计算机网络而不涉及SDN已经成为不可想象的事。先前包括在第9章中的网络管理主题,现在已经放入新的第5章中了。我们一如既往地更新了本书的许多其他章节,以反映自第6版以来网络领域的新变化。从教科书中撤除的材料一如既往地能够在本书的配套网站中找到。比较重要的一些更新如下: 为反映因特网不断增长的范围和应用,更新了第1章。 讨论应用层的第2章进行了重大更新。我们删除了FTP和分布式散列表的材料,增加了有关应用层视频流和内容分发网,以及Netflix和YouTube学习案例的新节。套接字编程已从Python 2更新为Python 3。 讨论运输层的第3章进行了适度更新。异步传递方式(ATM)网络的材料已被更流行的因特网显式拥塞通告(ECN)的材料所代替,用ECN教授相同的原理。 第4章讨论网络层的数据平面组件。数据平面是每台路由器的转发功能,它决定到达路由器的一条输入链路的分组是如何转发到该路由器的一条输出链路的。我们更新了在所有前面版本中都能找到的有关传统因特网转发的材料,并且增加了分组调度的材料。还增加了有关通用转发的新节,就像SDN中实践的那样。该章也有很多更新。有关多播和广播通信方面的材料已被删除。 第5章讨论网络层的控制平面功能。这种网络范围的逻辑控制着数据报如何沿着从源主机到目的主机的路由器的端到端路径选择路由。如同前面版本一样,我们包括路由选择算法以及在今天的因特网中所使用的路由选择协议(更新了对BGP的讨论)。增加了有关SDN控制平面的新节,讲述了如何在所谓的SDN控制器中实现路由选择和其他功能。 第7章讨论无线网络和移动网络,更新了有关802.11(所谓WiFi)网络和蜂窝网络(包括4G和LTE)的材料。 第8章讨论网络安全,这在第6版中已经全面更新过了,本版中该章仅进行了适度更新。 第9章较之第6版进行了适度调整,有关视频流和内容分发网的材料已经放到第2章了,有关分组调度的材料已经放到第4章了。 增加了与每章后面习题相关的重要新材料。与前面各版一样,对课后习题进行了修订、增加和删除。 在新版本的修订过程中,我们的目标一如既往,继续关注因特网和计算机网络的现代处理方式,注重原理和实践。 本书读者对象 本书适用于计算机网络的门课程,既可用于计算机科学系的学生,也可用于电气工程系的学生。就编程语言而言,本书仅假定学生具有C、C 、Java或Python的编程经验(也只是在几个地方用到)。与许多入门性的其他计算机网络教科书相比,尽管本书表述更为精确,分析更为细致,然而书中很少用到高中阶段没有教过的数学概念。我们有意避免使用任何高等微积分、概率论或随机过程的概念(尽管我们为具有这种高级背景的学生准备了某些课后习题)。因此,本书适用于本科生课程和一年级研究生课程,对于电信业的从业人员也应当有用。 本书的独特之处 计算机网络这门课程极为复杂,涉及许多以错综复杂的方式彼此交织的概念、协议和技术。为了处理这种大跨度和高复杂性,许多计算机网络教科书都围绕计算机网络体系结构的层次来组织内容。借助于这种分层的组织结构,学生能够透过计算机网络的复杂性看到其内部,他们在学习整个体系结构的某个部分中的独特概念和协议的同时,也能看清所有这些部分如何整合在一起的全貌。从教学法的角度来看,我们的个人体验是这种分层的教学方法的确是卓有成效的。尽管如此,我们发现那种自底向上的传统教学方法,即从物理层到应用层逐层进行讲解的方法,对于现代计算机网络课程并非是的方法。 自顶向下方法 本书于16年前首次以自顶向下的方式来对待网络,这就是说从应用层开始向下一直讲到物理层。我们从教师以及学生那里得到的反馈证实了这种自顶向下方法有许多好处,并且从教学上来讲的确很好实施。,它特别强调应用层(它是网络中的高增长领域)。的确,计算机网络中的许多近期革命都发生在应用层,其中包括Web、对等文件共享和媒体流。及早强调应用层的问题与大多数其他教科书中所采取的方法不同,那些教科书中只有少量有关网络应用、网络应用的需求、应用层范式(例如客户服务器和对等方到对等方)以及应用编程接口方面的内容。第二,我们(和使用本书的许多教师)作为教师的经验是,在课程开始后就教授网络应用的内容,是一种有效激发学习积极性的工具。学生急于知道诸如电子邮件和Web等网络应用是如何工作的,这些应用是多数学生每天都在使用的东西。一旦理解了这些应用,学生便能够理解支持这些应用的网络服务,接下来则会仔细思考在较低层次中可能提供和实现这些服务的各种方式。因此,及早地涉及应用程序能够激发学生学习本书其余部分的积极性。 第三,自顶向下方法使得教师能够在教学的早期阶段介绍网络应用程序的开发。学生不仅能够明白流行的应用程序和协议的工作原理,还能学习到创造自己的网络应用程序和应用级协议是多么容易。采用自顶向下的方法后,学生能够及早地搞清楚套接字编程、服务模型和协议的概念,这些重要概念为后续各层的讨论做了铺垫。通过提供用Python语言写成的套接字编程的例子,我们强调主要思想,而不会使学生陷于复杂代码的困境。电气工程和计算机科学系的本科生理解这些代码应当不会有困难。 以因特网为研究目标 尽管自第4版起我们从书名中去掉了Featuring the Internet(描述因特网特色)这个短语,但这并不意味着我们不再关注因特网!的确,一切如初!而且由于因特网已经变得无所不在,我们反而认为任何网络教科书都必须非常关注因特网,因此该短语在某种程度上已经没有必要了。我们继续使用因特网的体系结构和协议作为基本载体来学习基本的计算机网络概念。当然,我们也能把概念和协议放入其他网络体系结构中讲解。但是我们的关注点是因特网,这反映在我们围绕因特网体系结构的5层模型来组织材料上,这5个层次是应用层、运输层、网络层、链路层和物理层。 聚焦因特网的另一个好处是,大多数计算机科学和电气工程的学生急切地希望学习因特网及其协议。他们知道因特网是一种革命性和破坏性的技术,正在深刻地改变着我们的世界。有了对因特网大量中肯的认识后,学生自然而然会对学习其内部原理有了求知欲。因此,教师用因特网作为导向焦点,就易于调动学生学习基本原理的积极性了。 教授网络原理 本书的两个独特之处是自顶向下方法和关注因特网,这已经显现在本书的书名中。如果我们在副书名中强行增加第三个词的话,原理一词将包括在其中。网络领域已经发展得相当成熟,能够认识清楚许多基础性的重要问题。例如,在运输层,基础性问题包括建立在不可靠的网络层上的可靠通信、连接建立/拆除与握手、拥塞和流量控制以及多路复用。三个非常重要的网络层问题是,在两台路由器之间找到好的路径、互联大量的异构网络和管理现代网络的复杂性。在链路层,基础性问题是共享多路访问信道。在网络安全中,提供机密性、鉴别和报文完整性的技术都基于密码学基本理论。本书在指明基础性网络问题的同时,也会介绍解决这些问题的方法。学习这些原理的学生将获得具有长保质期的知识,在今天的网络标准和协议已经变得过时后的很长时间,其中的原理将仍然重要和中肯。我们相信,用因特网将学生引入网络之门后,再强调基础性问题及其解决方案,这种两者结合的方法将使他们迅速理解几乎任何网络技术。 Web站点 本书配套的Web站点位于http://www.pearsonhighered.com/cs.resources/。该站点包括: 交互式学习材料。本书的配套网站包括视频要点(VideoNotes),即由作者制作的全书重要主题的视频呈现,以及对习题解答的简要讲解,这些习题类似于每章后面的习题。我们已经在Web站点上提供了第1~5章的视频要点和在线习题,并且将随着时间的推移而继续积极地增加和更新这些材料。如在前面版本中一样,该Web站点包含了交互式Java小程序,以动画方式显示了重要的网络概念。该站点也包括交互式小测验,允许学生检查他们对该专题内容的基本理解。教授能够将这些交互式特色结合到他们的讲义中或将它们用作小实验。 附加的技术材料。由于我们在本书的每个版本中都增加了新材料,故我们不得不删去某些现有主题以保持篇幅的合理。例如,为了在本版中为新材料腾出空间,我们删除了有关FTP、分布式散列表和多播方面的材料。出现在本书较早版本中的材料仍然是有益的,并且能够在本书Web网站上找到。 编程作业。Web网站也提供了一些详细的编程作业,这些编程作业包括构建一台多线程Web服务器,构建一个具有图形用户接口(GUI)的电子邮件客户,以及发送端和接收端可靠数据传输协议的编程,分布式路由选择算法的编程,等等。 Wireshark实验。通过观察网络协议的实际运行,读者能够大大加深对它们的理解。该Web站点提供了许多Wireshark作业,使学生能够实际观察两个协议实体之间报文的交换顺序。该Web站点包括了有关HTTP、DNS、TCP、UDP、IP、ICMP、以太网、ARP、WiFi和SSL的单独Wireshark实验,以及在跟踪一个获取Web网页的请求时所涉及的所有协议的Wireshark实验。随着时间的推移,我们将继续增加新的实验。 除了配套网站外,作者维护了一个公共网站http://gaia.cs.umass.edu/kurose_ross/interactive,该网站包括交互式练习,这些练习能够生成与每章后面所选习题类似的问题(并给出解答)。由于学生能够产生无数类似问题的实例并看到解答,所以他们能够练习到真正掌握为止。 教学特色 我们每位作者都教了30多年的计算机网络课程,这本书凝聚了我们总共60多年教了几千名学生的教学经验。在此期间,我们也成为计算机网络领域活跃的研究人员。(事实上,James和Keith于1979年在哥伦比亚大学相识,共同选了由Mischa Schwartz执教的硕士研究生计算机网络课程。)所有这些都让我们对网络现状和网络未来的可能发展方向有了良好的观察力。无论如何,我们在组织这本书的材料时,抵御住了偏向自己所钟爱的研究项目的诱惑。如果你对我们的研究工作感兴趣的话,可以访问我们的个人Web网站。因此,这是一本关于现代计算机网络的书,即该书包含了当代协议和技术以及支撑这些协议和技术的基本原理。我们也认为学习(和讲授)网络是令人开心的事。本书中包含的幽默、使用的类比和现实世界的例子将有望使这些材料更具趣味性。 教师的补充材料 我们提供了一套完整的补充材料,以帮助教师教授这门课程。这些材料都能通过访问Pearson的教师资源中心(http://www.pearsonhighered.com/irc)得到。有关获取这些教师补充材料的信息可访问教师资源中心。 PowerPoint幻灯片。我们提供了全部9章的PowerPoint幻灯片。这些幻灯片根据第7版进行了彻底更新,详细地涵盖了每章的内容。幻灯片中使用了图片和动画(而非仅是单调的文本标题),这使得它们有趣且在视觉上有吸引力。我们向教师提供了原始的幻灯片,使得教师能够做个性化修改以满足自己的教学需要。这些幻灯片中的某些部分就是由采用本书进行教学的教师所贡献的。 课后习题解答。我们提供了本书中课后习题的解题手册、编程作业和Wireshark实验。如前所述,我们在本书的前6章中引入了许多新的课后作业。 各章间的关联性 本书的第1章提供了对计算机网络自包含的概述。该章介绍了许多重要的概念与术语,为本书的其余部分奠定了基础。其他所有章都直接依赖于第1章的内容。在讲解完第1章之后,我们推荐按顺序讲解第2~6章的内容,这样就遵循了自顶向下的原则。第2~6章中每一章都会用到前面章节的内容。在完成前6章的教学后,教师就有了相当大的灵活性。后3章之间没有任何相关性,因此能够以任何顺序进行教学。然而,后3章中的每一章都依赖于前6章中的材料。许多教师采用的教学方案是:教授前6章,然后讲授后3章之一作为点睛之笔。 后的话:我们乐于听取你的意见 我们鼓励学生和教师向我们发送电子邮件,发表对本书的任何评论。对我们而言,能够听到来自全世界的教师和学生就本书前6版的反馈,是件令人愉快的事。我们已经在本书新版中综合进许多条建议。我们也鼓励教师向我们发送新的课后习题(及其解答),这将完善当前的课后习题。我们将这些习题放在配套Web网站上只有教师才能访问的区域。我们也鼓励教师和学生编写新的Java小程序来诠释书中的概念和协议。如果你有了认为适合于本书的小程序,请将它发送给作者。如果该小程序(包括标记和术语)合适的话,我们很乐意将它放在本书的网站上,并附上对该小程序作者的适当推荐。 正如谚语所说:让那些卡片和信件到来吧!我们郑重宣布,请大家一如既往地告诉我们有趣的URL,指出排版错误,说出不赞成我们的哪些主张,告诉我们怎样做效果好、怎样做效果不好,以及你认为在本书下一版中应当包括哪些内容、删除哪些内容。我们的电子邮件地址是kurose@cs.umass.edu和ross@poly.edu。 致谢 从1996年我们开始撰写本书以来,许多人为我们提供了非常宝贵的帮助,在如何好地组织和讲授网络课程方面对我们的构思产生了很大影响。在此,我们要对那些从本书的早书稿到本次第7版帮助过我们的所有人道谢,非常感谢大家。我们还要感谢来自世界各地成千上万的读者,包括学生、教职人员和从业人员,他们给了我们对于本书以前版本的看法和评论以及对未来版本的建议。特别感谢下列这些人: Al Aho(哥伦比亚大学) Hisham Al-Mubaid(休斯敦净湖大学) Pratima Akkunoor(亚利桑那州立大学) Paul Amer(特拉华大学) Shamiul Azom(亚利桑那州立大学) Lichun Bao (加利福尼亚大学欧文分校) Paul Barford(威斯康星大学) Bobby Bhattacharjee(马里兰大学) Steven Bellovin(哥伦比亚大学) Pravin Bhagwat(Wibhu) Supratik Bhattacharyya(前Sprint公司人员) Ernst Biersack(Eurécom学院) Shahid Bokhari(工程技术大学Lahore分校) Jean Bolot(Technicolor Research) Daniel Brushteyn(前宾夕法尼亚大学学生) Ken Calvert(肯塔基大学) Evandro Cantu(Santa Catarina联邦大学) Jeff Case(SNMP国际研究院) Jeff Chaltas (Sprint公司)
詹姆斯·F. 库罗斯(James F. Kurose) 美国马萨诸塞大学阿默斯特分校计算机科学系教授,研究兴趣包括网络协议和体系结构、网络测量、多媒体通信以及建模和性能评价。由于在教育领域的杰出贡献,他获得了包括IEEE Taylor Booth教育奖章在内的多个教育奖励和荣誉。他是IEEE和ACM会士,还曾担任《IEEE通信会刊》和《IEEE/ACM网络会刊》总编辑。
基思·W. 罗斯(Keith W. Ross) 美国纽约大学(NYU)上海分校工程和计算机科学学院院长以及NYU计算机科学和工程系的Leonard J. Shustek首席教授,研究兴趣包括隐私、社交网络、对等网络、因特网测量、内容分发网络和随机建模。他是IEEE和ACM会士,还曾获得Infocom 2009年优秀论文奖,《多媒体通信》2011年和2008年优秀论文奖。
第1章 计算机网络和因特网1
1.1 什么是因特网2 1.1.1 具体构成描述2 1.1.2 服务描述5 1.1.3 什么是协议7 1.2 网络边缘9 1.2.1 接入网12 1.2.2 物理媒体18 1.3 网络核心21 1.3.1 分组交换23 1.3.2 电路交换27 1.3.3 网络的网络31 1.4 分组交换网中的时延、丢包和吞吐量35 1.4.1 分组交换网中的时延概述35 1.4.2 排队时延和丢包39 1.4.3 端到端时延41 1.4.4 计算机网络中的吞吐量43 1.5 协议层次及其服务模型47 1.5.1 分层的体系结构47 1.5.2 封装53 1.6 面对攻击的网络55 1.7 计算机网络和因特网的历史59 1.7.1 分组交换的发展:1961~197259 1.7.2 专用网络和网络互联:1972~198060 1.7.3 网络的激增:1980~199062 1.7.4 因特网爆炸:20世纪90年代63 1.7.5 发展64 1.8 小结65 课后习题和问题67 Wireshark实验77 人物专访79 第2章 应用层83 2.1 应用层协议原理84 2.1.1 网络应用程序体系结构86 2.1.2 进程通信88 2.1.3 可供应用程序使用的运输服务90 2.1.4 因特网提供的运输服务93 2.1.5 应用层协议96 2.1.6 本书涉及的网络应用97 2.2 Web和HTTP98 2.2.1 HTTP概况98 2.2.2 非持续连接和持续连接100 2.2.3 HTTP报文格式103 2.2.4 用户与服务器的交互:cookie108 2.2.5 Web缓存110 2.2.6 条件GET方法114 2.3 因特网中的电子邮件116 2.3.1 SMTP118 2.3.2 与HTTP的对比121 2.3.3 邮件报文格式121 2.3.4 邮件访问协议122 2.4 DNS:因特网的目录服务126 2.4.1 DNS提供的服务127 2.4.2 DNS工作机理概述129 2.4.3 DNS记录和报文135 2.5 P2P文件分发140 2.6 视频流和内容分发网147 2.6.1 因特网视频147 2.6.2 HTTP流和DASH148 2.6.3 内容分发网149 2.6.4 学习案例:Netflix、YouTube和看看153 2.7 套接字编程:生成网络应用157 2.7.1 UDP套接字编程159 2.7.2 TCP套接字编程164 2.8 小结170 课后习题和问题171 套接字编程作业180 Wireshark实验:HTTP182 Wireshark实验:DNS183 人物专访184 第3章 运输层187 3.1 概述和运输层服务188 3.1.1 运输层和网络层的关系188 3.1.2 因特网运输层概述191 3.2 多路复用与多路分解193 3.3 无连接运输:UDP200 3.3.1 UDP报文段结构204 3.3.2 UDP检验和204 3.4 可靠数据传输原理206 3.4.1 构造可靠数据传输协议208 3.4.2 流水线可靠数据传输协议217 3.4.3 回退N步221 3.4.4 选择重传226 3.5 面向连接的运输:TCP233 3.5.1 TCP连接233 3.5.2 TCP报文段结构236 3.5.3 往返时间的估计与超时241 3.5.4 可靠数据传输244 3.5.5 流量控制252 3.5.6 TCP连接管理255 3.6 拥塞控制原理261 3.6.1 拥塞原因与代价261 3.6.2 拥塞控制方法268 3.7 TCP拥塞控制269 3.7.1 公平性279 3.7.2 明确拥塞通告:网络辅助拥塞控制282 3.8 小结284 课后习题和问题286 编程作业301 Wireshark实验:探究TCP302 Wireshark实验:探究UDP302 人物专访303 第4章 网络层:数据平面305 4.1 网络层概述306 4.1.1 转发和路由选择:数据平面和控制平面306 4.1.2 网络服务模型311 4.2 路由器工作原理313 4.2.1 输入端口处理和基于目的地转发316 4.2.2 交换319 4.2.3 输出端口处理321 4.2.4 何处出现排队321 4.2.5 分组调度325 4.3 网际协议:IPv4、寻址、IPv6及其他329 4.3.1 IPv4数据报格式330 4.3.2 IPv4数据报分片332 4.3.3 IPv4编址334 4.3.4 网络地址转换345 4.3.5 IPv6348 4.4 通用转发和SDN354 4.4.1 匹配356 4.4.2 动作358 4.4.3 匹配加动作操作中的OpenFlow例子358 4.5 小结361 课后习题和问题361 Wireshark实验370 人物专访371 第5章 网络层:控制平面373 5.1 概述374 5.2 路由选择算法376 5.2.1 链路状态路由选择算法379 5.2.2 距离向量路由选择算法384 5.3 因特网中自治系统内部的路由选择:OSPF391 5.4 ISP之间的路由选择:BGP395 5.4.1 BGP的作用395 5.4.2 通告BGP路由信息396 5.4.3 确定好的路由398 5.4.4 IP任播402 5.4.5 路由选择策略403 5.4.6 拼装在一起:在因特网中呈现406 5.5 SDN控制平面407 5.5.1 SDN控制平面:SDN控制器和SDN网络控制应用程序410 5.5.2 OpenFlow协议412 5.5.3 数据
你还可能感兴趣
我要评论
|