计算机网络问题与解决方案:一种构建弹性现代网络的创新方法
作者 : [美] 鲁斯·怀特(Russ White) 伊桑·班克斯(Ethan Banks)著
译者 : 曹洪伟 石涛声 译
丛书名 : 计算机科学丛书
出版日期 : 2019-08-19
ISBN : 978-7-111-63351-8
定价 : 169.00元
教辅资源下载
扩展信息
语种 : 简体中文
页数 : 488
开本 : 16
原书名 : Computer Networking Problems and Solutions: An Innovative Approach to Building Resilient, Modern Networks
原出版社: Pearson Education Inc.
属性分类: 教材
包含CD : 无CD
绝版 :
图书简介

本书第一部分讲解了数据传输(数据平面)。第二部分介绍了用于发现和使用拓扑与可达性信息(控制平面)的协议。第三部分讨论了几种常见的网络设计和架构,包括数据中心Fabric、MPLS核心和现代软件定义广域网(SD-WAN)。作为所有网络技术所面临问题的解决方案,软件定义网络等技术的基础原理贯穿全书。书中揭示了现代计算机网络和协议被设计成现在这样的原因,解释这些协议或系统必须克服哪些问题,通用的解决方案是什么,并展示了这些解决方案在新的和成熟的协议中是如何实现的。

图书特色

深刻理解计算机网络问题与解决方案,全面掌握现代网络技术和未来趋势

图书前言

