搜索
高级检索
高级搜索
书       名 :
著       者 :
出  版  社 :
I  S  B  N:
出版时间 :
深入浅出TCP/IP和VPN
0.00     定价 ¥ 198.00
浙江图书馆
  • ISBN:
    9787301320242
  • 作      者:
    李宗标
  • 出 版 社 :
    北京大学出版社
  • 出版日期:
    2021-05-01
收藏
编辑推荐

TCP/IP和VPN重量级教材:以幽默诙谐的笔调图解 HTTP、图解 TCP/IP、图解MPLS、图解OSPF/RIP/IS-IS/BGP、图解VPN,全面阐述和透彻分析网络协议的工作原理和实现细节,涵盖新的网络协议和实践方法。

展开
作者简介
李宗标,华为网络运维高级架构师,业界 SDN+NFV Orchestrator 开源项目架构师,对网络运维、软件架构、SDN/NFV 有较深研究,著有《深入理解 OpenStack Neutron》一书。
展开
内容介绍
本书以RFC为基础,以“TCP/IP→MPLS→MPLS VPN”为主线,系统介绍了相关的网络协议,包括TCP/IP体系的基本协议(物理层、数据链路层、网络层、传输层、应用层)、路由协议(OSPF、IS-IS、RIP、BGP),以及MPLS和MPLS VPN。
本书尽可能地以相对轻松的笔调来讲述略显枯燥的网络协议知识。本书也尽可能地深挖网络概念背后的细节和本质,期望做到生动有趣、深入浅出,能给读者枯燥的学习增加一点轻松快乐。
本书适用于对网络协议零基础而期望入门或者有一定基础而期望能有所提高的读者,适用于深入网络协议开发/测试的读者,适用于计算机系统维护的管理员,也适用于仅仅希望对网络协议做一些简单了解的读者。
展开
精彩书摘
第1章 物理层浅说
提起物理层,最先映入脑海的可能就是网线。但物理层绝对不是网线(双绞线)这么简单。从某种意义上说,网络模型中的物理层是学习过程中最容易忽略的一层。但是,物理层是涉及物理学、数学、材料学等较多知识的一个层。比如著名的香农(Shannon)定理就与物理层密切相关。不过从掌握基本概念和基础学习的角度来看,可暂时忘记物理层,从最基本的通信系统切入,不失为一种较好的方法。

1.1 通信系统基本模型
我们日常的电话、视频、微信等,都属于通信。这些通信场景形态各异、千差万别,但是抽象地看,其背后都符合一个通信系统的基本模型,如图1-1所示。

图1-1 通信系统基本模型
信源指信息的发送方,信宿指信息的接收方。在图1-1中,信源、信宿及中间的信号传输(网络)都是非常抽象的,它甚至可以指代一条狗、一只猫和“以太”(古希腊哲学家亚里士多德所设想的一种物质)。
狗(信源)与猫(信宿)的对视,通过眼神交流,它们之间为“光通信”,其信号传输网络则是“以太”。
在图1-1中,却有两个不那么抽象的模块:编码和调制/解调这两个模块其实并不那么抽象,是因为我们要讲述的还是计算机通信,而不是完全抽象的通信系统。另外,编码、调制、解调,虽然不像TCP/IP那样显山露水,却是通信系统非常基础的部分。尤其是编码,是基础的基础。
1.1.1 编码
通过网络,我们可以获取很多信息,然而网络中“跑”的一般都是数字信号。数字信号就是以常见的二进制数字表示的信号,类似于“0101”这样的比特流。假设,用高(正)电平表示1,用低(零)电平表示0,信源要发送一串比特流“1010110”给信宿,则其信号传输如图1-2所示。

