大数据时代下的通信需求:TCP传输原理与优化
作者:徐永士,王新华 编著
出版时间:2015年版
内容简介
本书内容分为两部分。上半部分包含第1~5章,偏重介绍相关的算法分类、理论,其中第1章介绍了背景知识及数据链路层,第2章整体介绍了TCP传输的原理与拥塞控制,第3、4章介绍了相关算法分类及主要算法,第5章介绍了相关理论模型。下半部分包含第6~9章,偏重介绍Linux系统上的具体实现及测量模拟技术,其中第6章从数据流动的角度逐层介绍了Linux系统如何实现网络协议TCP/IP协议族的各层,第7章具体介绍了如何书写一个拥塞控制模块及Linux系统自带的主要算法,第8章介绍了网络模拟器NS2及其他性能测量工具,第9章介绍了移动网络和软件定义网络SDN。本书侧重Linux系统上的TCP网络协议实现,但不限于Linux系统,其他操作系统及智能终端系统也可以参考。
目录
第1章 概述 (1)
1.1 快速发展的互联网 (1)
1.1.1 互联网的发展规模 (1)
1.1.2 争相建设的下一代互联网 (2)
1.1.3 永无止境的带宽需求 (3)
1.1.4 网络传输还需要加速 (3)
1.2 网络互联的基础——网络协议 (4)
1.2.1 OSI参考模型与TCP/IP参考模型之争 (4)
1.2.2 OSI模型 (5)
1.2.3 “阿帕网”(ARPANET)与TCP/IP协议族 (9)
1.2.4 TCP/IP参考模型与协议族组成 (10)
1.2.5 数据链路层 (15)
1.3 大数据时代带来数据传输的巨大需求 (23)
1.3.1 大数据时代的到来 (23)
1.3.2 “**”的广域网加速技术 (23)
1.3.3 技术选择 (25)
第2章 TCP传输的原理与拥塞控制 (26)
2.1 TCP传输原理 (26)
2.1.1 OSI参考模型和TCP/IP参考模型 (26)
2.1.2 TCP协议简介 (27)
2.1.3 TCP数据报的传输 (27)
2.2 传输控制协议TCP有限状态机模型 (31)
2.2.1 客户端流程图 (33)
2.2.2 服务器端流程图 (34)
2.3 拥塞控制与AIMD (34)
2.3.1 拥塞的定义与发生的原因 (34)
2.3.2 拥塞控制原理AIMD (35)
2.3.3 现阶段的TCP拥塞 (38)
2.4 糊涂窗口综合症 (39)
2.4.1 发送端产生的症状 (40)
2.4.2 接收端产生的症状 (40)
2.5 其他杂项问题 (41)
第3章 主要的TCP拥塞控制算法 (44)
3.1 概述 (44)
3.1.1 从“**次”拥塞说算法改进 (44)
3.1.2 “宏观”的解决方案——传输加速 (45)
3.1.3 新的“应用场景” (45)
3.1.4 拥塞成因概述 (46)
3.1.5 拥塞算法设计的基本要求 (47)
3.2 基本概念与术语 (48)
3.3 TCP拥塞控制算法的演进 (49)
3.3.1 早期的TCP实现 (49)
3.3.2 TCP Tahoe (49)
3.3.3 TCP Reno (50)
3.3.4 TCP NewReno (51)
3.3.5 TCP SACK (51)
3.3.6 TCP Vegas (52)
3.3.7 TCP Veno (52)
3.3.8 TCP BIC (54)
3.3.9 TCP CUBIC (54)
3.3.10 FAST TCP (54)
3.3.11 Compound TCP (55)
3.4 讨论 (55)
第4章 TCP传输加速与主要解决方案 (57)
4.1 TCP传输加速概述 (57)
4.2 解决方案分类 (57)
4.2.1 以部署方式分类 (57)
4.2.2 以实施位置分类 (58)
4.2.3 以拥塞反馈信号分类 (60)
4.2.4 基于应用层的改进方案 (61)
4.2.5 典型的隐式拥塞反馈方案 (61)
4.2.6 典型的显式拥塞反馈方案 (62)
4.2.7 基于带宽测量的改进 (64)
4.3 主要的拥塞控制算法 (65)
4.3.1 Scalable TCP (65)
4.3.2 High Speed TCP (65)
4.3.3 TCP Vegas (67)
4.3.4 TCP BIC 与TCPCUBIC (69)
4.3.5 小结 (70)
第5章 TCP传输性能分析与模型 (72)
5.1 端到端的可靠传输 (72)
5.1.1 差错控制过程 (72)
5.1.2 流量控制机制 (72)
5.2 传输时延 (73)
5.2.1 测量方法 (73)
5.2.2 RTT测量的程序实现 (77)
5.3 分析模型 (84)
5.3.1 概述与进展 (84)
5.3.2 分类 (85)
5.3.3 Jacobson管道模型 (86)
5.3.4 TCP吞吐量分析模型 (87)
5.3.5 流体流模型 (89)
5.3.6 其他场景模型 (89)
5.3.7 传输速率上限 (90)
5.3.8 仿真实验 (90)
5.4 性能分析 (91)
5.4.1 链路利用率 (91)
5.4.2 公平性 (91)
5.5 Padhye吞吐量模型简介 (92)
5.5.1 发送窗口表达式 (92)
5.5.2 吞吐率 (93)
5.5.3 E [W]和E [X]的推导 (93)
5.5.4 E [W]和E [Y]的推导 (94)
5.5.5 丢包概率p (95)
5.5.6 E [A]的推导 (95)
5.5.7 吞吐率表达式 (96)
第6章 Linux网络协议栈 (97)
6.1 网络协议栈与层次结构 (97)
6.1.1 Linux网络协议栈特点 (97)
6.1.2 标准TCP/IP协议与Linux网络协议栈具体设计的对比 (98)
6.2 基本数据结构 (99)
6.2.1 数据包结构 (100)
6.2.2 基本数据结构 (100)
6.3 协议栈的初始化 (117)
6.3.1 sock_init函数 (118)
6.3.2 net_dev_init函数 (121)
6.3.3 inet_init函数 (122)
6.4 Linux系统网络设备驱动程序 (128)
6.4.1 网络驱动程序的结构 (128)
6.4.2 数据包发送 (128)
6.4.3 数据包接收 (129)
6.5 网络协议层 (131)
6.5.1 数据接收 (131)
6.5.2 数据发送 (133)
6.6 传输层——TCP协议处理 (135)
6.6.1 TCP协议的数据接收 (135)
6.6.2 TCP协议的数据发送 (138)
6.6.3 拥塞控制的事件处理 (139)
第7章 拥塞控制模块编程实践 (142)
7.1 拥塞控制模块的调用 (142)
7.1.1 模块的初始化 (142)
7.1.2 主要窗口的计算 (144)
7.1.3 拥塞状态机 (144)
7.1.4 状态处理函数 (147)
7.1.5 “成员函数”的调用关系 (148)
7.2 模块编程基础 (149)
7.2.1 基本数据结构 (149)
7.2.2 内核函数介绍 (151)
7.2.3 编译 (154)
7.3 主要算法介绍 (154)
7.3.1 BIC算法 (154)
7.3.2 CUBIC算法 (160)
7.3.3 Vegas算法 (168)
7.3.4 High Speed TCP算法 (173)
7.3.5 H-TCP算法 (175)
7.3.6 Scalable TCP算法 (182)
7.3.7 Westwood算法 (183)
7.3.8 Reno算法 (189)
7.3.9 代码中常见的修饰符 (192)
7.4 用户态获取当前拥塞窗口值编程示例 (194)
7.5 实践举例 (195)
第8章 仿真与测量 (196)
8.1 网络仿真 (196)
8.1.1 软件仿真 (196)
8.1.2 ns-2简介 (197)
8.1.3 OPNET简介 (223)
8.1.4 硬件模拟 (224)
8.2 性能测量方法 (225)
8.2.1 网络带宽测量 (226)
8.2.2 网络延迟测量 (234)
第9章 新的数据传输场景——研究热点 (235)
9.1 无线传输新场景——移动网络 (235)
9.1.1 移动智能终端逐步普及 (235)
9.1.2 需求催生的“新成员” (236)
9.1.3 移动网络的特性 (237)
9.1.4 移动设备操作平台 (243)
9.1.5 主要的研究进展 (245)
9.2 数据中心内部传输遇到的新问题——TCP Incast (247)
9.2.1 数据中心的网络架构 (247)
9.2.2 MapReduce新业务与发展 (248)
9.2.3 TCP Incast的发生 (249)
9.2.4 国内外研究现状 (251)
9.2.5 主要的解决方案介绍 (252)
9.3 网络发展的新趋势——软件定义网络SDN与大二层结构 (254)
9.3.1 软件定义网络 (254)
9.3.2 大二层结构 (254)
9.3.3 虚拟机迁移与数据中心二层网络的变化 (255)
9.3.4 大二层网络需要有多大 (256)
参考文献 (258)