有很多方法可以用于教授(或理解)计算机网络操作的基本原理。例如,一种比较传统的方法是从检查控制平面的所有操作开始,从构建邻接关系到信息传输,再到构建路由。另一种常见的方法是从模型开始,如开放系统互连(Open Systems Interconnect,OSI)模型,并从模型内部描述协议的操作细节。这些方法显然有助于指导网络工程师和网络工程专业的学生来理解计算机网络,因为在过去的30年里,这些方法确实成功地帮助了数十万名网络工程师。
但是,在本书作者看来,这些方法并没有想象中那么有效。尽管在实验室里花费了大量时间来阅读技术资料,甚至配置和部署网络设备,但仍有许多工程师不能理解计算机网络的实际工作原理。对网络工程师及网络工程专业的学生而言,实际的教学效果与心理上的预期仍然存在着很大的差距。
本书旨在填补这一空白—它不仅面向现在的工程师,也面向所有试图学习计算机网络工作原理的学生(即使网络工程不是他们的最终职业目标)。无论你是一名计算机科学专业的学生,还是一位有着20多年工作经验的网络工程师,或者你只想学习一些网络工程知识,甚至只是一名仅负责与“网络”相关业务的经理,都会通过阅读本书受益。
本书的组织结构
本书的两位作者在网络工程领域的工作经验加起来有50多年,这些年来,他们从事过转发设备、控制平面、存储乃至计算等诸多方面的工作。在不同的场所,两位作者(他们还是专栏评论员!)花了数千小时,以不同的形式进行了正规的和非正规的对外培训,其中涉及网络工程中的许多不同技艺。本书更是花费了作者大量的时间来考虑如何更好地讲解计算机网络技术中的诸多细节。计算机网络中哪些细节是不可忽视的,尤其是哪些内容和问题的细节是无关紧要的,都需要认真仔细地进行取舍。作者认为本书的组织结构有利于帮助计算机网络及相关领域的大多数读者。
撰写本书的想法源于互联网工程任务组(Internet Engineering Task Force,IETF)的RFC 1925,也就是“网络工程的12条军规”(The Twelve Networking Truths),其中第11条军规是:
每一个旧的想法都会以不同的名称和不同的表述被再次提出,而不管它是否有效。
显然,这很幽默,但是如果其中没有一丝道理,幽默就不会变得那么有趣了。就第11条军规而言,这又远不止“一丝道理”那么简单:在其中,体现了一种看待技术的完整方式,以及技术变革的步伐,它们可以彻底改变工程师学习技术的方式。如果说每个想法都会被再次提出,那么意味着每个想法之前就被提出过。这样一来,如果能够理解一个想法在第一次提出时的本义,那么就能理解基于相同想法的每一个新提议。
这种观察—计算机网络技术背后的基础思想并没有真正改变—是本书教学方法的驱动因素。本书没有关注模型或协议,而是遵循了一个独特的模式。
因此,本书的主题是:为了真正理解计算机网络,你需要提出和回答以下三个问题:“真正的问题是什么?”“解决方案是什么?”“具体是如何实现的?”
真正的问题是什么?
本书分为三个主要部分,涵盖了数据传输、控制平面,以及具体设计(或者更确切地说是技术)场景。在每一部分中都有一些章从一个基本的问题开始:所面临的真正问题是什么?以一种有意义的方式描述问题集往往需要做很多理论工作,所以这些章一开始可能看似不那么实用。
然而,这些章实际上非常实用。如果没有对问题的透彻理解,就几乎不可能真正理解真实的背景,从而不可能提出任何有效的提案或者实现方案。理解这些基本问题可以帮助我们做两件事:
将我们当前面临的问题(这些问题看似是新的或独特的问题)与过去网络工程中已解决的共性问题联系起来。
清楚地观察并理解大型系统中的组件问题,从而有机会以构建完整一致系统的方式,对每个问题应用一系列完整的解决方案。
实际上,提出问题才能真正理解那些用于解决网络工程问题的技术—这也是最重要的步骤。
解决方案是什么?
一旦问题暴露出来,本书将讨论一系列可能的解决方案。解决方案集合(必然)不会局限于最常见的解决方案或已实现的解决方案。相反,所选择的解决方案将(希望)提供一个可用解决方案类型的全面概览。同样,这部分将倾向于理论性介绍,特别是在描述单点问题的单点解决方案时。同样,认为不实用的观点将是错误的—每一个解决方案都是一个“工具”,可以把它添加到用来解决一系列问题的“思想工具集”中。以这种方式将问题和解决方案结合起来,从而建立一套对任何类型的工程师都有用的思考技能。
具体是如何实现的?
最后,一旦讨论了问题的集合以及对应每一个问题的一系列解决方案,问题和解决方案就能被聚合成一组实现案例。在这一部分将看到理论和实践的结合:理论上每个协议如何解决一组常见的问题集,然后选择一系列解决方案来解决这些问题。作者已经努力为这部分内容筛选了大量的协议和系统,所以读者不仅可以漫步解决方案的空间,而且可以漫游(尽可能在这类工作的范围内)计算机网络工程的历史。
本书没有涵盖的内容
在这个领域写任何一本书都可能有无穷无尽的内容,然而一本没有边界限制的书可能作用并不大。因此,为了管理本书的范围和规模,作者对哪些内容应该涵盖、哪些内容不应该涵盖做出了选择。
书中涵盖了分组交换网络,而没有涵盖电路交换网络。在分组交换网络中,信息以数据包的形式进行传输,每个数据包都包含了足够的信息,以将数据包从网络的一端路由到另一端;发送方和接收方之间没有“固定”的通信线路;仅仅由一组底层分组转发设备组成一个完整系统,以最大的努力交付这些数据包。电路交换网络则可以利用一种不需要每个数据包都携带所有必需信息的方式来分解信息,并且每个特定信息流都有约定的路径和资源。
本书涵盖了数据平面和控制平面,但是没有涵盖管理平面。通常很难确定数据平面的终点和控制平面的起点。同样,也很难确定控制平面的终点和管理平面的起点。作者根据自己丰富的经验,试图只包含那些与构建和管理转发数据包的可用路径相关的主题,而忽略那些看起来更关注网络管理的主题。
这些遗漏并不是说这些主题不重要,而是作为一本书,如果要在限定的时间内编写,就必须以某种方式限定范围。
阅读流程
在很多方面,理解作者的写作意图(希望读者如何阅读书籍),对于理解如何使用材料,以及理解信息的组织结构或者书中想要回答的问题等来说,都很重要。本书的目标受众广泛,从“普通”的网络工程师,到那些没有受过任何正规培训但渴望学习网络工程的人,再到大学课堂。
为了适应这样的读者范围,作者采取了以下措施:
虽然正文中提供的材料根据具体专题的要求具有不同的深度,但都努力保持一种介绍性的感觉。正文中的主要内容将尽量少地使用“概念宏大的词汇”和“艰涩难懂的符号”。
更多的技术材料、历史掌故,以及作者认为对渴望学习网络工程的人有用的其他材料都以特殊格式出现在正文中。
提供脚注的目的是致敬那些产生创意的特定工作或以产生特定创意而闻名的个人作品。
在每一章的末尾会列出更多的技术论文和资源,以供那些愿意更深入地研究特定主题的人使用。这些资源将尽可能包含与其相关的特定主题的信息。
良好的开端是成功的一半
作者和编辑花费了大量时间及精力研究、写作、编辑和制作本书,他们在网络工程中的各个方面都拥有广泛而深入的经验—协议设计与规范、协议实现、网络设计、网络实现、故障排除等。希望本书能够为读者真正地理解计算机网络的运行原理打下深入而广泛的基础,从而为设计、实现、管理协议和网络奠定基础,进而在未来的工作中解决现实世界的问题。
致谢
首先,如果没有Radia Perlman认识到对本书的需求,就不会有本书,因此是他播下了本书逐渐成型的思想种子。然而,除了种子之外,这本书并不只是两位作者的作品,实际上,许多人参与了本书的创建和出版过程,使其具备了很高的质量。以下是参与创建本书内容的人员的大致名单。
Ignas Bagdonas是Equinix公司的架构师,他专注于互连Fabric和网络自动化的大规模设计。Ignas在Routing System公司工作时就已经实现了BGP。
Chris Kane目前是Arista Networks公司的系统工程师,从事大规模网络的设计和部署工作,并且是俄亥俄州网络用户组(Ohio Networking User Group)的创始成员。Chris从事网络行业已经超过25年,曾在各种垂直领域工作,包括服务提供商、金融、零售和咨询。
Kim Pedersen(CCIE 29189, CCDE 2017:0021)是Lytzen IT A/S的一名网络工程师,主要从事网络设计和国际MPLS网络的维护及开发工作。他热衷于学习新技术课题,并痴迷于有关万物互联的读物。他与妻子生活在丹麦,并且非常喜欢旅行。
Nick Russo(CCIE 42518, CCDE 2016:0041)是位于马里兰州Aderdeen的思科公司的网络工程师。他专注于服务提供商、大规模MPLS、移动性设计,以及网络自动化。Nick是《CCIE服务提供商第4版笔试和实验考试综合指南》(CCIE Service Provider Version 4 Written and Lab Exam Comprehensive Guide)的作者,可以在LeanPub上找到他的作品。
Maria Urlea(CCDP,CCDA,CCNP,CCNA)是加拿大安大略省思科公司的系统工程师。Maria获得了几项硕士奖学金和学生研究奖,并专注于几个大型网络运营商的网络设计和架构设计。
Chris Cleveland是网络工程领域最优秀的策划编辑之一,自1997年以来,他与Russ在Pearson合作了13个项目。

