注冊 | 登錄讀書好,好讀書,讀好書!
讀書網-DuShu.com
當前位置: 首頁出版圖書科學技術計算機/網絡操作系統(tǒng)深入理解Linux網絡:修煉底層內功,掌握高性能原理

深入理解Linux網絡:修煉底層內功,掌握高性能原理

深入理解Linux網絡:修煉底層內功,掌握高性能原理

定 價:¥118.00

作 者: 張彥飛 著
出版社: 電子工業(yè)出版社
叢編項:
標 簽: 暫缺

ISBN: 9787121434105 出版時間: 2022-06-01 包裝: 平裝
開本: 16開 頁數: 336 字數:  

內容簡介

  本書通過先拋出一些開發(fā)、運維等技術人員在工作中經常遇見的問題,激發(fā)讀者的思考。從這些問題出發(fā),深入地對網絡底層實現原理進行拆解,帶領讀者看清楚問題的核心,理解其背后的技術本質,提高大家的技術功力。例如網絡包是如何被接收和發(fā)送的?阻塞到底在內部是如何發(fā)生的?epoll的底層工作原理又是啥?TCP連接在底層上是如何支持和實現的?書中對這些內容都有深度的闡述。本書旨在通過帶領讀者修煉底層內功,進而幫助大家深度掌握網絡高性能原理。

作者簡介

  張彥飛,2010年碩士畢業(yè)于西北大學計算機學院,有十多年的大型互聯(lián)網公司項目經驗,目前就職于騰訊。他喜歡對技術進行深度思考,善于挖掘技術點背后的原理。他的技術公眾號“開發(fā)內功修煉”一年便收到五萬多讀者的關注。

圖書目錄

第1章緒論/1

1.1我在工作中的困惑/2

1.1.1過多的TIME_WAIT/2

1.1.2長連接開銷/2

1.1.3CPU被消耗光了/3

1.1.4為什么不同的語言網絡性能差別巨大/4

1.1.5訪問127.0.0.1過網卡嗎/4

1.1.6軟中斷和硬中斷/5

1.1.7零拷貝到底是怎么回事/5

1.1.8DPDK/5

1.2本書內容結構/6

1.3一些約定/7

1.4一些術語/8



第2章內核是如何接收網絡包的/9

2.1相關實際問題/10

2.2數據是如何從網卡到協(xié)議棧的/11

2.2.1Linux網絡收包總覽/12

2.2.2Linux啟動/13

2.2.3迎接數據的到來/23

2.2.4收包小結/33

2.3本章總結/34



第3章內核是如何與用戶進程協(xié)作的/41

3.1相關實際問題/42

3.2socket的直接創(chuàng)建/43

3.3內核和用戶進程協(xié)作之阻塞方式/46

3.3.1等待接收消息/47

3.3.2軟中斷模塊/52

3.3.3同步阻塞總結/57

3.4內核和用戶進程協(xié)作之epoll/59

3.4.1epoll內核對象的創(chuàng)建/60

3.4.2為epoll添加socket/62

3.4.3epoll_wait之等待接收/68

3.4.4數據來了/71

3.4.5小結/79

3.5本章總結/80



第4章內核是如何發(fā)送網絡包的/84

4.1相關實際問題/85

4.2網絡包發(fā)送過程總覽/86

4.3網卡啟動準備/90

4.4數據從用戶進程到網卡的詳細過程/92

4.4.1send系統(tǒng)調用實現/92

4.4.2傳輸層處理/94

4.4.3網絡層發(fā)送處理/99

4.4.4鄰居子系統(tǒng)/103

4.4.5網絡設備子系統(tǒng)/105

4.4.6軟中斷調度/109

4.4.7igb網卡驅動發(fā)送/111

4.5RingBuffer內存回收/114

4.6本章總結/115



第5章深度理解本機網絡IO/119

5.1相關實際問題/120

5.2跨機網絡通信過程/120

5.2.1跨機數據發(fā)送/120

5.2.2跨機數據接收/125

5.2.3跨機網絡通信匯總/127

5.3本機發(fā)送過程/127

5.3.1網絡層路由/127

5.3.2本機IP路由/130

5.3.3網絡設備子系統(tǒng)/131

5.3.4“驅動”程序/133

5.4本機接收過程/135

5.5本章總結/137



第6章深度理解TCP連接建立過程/139

6.1相關實際問題/140

6.2深入理解listen/141

6.2.1listen系統(tǒng)調用/141

