描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787111689966丛书名: 经典原版书库
内容简介
本书采用作者独创的自顶向下方法讲授计算机网络的原理及其协议,即从应用层协议开始沿协议栈向下逐层讲解,让读者从实现、应用的角度明白各层的意义,进而理解计算机网络的工作原理和机制。本书强调应用层范例和应用编程接口,使读者尽快进入每天使用的应用程序环境之中进行学习和“创造”。
目 录
第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~1972 59
1.7.2 专用网络和网络互联:1972~1980 60
1.7.3 网络的激增:1980~1990 62
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和HTTP 98
2.2.1 HTTP概况 98
2.2.2 非持续连接和持续连接 100
2.2.3 HTTP报文格式 103
2.2.4 用户与服务器的交互:cookie 108
2.2.5 Web缓存 110
2.2.6 条件GET方法 114
2.3 因特网中的电子邮件 116
2.3.1 SMTP 118
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流和DASH 148
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实验:HTTP 182
Wireshark实验:DNS 183
人物专访 184
第3章 运输层 187
3.1 概述和运输层服务 188
3.1.1 运输层和网络层的关系 188
3.1.2 因特网运输层概述 191
3.2 多路复用与多路分解 193
3.3 无连接运输:UDP 200
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 面向连接的运输:TCP 233
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实验:探究TCP 302
Wireshark实验:探究UDP 302
人物专访 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 IPv6 348
4.4 通用转发和SDN 354
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 因特网中自治系统内部的路由选择:OSPF 391
5.4 ISP之间的路由选择:BGP 395
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 数据
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~1972 59
1.7.2 专用网络和网络互联:1972~1980 60
1.7.3 网络的激增:1980~1990 62
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和HTTP 98
2.2.1 HTTP概况 98
2.2.2 非持续连接和持续连接 100
2.2.3 HTTP报文格式 103
2.2.4 用户与服务器的交互:cookie 108
2.2.5 Web缓存 110
2.2.6 条件GET方法 114
2.3 因特网中的电子邮件 116
2.3.1 SMTP 118
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流和DASH 148
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实验:HTTP 182
Wireshark实验:DNS 183
人物专访 184
第3章 运输层 187
3.1 概述和运输层服务 188
3.1.1 运输层和网络层的关系 188
3.1.2 因特网运输层概述 191
3.2 多路复用与多路分解 193
3.3 无连接运输:UDP 200
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 面向连接的运输:TCP 233
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实验:探究TCP 302
Wireshark实验:探究UDP 302
人物专访 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 IPv6 348
4.4 通用转发和SDN 354
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 因特网中自治系统内部的路由选择:OSPF 391
5.4 ISP之间的路由选择:BGP 395
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 数据
前 言
欢迎阅读《计算机网络:自顶向下方法》的第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,指出排版错误,说出不赞成我们的哪些主张,告诉我们怎样做效果好、怎样做效果不好,以及你认为在本书下一版中应当包括哪些内容、删除哪些内容。我们的电子邮件地址是[email protected]和[email protected]。
致谢
从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公司)
第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,指出排版错误,说出不赞成我们的哪些主张,告诉我们怎样做效果好、怎样做效果不好,以及你认为在本书下一版中应当包括哪些内容、删除哪些内容。我们的电子邮件地址是[email protected]和[email protected]。
致谢
从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公司)
评论
还没有评论。