上架指导

计算机\网络

封底文字

本书提供了一种理解网络的新方法,它不仅阐明了当前的系统,而且可以帮助读者为未来的技术发展做足准备。通过解释协议或系统必须解决的问题、讨论通用的解决方案,并展示这些解决方案在新的和成熟的协议中是如何实现的,揭示为什么现代计算机网络和协议会被设计成现在这样。
第一部分讨论数据传输(数据平面)。第二部分介绍用于发现和使用拓扑与可达性信息的协议(控制平面)。第三部分讲解几种常见的网络设计和架构,包括数据中心Fabric、MPLS核心和现代软件定义广域网(SD-WAN)。作为所有网络技术所面临问题的解决方案,软件定义网络(SDN)等底层技术的基础原理贯穿全书。
本书是初级网络工程师和计算机网络专业学生的理想读物,经验丰富的工程师也可以通过本书更深入地理解自己每天使用的技术。无论专业背景如何,本书都将帮助你快速识别不断重复出现的问题和解决方案,并将这些知识应用到新技术和新环境中。
本书涵盖的内容包括
数据和网络传输
底层与高层传输及层间发现
分组交换
服务质量(QoS)
虚拟化的网络和服务
网络拓扑发现
单播无环路由
响应拓扑变化
距离向量控制平面、
链路状态及路径向量控制
控制平面策略与中心化
故障域
网络安全与传输
网络设计模式
冗余与弹性
故障排除
网络分解
自动化网络管理
云计算
物联网(IoT)组网
新涌现的趋势和技术

作者简介
鲁斯·怀特(Russ White) CCIE No.2635,LinkedIn首席架构师。曾任Ericsson总工程师、Cisco杰出架构师,并工作于Verisign Labs。他是VeloCloud、Modulo ApS和IETF路由领域的理事会成员,目前从事大规模网络设计、控制平面设计和操作,以及网络复杂性方面的工作。
伊桑·班克斯(Ethan Banks) 从IT架构师转型为工程内容的创作者。他是Packet Pusher Interactive的联合创始人,致力于将其几十年IT生涯经验凝结为针对工程师的技术内容,这些内容涉及产品、标准、开源项目和现代工具等方面。

译者序