图1-2 发送比特流
在图1-2中,信源将数据“1010110”转换为固定时间间隔(周期为T)的信号进行发送,网络传输对原始脉冲信号没有做任何改变(也没有任何衰减和噪声干扰),信宿接收到脉冲信号以后,需要将这些脉冲信号进行还原,得到原始信息(1010110),这就要求信宿和信源的时钟要同步。
时钟同步是通信系统中一个重要且涉及知识面极广的话题,由于本书主题是协议,因此这里不进行详述。可以这样简单理解时钟同步:信宿还原信号的频率与信源发送信号的频率要相同。图1-3描述了时钟同步与不同步的情形。
在图1-3中,当时钟同步时,信宿和信源的时钟频率相同,即T2 = T1,所以信宿能够正确地还原出信源发送的数据(1010110);而当时钟不同步时,信宿的时钟周期是信源的2倍,即T2 = 2T1,此时数据传输就会出错。
时钟同步是网络通信中一个非常重要的基础条件,其定义如下:信宿端的定时时钟频率与其所接收的码元的速率完全相同,并且定时时钟信号与所接收的码元信号的频率保持固定的最佳相位关系。信宿端获得或产生符合这一要求的定时信号的过程称为时钟同步(或称为位同步或比特同步)。
该定义包含以下几层含义。
信宿端的时钟与其所接收的码元(信号)频率必须相同。
信宿端可通过某种方法获得这个频率:信源端专门发送同步信息(称为导频),信宿端从导频信号中提取出时钟频率,也称为外同步法。
信宿端也可从其所接收的码元(信号)中提取出该频率,而不需要额外的导频信号,也称为自同步法。
1. 归零编码
归零编码(Return Zero Encoding,RZ编码)就是将一个信号周期T分为两个部分:T1时段用以表达(传输)数据,T2时段用以将信号电平归零,如图1-4所示。

图1-4 RZ编码(单极性)
图1-4中,RZ编码就是利用T2时段内的归零信号表达(传输)时钟信号,其优点是不需要额外的导频信号;缺点是传输效率下降,其传输效率只有T1/T。就传输效率而言,自同步(信号里包含时钟信息)可能更具优势。
RZ编码分为单极性归零编码和双极性归零编码。图1-4表示的就是单极性归零编码,它用高电平表示1,用低电平表示0。而双极性归零编码则用正(高)电平表示1,负(低)电平表示0,更容易看出归零的效果,如图1-5所示。

图1-5 RZ编码(双极性)
2. 不归零编码
不归零编码(None Return Zero Encoding,NRZ编码)表示传输完一个码之后电压不需要回到0,如图1-6所示。
NRZ编码的优点是传输效率是100%,缺点是信号中没有包含时钟信息。NRZ编码若想传输高速同步数据,基本上都要带时钟线(异步低速传输可以没有),这是额外的负担。
3. 反向不归零编码
RZ编码自带时钟信息,但是传输效率相对较低;而NRZ编码传输效率高(100%),但是不能自带时钟信息。反向不归零编码(Non Return Zero Inverted Encoding,NRZI编码)则解决了RZ/NRZ编码的矛盾:既能自带时钟信息,又能高效传输,如图1-7所示。
NRZI编码的规则是:与前一个信号对比,如果相同,则为1;如果不同,则为0。
极端情况下,如果发送一串全0的比特流,如“0000000”,则NRZI编码会变成图1-8所示。

          图1-7 NRZI编码           图1-8 NRZI编码(全0比特流)
需要特别说明,NRZI编码“害怕”全1比特流,因为如果“全1”,则无法提取时钟信息。其解决方案是在一定数量的1后面插入一个0,然后在解码时再将这个0删去除。例如,著名的USB 2.0协议就规定在7个1后面插入一个0。如果要发送8个1(11111111),那么其NRZI编码如图1-9所示。

图1-9 NRZI编码(8个1的比特流)
4. 曼彻斯特编码
曼彻斯特编码(Manchester Encoding)也称为相位编码(Phase Encoding,PE)。前文介绍的RZ、NRZ、NRZI编码都以电平高低来表达数字信号,而曼彻斯特编码则以电平跳变来表达数字信号,如图1-10所示。

