內容簡介
本書以圖配文,通俗易懂地講解了長期不會過時的TCP技術。其中,第1章至第3章講解了TCP的基礎知識,詳細梳理了TCP的發展歷程,並以豐富的圖例展示了TCP數據傳輸的基本思路和過程;第4章至第6章著重介紹了TCP中極為重要的擁塞控制技術,通過圖表、公式和模擬實驗講解了TCP擁塞控制的運行機制和熱門算法(CUBIC、BBR等);第7章講解了TCP前沿的研究動向和今後的發展方向,涉及5G、物聯網、數據中心、自動駕駛等內容。
本書理論與實踐相結合,在詳細講解TCP原理後,還引領讀者搭建模擬環境,使用Wireshark和ns-3等工具模擬TCP的運行機制,觀察擁塞控制算法的執行,並輔以偽代碼,幫助讀者全面理解TCP技術。
作者簡介
安永遼真(作者)
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