本书以图配文,通俗易懂地讲解了长期不会过时的TCP技术。其中,第1章至第3章讲解了TCP的基础知识,详细梳理了TCP的发展历程,并以丰富的图例展示了TCP数据传输的基本思路和过程;第4章至第6章着重介绍了TCP中极为重要的拥塞控制技术,通过图表、公式和模拟实验讲解了TCP拥塞控制的运行机制和热门算法(CUBIC、BBR等);第7章讲解了TCP前沿的研究动向和今后的发展方向,涉及5G、物联网、数据中心、自动驾驶等内容。
本书理论与实践相结合,在详细讲解TCP原理后,还引领读者搭建模拟环境,使用Wireshark和ns-3等工具模拟TCP的运行机制,观察拥塞控制算法的执行,并辅以伪代码,帮助读者全面理解TCP技术。
1.146张示意图帮助理解,详略得当,为读懂大部头开路
2.详细梳理TCP发展历程,从变迁中窥见设计思路与本质
3.深入TCP核心技术,重点讲解拥塞控制算法(CUBIC、BBR等)
4.使用Wireshark和ns-3等搭建模拟环境,切实体验算法流程
安永辽真(作者) 2011年毕业于东京大学工学部,2013年硕士毕业于东京大学研究生院工学系,同年入职日本电信电话株式会社,2016年被派往诺基亚贝尔实验室进修。主要从事计算机网络模型的研究。 中山悠(作者) 2008年毕业于东京大学,入职日本电信电话株式会社,2018年博士毕业于东京大学电子信息专业,目前在东京农工大学担任副教授,研究移动计算、低延迟网络和物联网等。 丸田一辉(作者) 2008年毕业于九州大学,入职日本电信电话株式会社,2016年博士毕业于九州大学信息智能工学专业,2017年3月成为千叶大学助教,研究无线网络中的抗干扰技术。曾获得日本电子信息通信学会(IEICE)论文奖、日本无线电通信系统(RCS)研究会最优秀贡献奖等。 尹修远(译者) 毕业于华中科技大学,现从事客户端开发工作。曾任职腾讯游戏平台,从事网络加速相关技术研发,对TCP/IP等网络技术有自己独到的见解。
第 1章
TCP入门
确保传输可靠性 1
1.1 通信与协议
OSI参考模型、TCP/IP和RFC 2
OSI参考模型 2
TCP/IP 10
分层模型下的数据格式 12
协议分层结构下的通信过程 12
1.2 传输层与传输可靠性
将数据无乱序、无丢失地发送给接收方 15
传输可靠性 15
网络拥塞 15
通信对网络的要求 16
传输层的职责 17
1.3 UDP的基本情况
无连接的简单特性 18
UDP的基础知识 18
单播、多播、广播 19
适合UDP的应用程序 20
1.4 TCP的基本情况
可靠性的确保与实时性 21
TCP的基础知识 21
TCP与UDP的功能与特点 22
适合TCP 的应用程序 23
1.5 TCP 的基本功能
重传、顺序控制和拥塞控制 23
连接管理 24
序列号 24
重传控制 25
顺序控制 26
端口号 27
流量控制 28
拥塞控制与拥塞控制算法 29
无线通信与TCP 30
1.6 面向特定用途的协议
RUDP、W-TCP、SCTP 和DCCP 32
RUDP 32
W-TCP 33
SCTP 36
DCCP 37
1.7 小结 37
第 2章
TCP/IP的变迁
随着互联网的普及而不断进化的协议 39
2.1 TCP 黎明期
1968 年1980 年 40
阿帕网项目启动(1968 年) 41
UNIX 问世(1969 年) 44
搭建ALOHAnet(1970年) 45
TCP 问世(1974 年) 46
以太网标准公开(1980年) 47
2.2 TCP发展期
1980年1995年 48
拥塞崩溃问题浮出水面(1980 年) 49
引入Nagle 算法(1984 年) 49
引入拥塞控制算法(1988 年) 51
往互联网的迁移与万维网的诞生(1990 年) 52
2.3 TCP 普及期
1995年2006 年 53
Windows 95发售(1995年) 54
IPv6投入使用(1999年) 54
无线LAN出现(1999年) 55
各式各样的互联网应用服务(2004年2006年) 56
2.4 TCP扩展期
21世纪00年代后半期 57
智能手机普及(2007年) 57
云计算出现(2006年) 58
移动网络的高速化(2010 年、2015年) 59
物联网的大众化(2015年) 61
2.5 小结 62
第3章
TCP与数据传输
实现可靠性与效率的兼顾 65
3.1 TCP 的数据格式
数据包与首部的格式 66
数据包格式 66
TCP 报文段 66
TCP 首部格式 68
UDP 首部格式 72
3.2 连接管理
3次握手 73
建立连接 73
断开连接 74
端口与连接 75
3.3 流量控制与窗口控制
不宜多也不宜少,适当的发送量与接收方缓冲区 76
流量控制 76
缓存与时延 77
窗口控制 78
复习:流量控制、窗口控制和拥塞控制 79
3.4 拥塞控制
预测传输量,预测自律运行且内部宛如黑盒的网络的内部情况 80
TCP拥塞控制的基本概念 80
慢启动 81
拥塞避免 82
快速恢复 84
3.5 重传控制
高可靠性传输的关键准确且高效 86
高可靠性传输所需的重传控制 86
基于重传计时器的超时控制 87
使用重复ACK 91
拥塞避免算法与重传控制综合影响下的流程及拥塞窗口大小的变化情况 92
3.6 TCP 初期的代表性拥塞控制算法
Tahoe、Reno、NewReno 和Vegas 93
拥塞控制算法的变化 93
Tahoe 94
Reno 96
NewReno 97
Vegas 99
3.7 小结 101
第4章
程序员必学的拥塞控制算法
逐渐增长的通信数据量与网络的变化 103
4.1 拥塞控制的基本理论
目的与设计,计算公式的基础知识 104
拥塞控制的目的 104
拥塞控制的基本设计 105
拥塞控制中的有限状态机 107
拥塞控制算法示例 109
4.2 拥塞控制算法
通过理论 模拟加深理解 111
本书介绍的拥塞控制算法 111
NewReno 112
Vegas 115
Westwood 117
HighSpeed 119
Scalable 121
Veno 123
BIC 125
H-TCP 127
Hybla 129
Illinois 130
YeAH 133
4.3 协议分析器Wireshark 实践入门
拥塞控制算法的观察A 135
什么是Wireshark 135
Wireshark 的环境搭建 135
使用Wireshark 进行TCP 首部分析 138
通过Wireshark 观察拥塞控制算法 141
4.4 加深理解:网络模拟器ns-3 入门
拥塞控制算法的观察B 149
ns-3 的基本情况 149
搭建ns-3 环境 150
基于ns-3 的网络模拟的基础知识 151
脚本文件chapter4-base.cc 153
使用Python 运行模拟器并进行分析和可视化 155
4.5 小结 163
第5章
CUBIC算法
通过三次函数简单地解决问题 167
5.1 网络高速化与TCP拥塞控制
长肥管道带来的变化 .168
Reno和NewReno 168
快速恢复 168
网络的高速化与长肥管道 169
端到端之间的三大时延 170
长肥管道下NewReno的新问题 171
5.2 基于丢包的拥塞控制
以丢包情况为指标的一种历史悠久的方法 173
基于丢包的拥塞控制算法的基本情况 174
AIMD 控制 174
[实测]NewReno的拥塞窗口大小的变化情况 176
HighSpeed与Scalable 179
亲和性 183
RTT公平性 184
5.3 BIC
以宽带、高时延环境为前提的算法 186
BIC是什么 186
增大拥塞窗口大小的两个阶段 187
BIC的拥塞窗口大小的变化情况 188
BIC的问题 190
5.4 CUBIC的机制
使用三次函数大幅简化拥塞窗口大小控制算法 190
CUBIC的基本情况 190
窗口控制算法的关键点 191
CUBIC 的拥塞窗口大小的变化情况 192
模拟结果中展现出来的高亲和性 194
模拟结果中展现出来的RTT 公平性 194
窄带低时延环境下的适应性 195
CUBIC的问题 197
5.5 使用伪代码学习CUBIC算法
主要的行为与处理过程 198
初始化 198
收到ACK时的行为 199
丢包时的行为 199
超时时的行为 200
主要的函数与处理 200
5.6 小结 202
第6章
BBR算法
检测吞吐量与RTT的值,调节数据发送量 205
6.1 缓冲区增大与缓冲区时延增大
存储成本下降的影响 206
网络设备的缓冲区增大 206
缓冲区膨胀 207
基于丢包的拥塞控制与缓冲区膨胀的关系 208
缓冲区增大给CUBIC 带来的影响 210
6.2 基于延迟的拥塞控制
以RTT 为指标的算法的基本情况和Vegas示例 212
3 种拥塞控制算法和如何结合环境选择算法 212
基于延迟的拥塞控制的基本设计思路 213
Vegas的拥塞窗口大小的变化情况 214
过去的基于延迟控制的问题 215
6.3 BBR的机制
把控数据发送量与RTT之间的关系,实现最大吞吐量 217
BBR的基本思路 217
BBR的拥塞窗口大小控制机制 218
RTprop的估算 219
BtlBw的估算 220
6.4 使用伪代码学习BBR算法
收到ACK时和发送数据时 221
收到ACK时 222
发送数据时 222
6.5 BBR的流程
模拟实验中的各种流程 223
只有BBR网络流时的表现 223
当多个BBR网络流同时存在时 225
与CUBIC的共存 227
长肥管道下的表现 229
6.6 小结 231
第7章
TCP前沿的研究动向
应用程序和通信环境一旦变化,TCP也会变化 233
7.1 TCP 周边环境的变化
3个视角:通信方式、通信设备和连接目标 234
TCP迄今为止的发展情况 234
观察通信环境变化的3 个视角 235
通信方式的变化 236
通信设备的多样化 238
连接目标的变化 239
小结 241
7.2 5G(第5代移动通信)
移动通信的大容量化、多设备支持、高可靠性与低时延 241
[背景] 5G的应用场景与走向实用的规划 242
[问题] 如何应对严苛的需求条件 244
[TCP相关动向A] 毫米波段的处理 245
[TCP相关动向B] 多路径TCP 246
[TCP相关动向C] 高清流媒体 248
7.3 物联网
通过互联网控制各种各样的设备 249
[背景] 多样的设备和通信方式 249
[问题] 处理能力和通信环境上的制约 252
[TCP相关动向] 适配物联网 253
7.4 数据中心
大规模化与各种需求条件并存 254
[背景] 云服务的普及和数据中心的大规模化 254
[问题] 针对缓冲区的互斥的需求条件 256
[TCP相关动向] 面向数据中心的拥塞控制 257
7.5 自动驾驶
追求高可靠性与低时延、大容量的通信性能 259
[背景] 以普及自动驾驶为目的的技术 259
[问题] 高速移动时的高可靠性通信 262
[与TCP的关系] 关于确保可靠性 263
7.6 小结 264