图1-10 曼彻斯特编码关于比特的标识
图1-10表述了曼彻斯特编码两种定义数字信号比特1/0的方法(现在这两种定义都有应用),如下所述。
①IEEE 802.3(以太网)、IEEE 802.4(令牌总线)中规定, 低-高电平跳变表示1, 高-低电平跳变表示0。
②G. E. Thomas、 Andrew S. Tanenbaum于1949年提出,低-高电平跳变表示0,高-低电平跳变表示1。
对于“1010110”的曼彻斯特编码如图1-11所示。从图中可以看出,曼彻斯特编码的传输效率与R2编码一样,也是有损传输,没有达到100%。

图1-11 曼彻斯特编码(1010110)
5. 差分曼彻斯特编码
差分曼彻斯特编码关于比特的标识如图1-12所示。

图1-12 差分曼彻斯特编码关于比特的标识
对于“1010110”的差分曼彻斯特编码,如图1-13所示。从图可以看出,差分曼彻斯特编码的传输效率与曼彻斯特编码一样,也是有损传输效率,没能达到100%。

图1-13 差分曼彻斯特编码(1010110)
1.1.2 码元
码元在通信中也是非常基础的概念,其定义如下:在数字通信中常用时间间隔相同的符号来表示一个二进制数字,这样的时间间隔内的信号称为(二进制)码元。
也有另一种描述是:在使用时间域(或简称为时域)的波形表示数字信号时,代表不同离散数值的基本波形就称为码元。
如图1-14所示,其表达的其实就是NRZ编码。用高电平(电压为E)表示二进制数字1,用低电平(电压为0)表示二进制数字0,而高电平/低电平的持续时间为T。也就是说,持续时间为T的电压E,或者持续时间为T的电压0,均被称为码元。

图1-14 码元的通俗解释
在图1-14中,一个码元携带一个比特信息(E等价于1,0等价于0),也有一个码元携带多个比特信息的情况,如图1-15所示。
码元有2E、E、-E、-2E,分别代表01、00、10、11,即1个码元可以携带2个比特信息。
码元所表达的含义是:计算机(广义的计算机)只能处理0/1这样的二进制数字,即信号只有2个状态,但是网络传输的信号不只有2个状态,也可以有4个状态,也可以有更多的状态。
码元与第1.1.1节中所介绍的编码方法并不矛盾,两者可以结合起来使用。例如,用图1-15所表示的码元,基于NRZ编码表达“10101100”这8个比特,如图1-16所示。

图1-15 1个码元携带2个比特信息 图1-16 码元与NRZ编码(10101100)
1.1.3 调制与解调
从网络中传输的信号的“本源”的角度来看,信号分为两种:基带信号(基本频带信号)、带通信号。
基带信号就是来自信源的信号,其没有做任何处理。计算机从网卡输出的信号属于基带信号。基带信号往往包含有较多的低频成分,甚至有直流成分,而许多信道(1.1.4小节会介绍这个概念,这里暂且理解为传输线路)并不能传输这种低频分量或直流分量,因此必须对基带信号进行调制(Modulation)。
带通信号就是基带信号经过载波调制后的信号,其目的是把信号的频率范围搬移到较高的频段,以便在信道中传输。
载波就是载着基带信号的波(信号)。载波一般是高频波,以正弦波为例,其波形如图1-17所示。

图1-17 载波示例
(1)调制
调制即载波承载基带信号的方式,包括调幅、调频、调相3种,如图1-18所示(假设基带信号是数字信号)。