6.2.2協(xié)議棧listen/142

6.2.3接收隊列定義/143

6.2.4接收隊列申請和初始化/145

6.2.5半連接隊列長度計算/146

6.2.6listen過程小結/148

6.3深入理解connect/148

6.3.1connect調用鏈展開/149

6.3.2選擇可用端口/151

6.3.3端口被使用過怎么辦/153

6.3.4發(fā)起syn請求/155

6.3.5connect小結/156

6.4完整TCP連接建立過程/157

6.4.1客戶端connect/159

6.4.2服務端響應SYN/160

6.4.3客戶端響應SYNACK/162

6.4.4服務端響應ACK/164

6.4.5服務端accept/167

6.4.6連接建立過程總結/167

6.5異常TCP連接建立情況/169

6.5.1connect系統(tǒng)調用耗時失控/169

6.5.2第一次握手丟包/171

6.5.3第三次握手丟包/176

6.5.4握手異??偨Y/178

6.6如何查看是否有連接隊列溢出發(fā)生/179

6.6.1全連接隊列溢出判斷/179

6.6.2半連接隊列溢出判斷/181

6.6.3小結/183

6.7本章總結/183



第7章一條TCP連接消耗多大內存/187

7.1相關實際問題/188

7.2Linux內核如何管理內存/188

7.2.1node劃分/189

7.2.2zone劃分/191

7.2.3基于伙伴系統(tǒng)管理空閑頁面/192

7.2.4slab分配器/194

7.2.5小結/197

7.3TCP連接相關內核對象/198

7.3.1socket函數直接創(chuàng)建/198

7.3.2服務端socket創(chuàng)建/206

7.4實測TCP內核對象開銷/207

7.4.1實驗準備/207

7.4.2實驗開始/208

7.4.3觀察ESTABLISH狀態(tài)開銷/209

7.4.4觀察非ESTABLISH狀態(tài)開銷/211

7.4.5收發(fā)緩存區(qū)簡單測試/214

7.4.6實驗結果小結/215

7.5本章總結/216



第8章一臺機器最多能支持多少條TCP連接/218

8.1相關實際問題/219

8.2理解Linux最大文件描述符限制/219

8.2.1找到源碼入口/220

8.2.2尋找進程級限制nofile和fs.nr_open/221

8.2.3尋找系統(tǒng)級限制fs.file-max/223

8.2.4小結/224

8.3一臺服務端機器最多可以支撐多少條TCP連接/225

8.3.1一次關于服務端并發(fā)的聊天/225

8.3.2服務器百萬連接達成記/228

8.3.3小結/232

8.4一臺客戶端機器最多只能發(fā)起65535條連接嗎/232

8.4.165535的束縛/232

8.4.2多IP增加連接數/234

8.4.3端口復用增加連接數/236

8.4.4小結/243

8.5單機百萬并發(fā)連接的動手實驗/243

8.5.1方案一,多IP客戶端發(fā)起百萬連接/244

8.5.2方案二,單IP客戶端機器發(fā)起百萬連接/248

8.5.3最后多談一點/250

8.6本章總結/251



第9章網絡性能優(yōu)化建議/253

9.1網絡請求優(yōu)化/254

9.2接收過程優(yōu)化/256

9.3發(fā)送過程優(yōu)化/262

9.4內核與進程協(xié)作優(yōu)化/268

9.5握手揮手過程優(yōu)化/269



第10章容器網絡虛擬化/272

10.1相關實際問題/273

10.2veth設備對/274

10.2.1veth如何使用/274

10.2.2veth底層創(chuàng)建過程/276

10.2.3veth網絡通信過程/278

10.2.4小結/281

10.3網絡命名空間/281

10.3.1如何使用網絡命名空間/282

10.3.2命名空間相關的定義/284

10.3.3網絡命名空間的創(chuàng)建/287

10.3.4網絡收發(fā)如何使用網絡命名空間/295

10.3.5結論/296

10.4虛擬交換機Bridge/297

10.4.1如何使用Bridge/298

10.4.2Bridge是如何創(chuàng)建出來的/301

10.4.3添加設備/303

10.4.4數據包處理過程/305

10.4.5小結/308

10.5外部網絡通信/310

10.5.1路由和NAT/311

10.5.2實現外部網絡通信/313

10.5.3小結/318

10.6本章總結/319

本目錄推薦

掃描二維碼
Copyright ? 讀書網 www.shuitoufair.cn 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網安備 42010302001612號