本書以圖配文,通俗易懂地講解了長期不會過時的TCP技術(shù)。其中,第1章至第3章講解了TCP的基礎(chǔ)知識,詳細(xì)梳理了TCP的發(fā)展歷程,并以豐富的圖例展示了TCP數(shù)據(jù)傳輸?shù)幕舅悸泛瓦^程;第4章至第6章著重介紹了TCP中極為重要的擁塞控制技術(shù),通過圖表、公式和模擬實驗講解了TCP擁塞控制的運(yùn)行機(jī)制和熱門算法(CUBIC、BBR等);第7章講解了TCP前沿的研究動向和今后的發(fā)展方向,涉及5G、物聯(lián)網(wǎng)、數(shù)據(jù)中心、自動駕駛等內(nèi)容。
本書理論與實踐相結(jié)合,在詳細(xì)講解TCP原理后,還引領(lǐng)讀者搭建模擬環(huán)境,使用Wireshark和ns-3等工具模擬TCP的運(yùn)行機(jī)制,觀察擁塞控制算法的執(zhí)行,并輔以偽代碼,幫助讀者全面理解TCP技術(shù)。
1.146張示意圖幫助理解,詳略得當(dāng),為讀懂大部頭開路
2.詳細(xì)梳理TCP發(fā)展歷程,從變遷中窺見設(shè)計思路與本質(zhì)
3.深入TCP核心技術(shù),重點講解擁塞控制算法(CUBIC、BBR等)
4.使用Wireshark和ns-3等搭建模擬環(huán)境,切實體驗算法流程
安永遼真(作者) 2011年畢業(yè)于東京大學(xué)工學(xué)部,2013年碩士畢業(yè)于東京大學(xué)研究生院工學(xué)系,同年入職日本電信電話株式會社,2016年被派往諾基亞貝爾實驗室進(jìn)修。主要從事計算機(jī)網(wǎng)絡(luò)模型的研究。 中山悠(作者) 2008年畢業(yè)于東京大學(xué),入職日本電信電話株式會社,2018年博士畢業(yè)于東京大學(xué)電子信息專業(yè),目前在東京農(nóng)工大學(xué)擔(dān)任副教授,研究移動計算、低延遲網(wǎng)絡(luò)和物聯(lián)網(wǎng)等。 丸田一輝(作者) 2008年畢業(yè)于九州大學(xué),入職日本電信電話株式會社,2016年博士畢業(yè)于九州大學(xué)信息智能工學(xué)專業(yè),2017年3月成為千葉大學(xué)助教,研究無線網(wǎng)絡(luò)中的抗干擾技術(shù)。曾獲得日本電子信息通信學(xué)會(IEICE)論文獎、日本無線電通信系統(tǒng)(RCS)研究會最優(yōu)秀貢獻(xiàn)獎等。 尹修遠(yuǎn)(譯者) 畢業(yè)于華中科技大學(xué),現(xiàn)從事客戶端開發(fā)工作。曾任職騰訊游戲平臺,從事網(wǎng)絡(luò)加速相關(guān)技術(shù)研發(fā),對TCP/IP等網(wǎng)絡(luò)技術(shù)有自己獨到的見解。
第 1章
TCP入門
確保傳輸可靠性 1
1.1 通信與協(xié)議
OSI參考模型、TCP/IP和RFC 2
OSI參考模型 2
TCP/IP 10
分層模型下的數(shù)據(jù)格式 12
協(xié)議分層結(jié)構(gòu)下的通信過程 12
1.2 傳輸層與傳輸可靠性
將數(shù)據(jù)無亂序、無丟失地發(fā)送給接收方 15
傳輸可靠性 15
網(wǎng)絡(luò)擁塞 15
通信對網(wǎng)絡(luò)的要求 16
傳輸層的職責(zé) 17
1.3 UDP的基本情況
無連接的簡單特性 18
UDP的基礎(chǔ)知識 18
單播、多播、廣播 19
適合UDP的應(yīng)用程序 20
1.4 TCP的基本情況
可靠性的確保與實時性 21
TCP的基礎(chǔ)知識 21
TCP與UDP的功能與特點 22
適合TCP 的應(yīng)用程序 23
1.5 TCP 的基本功能
重傳、順序控制和擁塞控制 23
連接管理 24
序列號 24
重傳控制 25
順序控制 26
端口號 27
流量控制 28
擁塞控制與擁塞控制算法 29
無線通信與TCP 30
1.6 面向特定用途的協(xié)議
RUDP、W-TCP、SCTP 和DCCP 32
RUDP 32
W-TCP 33
SCTP 36
DCCP 37
1.7 小結(jié) 37
第 2章
TCP/IP的變遷
隨著互聯(lián)網(wǎng)的普及而不斷進(jìn)化的協(xié)議 39
2.1 TCP 黎明期
1968 年1980 年 40
阿帕網(wǎng)項目啟動(1968 年) 41
UNIX 問世(1969 年) 44
搭建ALOHAnet(1970年) 45
TCP 問世(1974 年) 46
以太網(wǎng)標(biāo)準(zhǔn)公開(1980年) 47
2.2 TCP發(fā)展期
1980年1995年 48
擁塞崩潰問題浮出水面(1980 年) 49
引入Nagle 算法(1984 年) 49
引入擁塞控制算法(1988 年) 51
往互聯(lián)網(wǎng)的遷移與萬維網(wǎng)的誕生(1990 年) 52
2.3 TCP 普及期
1995年2006 年 53
Windows 95發(fā)售(1995年) 54
IPv6投入使用(1999年) 54
無線LAN出現(xiàn)(1999年) 55
各式各樣的互聯(lián)網(wǎng)應(yīng)用服務(wù)(2004年2006年) 56
2.4 TCP擴(kuò)展期
21世紀(jì)00年代后半期 57
智能手機(jī)普及(2007年) 57
云計算出現(xiàn)(2006年) 58
移動網(wǎng)絡(luò)的高速化(2010 年、2015年) 59
物聯(lián)網(wǎng)的大眾化(2015年) 61
2.5 小結(jié) 62
第3章
TCP與數(shù)據(jù)傳輸
實現(xiàn)可靠性與效率的兼顧 65
3.1 TCP 的數(shù)據(jù)格式
數(shù)據(jù)包與首部的格式 66
數(shù)據(jù)包格式 66
TCP 報文段 66
TCP 首部格式 68
UDP 首部格式 72
3.2 連接管理
3次握手 73
建立連接 73
斷開連接 74
端口與連接 75
3.3 流量控制與窗口控制
不宜多也不宜少,適當(dāng)?shù)陌l(fā)送量與接收方緩沖區(qū) 76
流量控制 76
緩存與時延 77
窗口控制 78
復(fù)習(xí):流量控制、窗口控制和擁塞控制 79
3.4 擁塞控制
預(yù)測傳輸量,預(yù)測自律運(yùn)行且內(nèi)部宛如黑盒的網(wǎng)絡(luò)的內(nèi)部情況 80
TCP擁塞控制的基本概念 80
慢啟動 81
擁塞避免 82
快速恢復(fù) 84
3.5 重傳控制
高可靠性傳輸?shù)年P(guān)鍵準(zhǔn)確且高效 86
高可靠性傳輸所需的重傳控制 86
基于重傳計時器的超時控制 87
使用重復(fù)ACK 91
擁塞避免算法與重傳控制綜合影響下的流程及擁塞窗口大小的變化情況 92
3.6 TCP 初期的代表性擁塞控制算法
Tahoe、Reno、NewReno 和Vegas 93
擁塞控制算法的變化 93
Tahoe 94
Reno 96
NewReno 97
Vegas 99
3.7 小結(jié) 101
第4章
程序員必學(xué)的擁塞控制算法
逐漸增長的通信數(shù)據(jù)量與網(wǎng)絡(luò)的變化 103
4.1 擁塞控制的基本理論
目的與設(shè)計,計算公式的基礎(chǔ)知識 104
擁塞控制的目的 104
擁塞控制的基本設(shè)計 105
擁塞控制中的有限狀態(tài)機(jī) 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 協(xié)議分析器Wireshark 實踐入門
擁塞控制算法的觀察A 135
什么是Wireshark 135
Wireshark 的環(huán)境搭建 135
使用Wireshark 進(jìn)行TCP 首部分析 138
通過Wireshark 觀察擁塞控制算法 141
4.4 加深理解:網(wǎng)絡(luò)模擬器ns-3 入門
擁塞控制算法的觀察B 149
ns-3 的基本情況 149
搭建ns-3 環(huán)境 150
基于ns-3 的網(wǎng)絡(luò)模擬的基礎(chǔ)知識 151
腳本文件chapter4-base.cc 153
使用Python 運(yùn)行模擬器并進(jìn)行分析和可視化 155
4.5 小結(jié) 163
第5章
CUBIC算法
通過三次函數(shù)簡單地解決問題 167
5.1 網(wǎng)絡(luò)高速化與TCP擁塞控制
長肥管道帶來的變化 .168
Reno和NewReno 168
快速恢復(fù) 168
網(wǎng)絡(luò)的高速化與長肥管道 169
端到端之間的三大時延 170
長肥管道下NewReno的新問題 171
5.2 基于丟包的擁塞控制
以丟包情況為指標(biāo)的一種歷史悠久的方法 173
基于丟包的擁塞控制算法的基本情況 174
AIMD 控制 174
[實測]NewReno的擁塞窗口大小的變化情況 176
HighSpeed與Scalable 179
親和性 183
RTT公平性 184
5.3 BIC
以寬帶、高時延環(huán)境為前提的算法 186
BIC是什么 186
增大擁塞窗口大小的兩個階段 187
BIC的擁塞窗口大小的變化情況 188
BIC的問題 190
5.4 CUBIC的機(jī)制
使用三次函數(shù)大幅簡化擁塞窗口大小控制算法 190
CUBIC的基本情況 190
窗口控制算法的關(guān)鍵點 191
CUBIC 的擁塞窗口大小的變化情況 192
模擬結(jié)果中展現(xiàn)出來的高親和性 194
模擬結(jié)果中展現(xiàn)出來的RTT 公平性 194
窄帶低時延環(huán)境下的適應(yīng)性 195
CUBIC的問題 197
5.5 使用偽代碼學(xué)習(xí)CUBIC算法
主要的行為與處理過程 198
初始化 198
收到ACK時的行為 199
丟包時的行為 199
超時時的行為 200
主要的函數(shù)與處理 200
5.6 小結(jié) 202
第6章
BBR算法
檢測吞吐量與RTT的值,調(diào)節(jié)數(shù)據(jù)發(fā)送量 205
6.1 緩沖區(qū)增大與緩沖區(qū)時延增大
存儲成本下降的影響 206
網(wǎng)絡(luò)設(shè)備的緩沖區(qū)增大 206
緩沖區(qū)膨脹 207
基于丟包的擁塞控制與緩沖區(qū)膨脹的關(guān)系 208
緩沖區(qū)增大給CUBIC 帶來的影響 210
6.2 基于延遲的擁塞控制
以RTT 為指標(biāo)的算法的基本情況和Vegas示例 212
3 種擁塞控制算法和如何結(jié)合環(huán)境選擇算法 212
基于延遲的擁塞控制的基本設(shè)計思路 213
Vegas的擁塞窗口大小的變化情況 214
過去的基于延遲控制的問題 215
6.3 BBR的機(jī)制
把控數(shù)據(jù)發(fā)送量與RTT之間的關(guān)系,實現(xiàn)最大吞吐量 217
BBR的基本思路 217
BBR的擁塞窗口大小控制機(jī)制 218
RTprop的估算 219
BtlBw的估算 220
6.4 使用偽代碼學(xué)習(xí)BBR算法
收到ACK時和發(fā)送數(shù)據(jù)時 221
收到ACK時 222
發(fā)送數(shù)據(jù)時 222
6.5 BBR的流程
模擬實驗中的各種流程 223
只有BBR網(wǎng)絡(luò)流時的表現(xiàn) 223
當(dāng)多個BBR網(wǎng)絡(luò)流同時存在時 225
與CUBIC的共存 227
長肥管道下的表現(xiàn) 229
6.6 小結(jié) 231
第7章
TCP前沿的研究動向
應(yīng)用程序和通信環(huán)境一旦變化,TCP也會變化 233
7.1 TCP 周邊環(huán)境的變化
3個視角:通信方式、通信設(shè)備和連接目標(biāo) 234
TCP迄今為止的發(fā)展情況 234
觀察通信環(huán)境變化的3 個視角 235
通信方式的變化 236
通信設(shè)備的多樣化 238
連接目標(biāo)的變化 239
小結(jié) 241
7.2 5G(第5代移動通信)
移動通信的大容量化、多設(shè)備支持、高可靠性與低時延 241
[背景] 5G的應(yīng)用場景與走向?qū)嵱玫囊?guī)劃 242
[問題] 如何應(yīng)對嚴(yán)苛的需求條件 244
[TCP相關(guān)動向A] 毫米波段的處理 245
[TCP相關(guān)動向B] 多路徑TCP 246
[TCP相關(guān)動向C] 高清流媒體 248
7.3 物聯(lián)網(wǎng)
通過互聯(lián)網(wǎng)控制各種各樣的設(shè)備 249
[背景] 多樣的設(shè)備和通信方式 249
[問題] 處理能力和通信環(huán)境上的制約 252
[TCP相關(guān)動向] 適配物聯(lián)網(wǎng) 253
7.4 數(shù)據(jù)中心
大規(guī);c各種需求條件并存 254
[背景] 云服務(wù)的普及和數(shù)據(jù)中心的大規(guī)模化 254
[問題] 針對緩沖區(qū)的互斥的需求條件 256
[TCP相關(guān)動向] 面向數(shù)據(jù)中心的擁塞控制 257
7.5 自動駕駛
追求高可靠性與低時延、大容量的通信性能 259
[背景] 以普及自動駕駛為目的的技術(shù) 259
[問題] 高速移動時的高可靠性通信 262
[與TCP的關(guān)系] 關(guān)于確?煽啃 263
7.6 小結(jié) 264