图1-18 调幅、调频、调相
调幅(Amplitude Modulation,AM),就是用载波信号的不同振幅来表达基带信号的信息(数字信号中的0/1)。
调频(Frequency Modulation,FM),就是用载波信号的不同频率来表达基带信号的信息。
调相(Phase Modulation,PM),就是用载波信号的相位来表达基带信号的信息。
展开
目录
第0章 计算机网络模型
0.1 OSI七层模型 2
0.2 TCP/IP模型 6
第1章 物理层浅说
1.1 通信系统基本模型 10
1.1.1 编码 10
1.1.2 码元 15
1.1.3 调制与解调 15
1.1.4 信道 16
1.2 传输媒体 22
1.2.1 导向媒体 23
1.2.2 非导向媒体 31
1.3 物理层综述 34
第2章 数据链路层
2.1 数据链路层的基本使命 37
2.1.1 信息成帧 38
2.1.2 透明传输 49
2.1.3 差错检测 51
2.2 点对点协议 55
2.2.1 PPP综述 55
2.2.2 LCP 61
2.2.3 IPCP 71
2.3 以太网 72
2.3.1 局域网和IEEE 802概述 73
2.3.2 以太网的起源 78
2.3.3 以太网的帧格式 79
2.3.4 IEEE 802.3概述 83
2.3.5 以太网的发展 94
2.4 生成树协议 97
2.4.1 网桥的基本原理和环路广播风暴 98
2.4.2 STP的基本原理 101
2.4.3 BPDU帧格式 115
2.4.4 STP的收敛时间 117
2.4.5 快速生成树协议 119
2.5 VLAN 130
2.5.1 VLAN的帧格式 132
2.5.2 网桥的VLAN接口模式 133
2.5.3 VLAN帧转发 136
2.5.4 QinQ 138
2.6 数据链路层小结 138
第3章 网络层
3.1 Internet发展简史 141
3.1.1 ARPANET的诞生 141
3.1.2 TCP/IP的诞生 142
3.1.3 Internet的诞生 143
3.1.4 WWW的诞生 146
3.1.5 Internet之父 147
3.1.6 中国互联网梦想的起步 148
3.2 IP地址 155
3.2.1 IP的分配和分类 156
3.2.2 子网 158
3.2.3 私网IP 161
3.2.4 环回IP 163
3.2.5 单播、广播、组播 166
3.3 IP报文格式 170
3.3.1 IP报文格式综述 170
3.3.2 几个相对简单的字段 172
3.3.3 服务类型 173
3.3.4 分片 178
3.3.5 可选项 180
3.3.6 头部校验和 182
3.4 ARP 183
3.4.1 ARP概述 184
3.4.2 动态ARP与静态ARR 187
3.4.3 ARP的分类 189
3.4.3 RARP 195
3.4.5 组播的MAC地址 197
3.5 IP路由 200
3.5.1 路由器转发模型 202
3.5.2 路由表 204
3.5.3 等价路由 208
3.5.4 路由备份 209
3.5.5 策略路由与路由策略 213
3.6 ICMP 216
3.6.1 ICPM错误报告 219
3.6.2 ICMP信息查询 224
3.6.3 traceroute 226
3.7 网络层小结 228
第4章 传输层
4.1 TCP报文结构 230
4.1.1 源端口号/目的端口号 231
4.1.2 数据偏移量 233
4.1.3 保留 234
4.1.4 标志位 234
4.1.5 校验和 234
4.1.6 选项 236
4.2 TCP连接 238
4.2.1 TCP连接的基本创建过程 239
4.2.2 一个简单的TCP数据传输 243
4.2.3 TCP连接是什么 246
4.2.4 全双工的TCP连接 248
4.2.5 TCP连接的关闭 249
4.2.6 TCP连接的状态机 252
4.2.7 TCP连接的收发空间 256
4.2.8 TCP连接的优先级和安全性 262
4.2.9 TCP的RST报文 263
4.2.10 用户调用TCP接口 263
4.2.11 等待对方报文 269
4.2.12 收到对方报文 271
4.2.13 TCP连接的初始序列号 289
4.3 滑动窗口 295
4.3.1 滑动窗口基本概念 296
4.3.2 窗口大小与发送效率 298
4.3.3 PUSH 302
4.3.4 Urgent 305
4.3.5 Zero Window 311
4.3.6 Keep Alive 315
4.3.7 Window Scale Option 316
4.3.8 超时估计 322
4.3.9 拥塞控制 333
4.3.10 SACK 347
4.4 UDP 357
4.5 传输层小结 358
第5章 HTTP
5.1 HTTP综述 360
5.1.1 HTTP基本网络架构 361
5.1.2 HTTP的报文格式简述 362
5.1.3 HTTP的发展 370
5.1.4 HTTP与HTTPS、S-HTTP之间的关系 373
5.2 URI(统一资源标识符) 375
5.2.1 URI的基本语法 376
5.2.2 百分号编码 388
5.2.3 URL和URN 392
5.3 Header Fields 393
5.3.1 基本字段 393
5.3.2 Content-Length 397
5.3.3 Request相关字段 400
5.3.4 Response相关字段 409
5.3.5 Range Retrieve 415
5.4 HTTP Methods 420
5.4.1 GET、HEAD、DELETE 423
5.4.2 PUT 424
5.4.3 POST 425
5.4.4 CONNECT 430
5.4.5 TRACE 435
5.4.7 OPTIONS 438
5.5 HTTP状态码 439
5.5.1 信息类 1xx(Informational) 439
5.5.2 成功类 2xx(Successful) 440
5.5.3 重定向类 3xx(Redirection) 443
5.5.4 客户端错误类 4xx(Client Error) 446
5.5.5 服务端错误类 5xx(Server Error) 449
5.6 HTTP连接 449
5.6.2 长连接与流水线 451
5.6.3 服务端推送 452
5.7 HTTP的Cookie与Session 453
5.7.1 HTTP的无状态/有状态 453
5.7.2 Cookie 454
5.7.3 Session 461
5.8 HTTP Cache 465
5.8.1 HTTP的物理拓扑 467
5.8.2 HTTP Cache概述 467
5.8.3 HTTP Cache相关的报文头字段 468
5.8.4 HTTP Cache的验证 477
5.8.5 HTTP Cache的存储、删除与应答 479
5.9 HTTP小结 481
第6章 OSPF
6.1 Dijkstra算法 483
6.2 OSPF概述 486
6.3 邻居发现 488
6.4 DR机制 492
6.4.1 DR机制概述 492
6.4.2 OSPF的网络类型 494
6.4.3 DR/BDR的选举 497
6.4.4 DR机制的可靠性保证 508
6.4.5 DR机制的稳定性保证 509
6.5 OSPF接口状态机 509
6.5.1 接口的状态 510
6.5.2 接口的事件 511
6.5.3 决策点 512
6.6 链路状态通告 513
6.6.1 OSPF的分区 514
6.6.2 LSA数据结构 518
6.6.3 Stub系列区域 537
6.7 LSA泛洪 539
6.7.1 DD报文 540
6.7.2 LSA Loading 547
6.7.3 OSPF邻居状态机 548
6.7.4 LSA泛洪机制 559
6.7.5 LSA的老化 568
6.7.6 LSA的泛洪过程 570
6.8 生成LSA 575
6.8.1 “新”的LSA 576
6.8.2 LSA的生成时机 577
6.8.3 LSA生成时机总结 581
6.9 OSPF小结 581
第7章 IS-IS
7.1 IS-IS的ISO网络层地址 585
7.1.1 NSAP的简易版理解方式 585
7.1.2 NSAP的复杂版理解方式 586
7.2 IS-IS协议综述 589
7.2.1 IS-IS的区域 590
7.2.2 IS-IS的邻接与路由计算 591
7.2.3 IS-IS的报文格式 593
7.3 IS-IS邻接关系的建立 595
7.3.1 邻接关系建立的基本原则 596
7.3.2 邻接关系建立的报文概述 597
7.3.3 P2P网络的IIH 599
7.3.4 Broadcast网络的IIH 600
7.3.5 IS-IS两种网络的邻接关系建立过程的比较 605
7.4 链路状态泛洪 606
7.4.1 链路状态泛洪相关的报文格式 606
7.4.2 链路状态的泛洪 618
7.4.3 链路状态的老化 623
7.5 IS-IS小结 623
第8章 RIP
8.1 Bellman-Ford算法 626
8.1.1 算法的目标 626
8.1.2 算法的基本思想 627
8.1.3 算法简述 629
8.2 RIP综述 631
8.2.1 RIP与OSPF、IS-IS在基本概念上的对比 631
8.2.2 RIP的报文概述 633
8.3 RIP的报文处理 640
8.3.1 RIP的定时器 640
8.3.2 处理路由请求报文 642
8.3.3 处理路由更新报文 643
8.3.4 处理触发更新报文 646
8.4 RIP的防环机制 647
8.4.1 水平分割 648
8.4.2 计数到无穷大 652
8.5 RIP小结 655
第9章 BGP
9.1 BGP的基本机制 657
9.1.1 BGP的相关概念 658
9.1.2 BGP的路由通告 658
9.2 BGP的报文格式 661
9.2.1 BGP报文头格式 661
9.2.2 BGP Update报文格式 662
9.3 BGP的路径优选 669
9.3.1 第1优先级:Local_Pref 670
9.3.2 第2优先级:AS_Path 670
9.3.3 第3优先级:MED 671
9.3.4 第4优先级:路由来源 672
9.3.5 第5优先级:路由学习时间 672
9.3.6 第6优先级:Cluster_List 673
9.3.7 第7优先级:下一跳的Router ID 673
9.3.8 第8优先级:下一跳的IP 674
9.4 iBGP的“大网”解决方案 674
9.4.1 路由反射器方案 675
9.4.2 联邦方案 679
9.5 BGP路径属性:Communities 681
9.5.1 Communities的基本概念 682
9.5.2 Communities的应用举例 682
9.6 BGP小结 684
第10章 MPLS
10.1 MPLS的转发 687
10.1.1 MPLS转发模型 687
10.1.2 MPLS的转发过程 690
10.2 标签分发协议 694
10.2.1 LDP概述 694
10.2.2 标签的分配和发布 698
10.3 LSP的构建 703
10.3.1 LSP构建的基本原理 703
10.3.2 MPLS的应用场景 705
10.3.3 跨域LSP 706
10.4 MPLS小结 707
第11章 MPLS L3VPN
11.1 L3VPN的概念模型 711
11.2 L3VPN的转发 714
11.3 L3VPN的控制信令 716
11.3.1 MP-BGP概述 717
11.3.2 VPN实例与内层标签 718
11.3.3 路由信息与内层标签 720
11.4 跨域L3VPN 726
11.4.1 Option A方案 728
11.4.2 Option B方案 729
11.4.3 Option C方案 733
11.5 MPLS L3VPN小结 737
第12章 MPLS L2VPN
12.1 L2VPN的基本框架 743
12.1.1 L2VPN的基本模型 744
12.1.2 L2VPN的封装 746
12.1.3 L2VPN的分类 751
12.2 L2VPN的数据面 754
12.2.1 PW的基本模型 755
12.2.2 PW的Ethernet接入模式 756
12.2.3 VPLS的数据面 757
12.3 L2VPN的控制面 764
12.3.1 Martini流派 764
12.3.2 Kompella流派 774
12.3.3 清流派 781
12.4 L2VPN与L3VPN 783
参考文献
展开
加入书架成功!
收藏图书成功!
我知道了(3)
发表书评
读者登录

温馨提示:请使用浙江图书馆的读者帐号和密码进行登录

点击获取验证码
登录