南朝刘峻在《辩命论》中说:“自然者,物见其然,不知所以然;同焉皆得,不知所以得。”本书提供了一种理解网络的新方法,即从问题空间到方案空间的方法。通过解释计算机网络在架构设计方面必须克服的问题空间,思考常见的方案空间,并展示这些解决方案在新协议和成熟协议中是如何实现的。这样,作者不仅阐明了现代计算机网络的组件和协议,而且揭示了现代计算机网络为什么被设计成现在的样子。这不仅能够让读者对网络知识“见其然,知其所以然”,而且能够让读者在接下来要做的网络架构设计中“知其得,知其所以得”。
康德说,“自在之物”与“现象”即“此岸”与“彼岸”之间有着一条原则上的界限,是人类认识无法逾越的鸿沟。对于计算机网络世界而言,问题空间是此岸,完美系统是彼岸,中间隔着湍急的河流,本书则是架构在河流之上的桥梁。本书组织的各个章节都是从问题空间到解决方案空间。在网络工程中,遇到哪些问题和有哪些解决方案是架构设计的起点。
计算机科学参与了复杂性学科的创立,并把复杂性引申为计算机科学的内涵。复杂性在软件架构领域引起重视的首要原因是:单体架构的承诺已经无效。例如,在传统路由器或交换机设计中,快速的报文转发(数据平面)和高层的路由决定(控制平面)是集成在一起的。这种紧耦合的大型主机式结构限制了IP网络创新技术的出现,大量RFC规范对现行网络进行修修补补,造成了交换机/路由器设备控制功能的高度复杂。网络研究人员想要基于真实生产流量进行大规模网络实验几乎是不可能的,因为网络设备是封闭的,没有提供开放的应用编程接口,无法对网络设备进行自动化配置以及对网络流量进行实时操控。为了解决这些问题,斯坦福大学的Nick McKeown教授于2008年4月首先提出了新型的基于软件的网络架构—软件定义网络,之后众多的设备厂商、计算机组织及运营商纷纷加入软件定义网络标准的制定中。软件定义网络是一种新兴的网络架构,它属于下一代网络技术研究范畴,但又与其他下一代网络技术研究方向有很大区别:它并不革新原有IP分层网络的报文转发行为,只简化报文转发规则产生的复杂性。也就是说,它既继承现有网络技术,也可以不依赖于现有网络技术独立发展;既顺从当前新的应用趋势,也符合控制、转发分离的思想。其目的是对现有复杂的网络控制平面进行抽象简化,使控制器与交换设备可独立发展,使网络面向应用可编程。贯穿本书的正是软件定义网络破解复杂性的基本原则:控制平面与数据平面分离。
贯穿本书的另外一个原则是权衡。作者反复强调的一句话是:如果没有找到权衡,说明没有足够努力地寻找。在本书中理解“权衡”有一个很好的例子,即如何管理和控制复杂性。作者深刻地指出,由于物理世界的限制,无论在抽象逻辑中被埋藏得有多深,总是会对在现实世界中部署的任何解决方案或设计实施审查。最终,必须寻找在设计、安全、隐私、成本和适应网络的目标等方面的权衡—复杂性是无法避免的,它只能从网络中的一个位置移动到另一个位置。例如,计算机网络的专业人士经常被告知,今天的控制平面将简化他们的网络。相反的情况却发生了:像SDN和NFV这样的技术虽然非常有价值,但却在加剧复杂性,而不是解决复杂性。既然复杂性是必要的,它就不能被“解决”。那么,又该如何定义复杂性,理解它的组成部分并测量它呢?作者引入了一个简单易懂的“状态、优化和交互表面”模型来处理复杂性中的权衡。
无论是否有效,每一个旧的想法都会以不同的名称和不同的呈现方式再次提出—第11条军规是贯穿本书的一条暗线。时间是一个神奇的维度,站在20年后看现在和第11条军规,读者会明白作者的用意所在。计算机网络设计中存在一些一脉相承的不变原则,比如模块化、扩展、分层、安全原则等。有时候我们需要回顾历史上被遗忘的问题和解决方案,以审视眼前的系统是否存在相同的问题。就像区块链,其非凡和成功之处不在于它处于任何组件研究的前沿,而在于它整合了许多不相关领域的旧创意。鉴于本书关注的技术本质和思想,诚如作者所说:写作这本书的目的是永恒的,因为它20年后仍将是一个有用的学习指南和参考。
本书共分为四个部分,分别是数据平面、控制平面、网络设计和当前热门话题。第一部分数据平面的内容主要围绕数据传输问题展开,具体包括协议模型、分组交换、服务质量、网络虚拟化和传输安全等;第二部分控制平面关注的是网络设备如何沿着无环路径转发数据包,主要围绕拓扑的发现、无环路径的计算、拓扑变化的响应等内容展开,这一部分还介绍了控制平面的策略;第三部分是网络设计概述,介绍了网络设计的方法论,重点关注网络设计的安全性、设计模式、冗余与弹性、故障排除等几个方面。全书第1章是第一部分和第二部分的基础,而第一部分和第二部分又是第三部分的基础;第四部分主要关注一些可能塑造未来的具体技术和发展趋势,其中关注的不仅仅是网络工程,而且还包括信息生产和处理的整个过程。
本书作者之一Russ White在计算机网络领域有超过30年的工作经验,从广域固网传输、数据中心网络、园区网络到移动无线网络,他的工作涵盖不同的垂直领域、不同的文化环境,以及从简单到极度复杂的物理环境。作者独特的兴趣也决定了本书的独特和深度。作者不仅关注网络分解、可编程网络、云计算,还关注网络复杂性、哲学,以及人和技术之间的交集。作者在其个人主页第11条军规(https://rule11.tech/)中写道:本网站主要关注元认知技能,即作为网络工程师,应该如何思考和学习。这些元认知技能可以从本书的字里行间看出来:埋藏在本书段落之间的不仅有网络技术的细节和本质,还有网络架构设计的理念和思维方法。
本书的翻译源自几个不同有趣灵魂和人生轨迹的碰撞。关敏是机械工业出版社华章分社的编辑,是她自始至终的关怀、支持和信任,才让本书花开中国。佘洁也是机械工业出版社华章分社的编辑,是她出色的文笔、专业的知识、严谨的态度让本书精彩盛放。曹洪伟是一位“70后”老程序员,在计算机网络领域有20多年的沉淀,期望将码农的工匠精神倾注在这个大部头上。石涛声是一位区块链工程师,在分布式系统领域有着10多年的工作积累,期望以学者严谨的精神让更多的读者通过本书受益。无论如何,翻译都是一项特殊的创作过程,在一次次的字斟句酌中,在一次次的推敲打磨中,都包含了译者的理解和选择。尽管小心谨慎、孜孜矻矻、如履薄冰,终因译者水平有限,本书翻译错漏之处在所难免,望诸位读者海涵并指正。
夜把花悄悄地开放了,却让白昼去领受谢词。忝为译者,署名写序,不能不感恩那些真正成就此书的力量。从2018年3月开始翻译,到10月初译完毕,以及后期的三审三校,在此期间有许多人在默默付出。衷心感谢机械工业出版社华章分社的关敏和佘洁编辑,衷心感谢原作者成书经典,衷心感谢译者家人在翻译全程中的理解与支持。在此向你们致以最诚挚的谢意!

图书目录

出版者的话
译者序
前言
作者简介
译者简介
第一部分 数据平面
第1章 基本概念 4
1.1 是艺术还是工程 4
1.2 电路交换 6
1.3 分组交换 8
1.3.1 分组交换操作 8
1.3.2 分组交换网络中的流量控制 10
1.4 固定与可变长度数据帧 11
1.5 无环路径计算 13
1.6 服务质量 14
1.7 集中式控制平面的反击 15
1.8 复杂性 16
1.8.1 为什么如此复杂 16
1.8.2 定义复杂性 18
1.8.3 通过细腰模型管理复杂性 19
1.9 总结思考 21
1.10 拓展阅读 21
1.11 复习题 21
第2章 数据传输中的问题与解决方案 23
2.1 数字语法和数据列集 24
2.1.1 数字语法和字典 25
2.1.2 固定长度字段 27
2.1.3 类型长度值 28
2.1.4 共享对象字典 29
2.2 差错 30
2.2.1 差错检测 30
2.2.2 纠错 33
2.3 多路复用 35
2.3.1 设备与应用程序的寻址 35
2.3.2 多播 37
2.3.3 选播 38
2.4 流量控制 39
2.4.1 窗口机制 40
2.4.2 协商比特率 42
2.5 总结思考 43
2.6 拓展阅读 43
2.7 复习题 44
第3章 网络传输建模 46
3.1 美国国防部模型 46
3.2 开放系统互连模型 48
3.3 递归互联网架构模型 51
3.4 面向连接与无连接 52
3.5 总结思考 52
3.6 拓展阅读 53
3.7 复习题 53
第4章 底层传输 54
4.1 以太网 54
4.1.1 多路复用 55
4.1.2 差错控制 59
4.1.3 数据列集 59
4.1.4 流量控制 60
4.2 无线802.11协议 60
4.2.1 多路复用 60
4.2.2 数据列集、差错控制和流量控制 64
4.3 总结思考 65
4.4 拓展阅读 65
4.5 复习题 66
第5章 高层数据传输 67
5.1 IP 68
5.1.1 传输与列集 69
5.1.2 多路复用 72
5.2 TCP 75
5.2.1 流量控制 75
5.2.2 差错控制 78
5.2.3 TCP端口号 78
5.2.4 TCP会话的建立 79
5.3 QUIC 79
5.4 ICMP 83
5.5 总结思考 83
5.6 拓展阅读 84
5.7 复习题 85
第6章 层间发现 87
6.1 层间发现的解决方案 87
6.1.1 众所周知和手动配置的标识符 88
6.1.2 映射数据库和协议 89
6.1.3 协议中的通告标识符映射 89
6.1.4 从一个标识符计算另一个标识符 89
6.2 层间发现示例 89
6.2.1 DNS 90
6.2.2 DHCP 91
6.2.3 IPv4地址解析协议 92
6.2.4 IPv6邻居发现 93
6.3 默认网关问题 95
6.4 总结思考 97
6.5 拓展阅读 97
6.6 复习题 98
第7章 分组交换 99
7.1 从物理介质到内存 100
7.2 数据包处理 101
7.2.1 交换 101
7.2.2 路由 101
7.2.3 为什么需要路由 102
7.2.4 等价多路径 103
7.2.5 数据包处理引擎 106
7.3 跨越总线 107
7.4 从内存到物理介质 110
7.5 总结思考 110
7.6 拓展阅读 111
7.7 复习题 112
第8章 服务质量 113
8.1 定义问题空间 113
8.2 分级 115
8.2.1 分级保持 118
8.2.2 无标记的互联网 119
8.3 拥塞管理 120
8.3.1 及时性:低延迟队列 120
8.3.2 公平性:基于分级的加权公平队列 123
8.3.3 过度拥塞 124
8.3.4 其他QoS拥塞管理工具 124
8.4 队列管理 125
8.4.1 管理一个满载缓冲区:加权随机早期检测 125
8.4.2 管理缓冲延迟、缓冲膨胀和延迟控制 126
8.5 总结思考 127
8.6 拓展阅读 127
8.7 复习题 128
第9章 网络虚拟化 129
9.1 理解虚拟网络 129
9.1.1 在IP网络上提供以太网服务 131
9.1.2 一个公司网络的虚拟私有访问 133
9.1.3 虚拟化问题和解决方案总结 133
9.2 分段路由 134
9.2.1 多协议标签交换的分段路由 135
9.2.2 IPv6的分段路由 138
9.2.3 信令分段路由标签 139
9.3 软件定义广域网 140
9.4 复杂性和虚拟化 141
9.4.1 交互表面和共享风险链路组 141
9.4.2 交互表面和覆盖控制平面 142
9.5 总结思考 144
9.6 拓展阅读 144
9.7 复习题 145
第10章 传输安全 146
10.1 问题空间 146
10.1.1 验证数据 146
10.1.2 保护数据不被窃取 147
10.1.3 保护用户隐私 147
10.2 解决方案空间 148
10.2.1 加密 148
10.2.2 密钥交换 152
10.2.3 加密散列 154
10.2.4 隐藏用户信息 154
10.3 传输层安全 157
10.4 总结思考 159
10.5 拓展阅读 159
10.6 复习题 161
第二部分 控制平面
第11章 拓扑发现 165
11.1 节点、边和可达目的地 166
11.1.1 节点 166
11.1.2 边 167
11.1.3 可达目的地 167
11.1.4 拓扑结构 168
11.2 学习网络拓扑 168
11.2.1 检测其他网络设备 169
11.2.2 检测双向连接性 170
11.2.3 检测最大传输单元 171
11.3 学习可达目的地 172
11.3.1 响应式学习 173
11.3.2 主动式学习 173
11.4 通告可达性和拓扑 174
11.4.1 决定何时通告可达性及拓扑结构 174
11.4.2 可达性的响应式分发 175
11.4.3 可达性的主动式分发 177
11.5 在控制平面之间重新分发 178
11.5.1  重新分发与度量 179
11.5.2 重新分发与路由循环 180
11.6 总结思考 182
11.7 拓展阅读 182
11.8 复习题 183
第12章 单播无环路径(1) 184
12.1 哪条路径是无环路径 184
12.2 树 186
12.3 无环备选路径 188
12.3.1 瀑布(或分水岭)模型 189
12.3.2 P/Q空间 190
12.3.3 远程无环备选路径 191
12.4 Bellman-Ford无环路径计算 191
12.5 Garcia扩散更新算法 196
12.6 总结思考 200
12.7 拓展阅读 200
12.8 复习题 201
第13章 单播无环路径(2) 202
13.1 Dijkstra 最短路径优先 202
13.1.1 部分和增量SPF 207
13.1.2 计算LFA和rLFA 208
13.2 路径向量 209
13.3 非相交路径算法 211
13.3.1 双连接网络 212
13.3.2 Suurballe 非相交路径算法 212
13.3.3 最大冗余树 215
13.4 双向连接性 218
13.5 总结思考 218
13.6 拓展阅读 218
13.7 复习题 220
第14章 对拓扑变化的响应 221
14.1 检测拓扑变化 222
14.1.1 通过轮询来检测故障 222
14.1.2 事件驱动的故障检测 223
14.1.3 比较事件驱动和基于轮询的检测 224
14.1.4 示例:双向转发检测 225
14.2 变更分发 226
14.2.1 洪泛 227
14.2.2 逐跳 229
14.2.3 集中式存储 230
14.3 一致性、可用性和分区 232
14.4 总结思考 234
14.5 拓展阅读 234
14.6 复习题 235
第15章 距离向量控制平面 236
15.1 控制平面分类 236
15.2 生成树协议 239
15.2.1 构建一棵无环树 239
15.2.2 学习可达目的地址 242
15.2.3 生成树协议的总结思考 243
15.3 路由信息协议 244
15.3.1 绑定Bellman-Ford算法到RIP 245
15.3.2 对拓扑变化的响应 247
15.3.3 RIP的总结思考 248
15.4 增强内部网关路由协议 248
15.4.1 对拓扑变化的响应 250
15.4.2 邻居发现与可靠传输 252
15.4.3 EIGRP的总结思考 252
15.5 拓展阅读 253
15.6 复习题 254
第16章 链路状态与路径向量控制平面 255
16.1 OSPF和IS-IS简史 255
16.2 IS-IS协议 256
16.2.1 OSI寻址 256
16.2.2 IS-IS中的数据列集 257
16.2.3 邻居发现和拓扑发现 258
16.2.4 可靠的洪泛 259
16.2.5 IS-IS 的总结思考 261
16.3 OSPF 261
16.3.1 OSPF中的数据列集 261
16.3.2 邻居发现和拓扑发现 262
16.3.3 可靠的洪泛 264
16.3.4 OSPF的总结思考 265
16.4 OSPF和IS-IS中的通用元素 265
16.4.1 多址链路 265
16.4.2 链路状态协议中概念化链路、节点和可达性 267
16.4.3 验证SPF中的双向连接性 268
16.5 边界网关协议 269
16.5.1 BGP 对等操作 269
16.5.2 BGP的最佳路径决策过程 271
16.5.3 BGP的通告规则 272
16.5.4 BGP的总结思考 273
16.6 总结思考 274
16.7 拓展阅读 274
16.8 复习题 276
第17章 控制平面中的策略 277
17.1 控制平面策略用例 277
17.1.1 冷/热土豆路由 277
17.1.2 资源分割 279
17.1.3 应用优化的流量固定 280
17.2 定义控制平面策略 283
17.3 控制平面策略与复杂性 284
17.3.1 再谈冷/热土豆路由 284
17.3.2 资源分割 285
17.3.3 应用的流量固定 286
17.4 总结思考 287
17.5 拓展阅读 287
17.6 复习题 288
第18章 集中式控制平面 289
18.1 讨论“软件定义”的定义 289
18.1.1 接口分类 290
18.1.2 功能分层 290
18.2 BGP作为SDN 291
18.3 Fibbing 292
18.4 I2RS 294
18.5 PCEP 298
18.6 OpenFlow 299
18.7 CAP定理和辅助性 301
18.8 总结思考 303
18.9 拓展阅读 303
18.10 复习题 304
第19章 故障域与信息隐藏 305
19.1 问题空间 305
19.1.1 定义控制平面状态范围 305
19.1.2 正反馈环路 306
19.2 解决方案空间 309
19.2.1 拓扑信息汇总 309
19.2.2 可达性信息聚合 310
19.2.3 可达性信息过滤 312
19.2.4 控制平面分层 312
19.2.5 缓存 313
19.2.6 减速 316
19.3 总结思考 317
19.4 拓展阅读 318
19.5 复习题 318
第20章 信息隐藏示例 319
20.1 拓扑信息汇总 319
20.1.1 IS-IS 319
20.1.2 OSPF 323
20.2 聚合 327
20.3 分层 328
20.3.1 BGP作为一个可达性覆盖层 328
20.3.2 带有控制器覆盖层的分段路由 329
20.4 减慢状态速度 330
20.4.1 指数退避 331
20.4.2 链路状态的洪泛缩减 333
20.5 总结思考 334
20.6 拓展阅读 334
20.7 复习题 335
第三部分 网络设计
第21章 安全性的宽泛讨论 339
21.1 问题的范围 339
21.1.1 生物特征识别难题 339
21.1.2 定义 340
21.1.3 问题空间 341
21.2 解决方案空间 341
21.2.1 深度防御 342
21.2.2 访问控制 342
21.2.3 数据保护 343
21.2.4 服务可用性保证 346
21.3 作为安全模型的OODA循环 352
21.3.1 观察 352
21.3.2 调整 352
21.3.3 决策 353
21.3.4 行动 354
21.4 总结思考 354
21.5 拓展阅读 354
21.6 复习题 356
第22章 网络设计模式 357
22.1 问题空间 357
22.1.1 解决业务问题 358
22.1.2 将业务需求转换为技术需求 360
22.1.3 什么是好的网络设计 361
22.2 分层设计 362
22.3 常见拓扑结构 364
22.3.1 环形拓扑 364
22.3.2 网格拓扑 366
22.3.3 星形拓扑 367
22.3.4 平面、非平面和规则化 368
22.4 总结思考 369
22.5 拓展阅读 369
22.6 复习题 369
第23章 冗余与弹性 370
23.1 问题空间:网络故障对应用程序的影响 370
23.2 弹性的定义 371
23.3 创建弹性的工具—冗余 372
23.3.1 共享风险链路组 374
23.3.2 在线软件升级和优雅重启 374
23.3.3 双平面与多平面核心 375
23.4 模块化和弹性 376
23.5 总结思考 377
23.6 拓展阅读 377
23.7 复习题 377
第24章 故障排除 378
24.1 目的是什么 378
24.2 组件是什么 379
24.3 模型和故障排除 380
24.3.1 构建How模型 380
24.3.2 构建What模型 381
24.3.3 建立精准模型 382
24.3.4 模型之间的切换 383
24.4 二分法和移动 385
24.4.1 使用可操控性 386
24.4.2 在测试之前简化 387
24.5 解决问题 387
24.6 总结思考 388
24.7 拓展阅读 389
24.8 复习题 389
第四部分 当前热门话题
第25章 分解、超融合及不断变化的网络 393
25.1 计算资源和应用程序的变化 393
25.1.1 汇聚、分解、超融合和可合成 394
25.1.2 应用程序的虚拟化和分解 396
25.2 网络设计的影响 397
25.2.1 东西网络流量的兴起 397
25.2.2 抖动和延迟的兴起 398
25.3 分组交换Fabric 398
25.3.1 一个Fabric的特性 398
25.3.2 骨干和叶子节点 401
25.3.3 骨干和叶子节点上的流量工程 403
25.3.4 大规模的骨干和叶子节点 404
25.4 网络中的分解 404
25.5 总结思考 407
25.6 拓展阅读 408
25.7 复习题 408
第26章 网络自动化案例 409
26.1 自动化的概念 410
26.2 现代自动化方法 412
26.2.1 NETCONF 412
26.2.2 RESTCONF 415
26.3 具有可编程接口的自动化 415
26.4 on-box自动化 418
26.5 基于基础设施自动化工具的网络自动化 418
26.6 网络控制器与自动化 419
26.7 用于部署的网络自动化 419
26.8 对未来网络自动化的总结思考:自动化到全自动 420
26.9 拓展阅读 420
26.10 复习题 421
第27章 网络功能虚拟化 422
27.1 网络设计的灵活性 423
27.2 水平扩展 428
27.3 通过自动化减少服务时间 429
27.3.1 中心化策略管理 429
27.3.2 基于意图的网络 430
27.3.3 VNF自动化的好处 430
27.4 计算优势与架构 430
27.5 考虑权衡 431
27.5.1 状态 432
27.5.2 优化 432
27.5.3 表面 432
27.5.4 其他需要考虑的因素 432
27.6 总结思考 433
27.7 拓展阅读 433
27.8 复习题 434
第28章 云计算的概念和挑战 435
28.1 公有云的业务驱动 436
28.1.1 从资本支出转向运营支出 436
28.1.2 上市时间和业务敏捷性 437
28.2 非技术性的公有云权衡 437
28.2.1 运营权衡 438
28.2.2 业务权衡 439
28.3 云计算的技术挑战 440
28.3.1 延迟 440
28.3.2 填充远程存储 441
28.3.3 数据重力 442
28.3.4 选择到公有云的多个路径 442
28.4 云的安全性 443
28.4.1 在公共传输网上保护数据 443
28.4.2 管理安全连接 444
28.4.3 多租户云 444
28.4.4 基于角色的访问控制 444
28.5 监控云网络 445
28.6 总结思考 445
28.7 拓展阅读 445
28.8 复习题 446
第29章 物联网 447
29.1 IoT介绍 447
29.2 IoT安全 448
29.3 IoT的连接性 451
29.3.1 低功耗蓝牙 452
29.3.2 LoRaWAN 453
29.3.3 IoT的IPv6 454
29.4 IoT数据 455
29.5 总结思考 456
29.6 拓展阅读 456
29.7 复习题 457
第30章 展望未来 458
30.1 普遍开放的自动化 459
30.1.1 建模语言和模型 459
30.1.2 YANG简介 459
30.1.3 普遍自动化的展望 460
30.2 超融合网络 460
30.3 基于意图的网络 461
30.4 机器学习和狭义人工智能 463
30.5 命名数据网络和区块链 464
30.5.1 命名数据网络的操作 465
30.5.2 区块链 466
30.6 互联网的重塑 468
30.7 对网络工程未来的总结思考 469
30.8 拓展阅读 470
30.9 复习题 470

教学资源推荐
作者: [美]安德烈·普拉泽(André Platzer) 著
作者: 雷渭侣
参考读物推荐
作者: (美)Terry William Ogletree
作者: 杜金房 张令考 著
作者: (加)Brent Chaters 著