最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

深入理解Linux網(wǎng)絡(luò): 修煉底層內(nèi)功,掌握高性能原理

2023-03-16 23:04 作者:不想說(shuō)話隨便說(shuō)點(diǎn)吧  | 我要投稿

鏈接:https://pan.baidu.com/s/1xQ6K3rfTOO_J5rkpXKmOxQ?pwd=zv13?

提取碼:zv13

編輯推薦

適讀人群 :想通過(guò)提升自己的網(wǎng)絡(luò)內(nèi)功而進(jìn)大廠的讀者。 不滿足于只學(xué)習(xí)網(wǎng)絡(luò)協(xié)議,也想理解它是怎么實(shí)現(xiàn)的讀者。 雖有幾年開發(fā)工作經(jīng)驗(yàn),但對(duì)網(wǎng)絡(luò)開銷把握不準(zhǔn)的開發(fā)人員。 想做網(wǎng)絡(luò)性能優(yōu)化,但沒(méi)有成體系的理論指導(dǎo)的讀者。 維護(hù)各種高并發(fā)服務(wù)器的運(yùn)維人員。


榮獲CSDN“2022中國(guó)開發(fā)者影響力年度榜單年度IT圖書”

200幅底層原理全彩插圖,
48個(gè)高頻工程實(shí)踐問(wèn)題解決方案,
24條打造高性能應(yīng)用的硬核建議。
Java、C++、PHP實(shí)驗(yàn)代碼,助你——

清掃性能誤區(qū),探尋底層原理,應(yīng)對(duì)校招、社招、晉升考核,用底層內(nèi)功對(duì)抗中年焦慮。
時(shí)髦的東西終究過(guò)時(shí),但扎實(shí)的內(nèi)功將會(huì)伴隨你一生。只有具備了深厚的內(nèi)功底蘊(yùn),才能在發(fā)展的道路上走得更穩(wěn)、走得更遠(yuǎn)。
騰訊技術(shù)副總監(jiān)張勇、小米科技技術(shù)總監(jiān)黃學(xué)青等技術(shù)專家齊贊。


內(nèi)容簡(jiǎn)介

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


作者簡(jiǎn)介

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



精彩書評(píng)

這本書的出版令人欣喜。作者張彥飛能夠坦露心扉,從IT大廠面試聊到中年焦慮,技術(shù)上從內(nèi)核的工作原理聊起,將內(nèi)核如何接收網(wǎng)絡(luò)包、如何與用戶進(jìn)程協(xié)作講解得深入淺出,從而帶著讀者深入理解網(wǎng)絡(luò)IO、TCP連接建立過(guò)程,最后再與讀者一起總結(jié)出系統(tǒng)性能優(yōu)化的抓手與方案。閱讀他的作品是一種享受,不但讓我收獲很多底層技術(shù)細(xì)節(jié)和原理,還能夠激發(fā)我進(jìn)一步思考。分享給所有后端開發(fā)工程師閱讀,與作者一起完成內(nèi)功修煉。

騰訊技術(shù)副總監(jiān),張勇


本書從實(shí)際工作遇到的問(wèn)題出發(fā),以庖丁解牛式的手法,結(jié)合內(nèi)核源碼以簡(jiǎn)潔高效的話術(shù)把網(wǎng)絡(luò)原理講深講透,是非常少見的網(wǎng)絡(luò)進(jìn)階學(xué)習(xí)圖書。如果說(shuō)Stack Overflow、GitHub是用于實(shí)踐的“武當(dāng)長(zhǎng)拳”,那么本書屬于提升內(nèi)力的“小無(wú)相功”,前者能夠找到可復(fù)用或可參考的業(yè)務(wù)邏輯實(shí)現(xiàn),后者則在于提升“內(nèi)力”。

小米科技技術(shù)總監(jiān),黃學(xué)青


看彥飛的這部作品,滿足你對(duì)Linux內(nèi)核網(wǎng)絡(luò)模塊運(yùn)行原理的好奇心,讓你達(dá)到知其然也知其所以然的水平。通過(guò)深度掌握底層知識(shí),為你開發(fā)高性能后端應(yīng)用打下堅(jiān)實(shí)基礎(chǔ)。

C++ Workflow開源項(xiàng)目作者,謝翰


這是目前市面上少有的、深入底層回答實(shí)際工作中相關(guān)問(wèn)題的書。飛哥通過(guò)日常工作中的問(wèn)題,帶著你一步步深入其中的原理,不僅讓你知其然,而且知其所以然。要提升自己,內(nèi)功的修煉并不可少,飛哥的這本書給了你一個(gè)很好的起點(diǎn),相信通過(guò)修煉自己的底層技術(shù)能力,你的技術(shù)能力會(huì)突飛猛進(jìn)。

Go語(yǔ)言中文網(wǎng)創(chuàng)始人,polarisxu



目錄

第1章 緒論 / 1

1.1 我在工作中的困惑 / 2

1.1.1 過(guò)多的TIME_WAIT / 2

1.1.2 長(zhǎng)連接開銷 / 2

1.1.3 CPU被消耗光了 / 3

1.1.4 為什么不同的語(yǔ)言網(wǎng)絡(luò)性能差別巨大 / 4

1.1.5 訪問(wèn)127.0.0.1過(guò)網(wǎng)卡嗎 / 4

1.1.6 軟中斷和硬中斷 / 5

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

1.1.8 DPDK / 5

1.2 本書內(nèi)容結(jié)構(gòu) / 6

1.3 一些約定 / 7

1.4 一些術(shù)語(yǔ) / 8


第2章 內(nèi)核是如何接收網(wǎng)絡(luò)包的 / 9

2.1 相關(guān)實(shí)際問(wèn)題 / 10

2.2 數(shù)據(jù)是如何從網(wǎng)卡到協(xié)議棧的 / 11

2.2.1 Linux網(wǎng)絡(luò)收包總覽 / 12

2.2.2 Linux啟動(dòng) / 13

2.2.3 迎接數(shù)據(jù)的到來(lái) / 23

2.2.4 收包小結(jié) / 33

2.3 本章總結(jié) / 34


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

3.1 相關(guān)實(shí)際問(wèn)題 / 42

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

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

3.3.1 等待接收消息 / 47

3.3.2 軟中斷模塊 / 52

3.3.3 同步阻塞總結(jié) / 57

3.4 內(nèi)核和用戶進(jìn)程協(xié)作之epoll / 59

3.4.1 epoll內(nèi)核對(duì)象的創(chuàng)建 / 60

3.4.2 為epoll添加socket / 62

3.4.3 epoll_wait之等待接收 / 68

3.4.4 數(shù)據(jù)來(lái)了 / 71

3.4.5 小結(jié) / 79

3.5 本章總結(jié) / 80


第4章 內(nèi)核是如何發(fā)送網(wǎng)絡(luò)包的 / 84

4.1 相關(guān)實(shí)際問(wèn)題 / 85

4.2 網(wǎng)絡(luò)包發(fā)送過(guò)程總覽 / 86

4.3 網(wǎng)卡啟動(dòng)準(zhǔn)備 / 90

4.4 數(shù)據(jù)從用戶進(jìn)程到網(wǎng)卡的詳細(xì)過(guò)程 / 92

4.4.1 send系統(tǒng)調(diào)用實(shí)現(xiàn) / 92

4.4.2 傳輸層處理 / 94

4.4.3 網(wǎng)絡(luò)層發(fā)送處理 / 99

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

4.4.5 網(wǎng)絡(luò)設(shè)備子系統(tǒng) / 105

4.4.6 軟中斷調(diào)度 / 109

4.4.7 igb網(wǎng)卡驅(qū)動(dòng)發(fā)送 / 111

4.5 RingBuffer內(nèi)存回收 / 114

4.6 本章總結(jié) / 115


第5章 深度理解本機(jī)網(wǎng)絡(luò)IO / 119

5.1 相關(guān)實(shí)際問(wèn)題 / 120

5.2 跨機(jī)網(wǎng)絡(luò)通信過(guò)程 / 120

5.2.1 跨機(jī)數(shù)據(jù)發(fā)送 / 120

5.2.2 跨機(jī)數(shù)據(jù)接收 / 125

5.2.3 跨機(jī)網(wǎng)絡(luò)通信匯總 / 127

5.3 本機(jī)發(fā)送過(guò)程 / 127

5.3.1 網(wǎng)絡(luò)層路由 / 127

5.3.2 本機(jī)IP路由 / 130

5.3.3 網(wǎng)絡(luò)設(shè)備子系統(tǒng) / 131

5.3.4 “驅(qū)動(dòng)”程序 / 133

5.4 本機(jī)接收過(guò)程 / 135

5.5 本章總結(jié) / 137


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

6.1 相關(guān)實(shí)際問(wèn)題 / 140

6.2 深入理解listen / 141

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

6.2.2 協(xié)議棧listen / 142

6.2.3 接收隊(duì)列定義 / 143

6.2.4 接收隊(duì)列申請(qǐng)和初始化 / 145

6.2.5 半連接隊(duì)列長(zhǎng)度計(jì)算 / 146

6.2.6 listen過(guò)程小結(jié) / 148

6.3 深入理解connect / 148

6.3.1 connect調(diào)用鏈展開 / 149

6.3.2 選擇可用端口 / 151

6.3.3 端口被使用過(guò)怎么辦 / 153

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

6.3.5 connect小結(jié) / 156

6.4 完整TCP連接建立過(guò)程 / 157

6.4.1 客戶端connect / 159

6.4.2 服務(wù)端響應(yīng)SYN / 160

6.4.3 客戶端響應(yīng)SYNACK / 162

6.4.4 服務(wù)端響應(yīng)ACK / 164

6.4.5 服務(wù)端accept / 167

6.4.6 連接建立過(guò)程總結(jié) / 167

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

6.5.1 connect系統(tǒng)調(diào)用耗時(shí)失控 / 169

6.5.2 第一次握手丟包 / 171

6.5.3 第三次握手丟包 / 176

6.5.4 握手異??偨Y(jié) / 178

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

6.6.1 全連接隊(duì)列溢出判斷 / 179

6.6.2 半連接隊(duì)列溢出判斷 / 181

6.6.3 小結(jié) / 183

6.7 本章總結(jié) / 183


第7章 一條TCP連接消耗多大內(nèi)存 / 187

7.1 相關(guān)實(shí)際問(wèn)題 / 188

7.2 Linux內(nèi)核如何管理內(nèi)存 / 188

7.2.1 node劃分 / 189

7.2.2 zone劃分 / 191

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

7.2.4 slab分配器 / 194

7.2.5 小結(jié) / 197

7.3 TCP連接相關(guān)內(nèi)核對(duì)象 / 198

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

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

7.4 實(shí)測(cè)TCP內(nèi)核對(duì)象開銷 / 207

7.4.1 實(shí)驗(yàn)準(zhǔn)備 / 207

7.4.2 實(shí)驗(yàn)開始 / 208

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

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

7.4.5 收發(fā)緩存區(qū)簡(jiǎn)單測(cè)試 / 214

7.4.6 實(shí)驗(yàn)結(jié)果小結(jié) / 215

7.5 本章總結(jié) / 216


第8章 一臺(tái)機(jī)器最多能支持多少條TCP連接 / 218

8.1 相關(guān)實(shí)際問(wèn)題 / 219

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

8.2.1 找到源碼入口 / 220

8.2.2 尋找進(jìn)程級(jí)限制nofile和fs.nr_open / 221

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

8.2.4 小結(jié) / 224

8.3 一臺(tái)服務(wù)端機(jī)器最多可以支撐多少條TCP連接 / 225

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

8.3.2 服務(wù)器百萬(wàn)連接達(dá)成記 / 228

8.3.3 小結(jié) / 232

8.4 一臺(tái)客戶端機(jī)器最多只能發(fā)起65 535條連接嗎 / 232

8.4.1 65 535的束縛 / 232

8.4.2 多IP增加連接數(shù) / 234

8.4.3 端口復(fù)用增加連接數(shù) / 236

8.4.4 小結(jié) / 243

8.5 單機(jī)百萬(wàn)并發(fā)連接的動(dòng)手實(shí)驗(yàn) / 243

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

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

8.5.3 最后多談一點(diǎn) / 250

8.6 本章總結(jié) / 251


第9章 網(wǎng)絡(luò)性能優(yōu)化建議 / 253

9.1 網(wǎng)絡(luò)請(qǐng)求優(yōu)化 / 254

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

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

9.4 內(nèi)核與進(jìn)程協(xié)作優(yōu)化 / 268

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


第10章 容器網(wǎng)絡(luò)虛擬化 / 272

10.1 相關(guān)實(shí)際問(wèn)題 / 273

10.2 veth設(shè)備對(duì) / 274

10.2.1 veth如何使用 / 274

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

10.2.3 veth網(wǎng)絡(luò)通信過(guò)程 / 278

10.2.4 小結(jié) / 281

10.3 網(wǎng)絡(luò)命名空間 / 281

10.3.1 如何使用網(wǎng)絡(luò)命名空間 / 282

10.3.2 命名空間相關(guān)的定義 / 284

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

10.3.4 網(wǎng)絡(luò)收發(fā)如何使用網(wǎng)絡(luò)命名空間 / 295

10.3.5 結(jié)論 / 296

10.4 虛擬交換機(jī)Bridge / 297

10.4.1 如何使用Bridge / 298

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

10.4.3 添加設(shè)備 / 303

10.4.4 數(shù)據(jù)包處理過(guò)程 / 305

10.4.5 小結(jié) / 308

10.5 外部網(wǎng)絡(luò)通信 / 310

10.5.1 路由和NAT / 311

10.5.2 實(shí)現(xiàn)外部網(wǎng)絡(luò)通信 / 313

10.5.3 小結(jié) / 318

10.6 本章總結(jié) / 319



查看全部↓

前言/序言

從大廠的面試說(shuō)起


互聯(lián)網(wǎng)大廠是當(dāng)今很多開發(fā)人員,尤其是應(yīng)屆畢業(yè)生們所向往的公司。但大家應(yīng)該都聽過(guò)關(guān)于大廠面試候選人的一句調(diào)侃的話,“面試造火箭,工作擰螺絲”。這雖然有一點(diǎn)兒夸張的成分,不過(guò)也確實(shí)描述得比較形象。在面試中,尤其是頂級(jí)互聯(lián)網(wǎng)大廠的面試,對(duì)技術(shù)的考查往往都很深。但是到了工作中,可能確實(shí)又需要花不少時(shí)間在寫各種各樣的重復(fù) CRUD 上。

那為啥會(huì)出現(xiàn)這種情況,是大廠閑得沒(méi)事非得為難候選人嗎?其實(shí)不是,這是因?yàn)樵鷮?shí)的底層功力確實(shí)對(duì)大廠來(lái)說(shuō)很重要。

互聯(lián)網(wǎng)大廠區(qū)別于小公司的一個(gè)業(yè)務(wù)特點(diǎn)就是海量請(qǐng)求,隨便一個(gè)業(yè)界第二梯隊(duì)的App,每天的后端接口請(qǐng)求數(shù)過(guò)億很常見,更不用提微信、淘寶等頭部應(yīng)用了。在這種量級(jí)的用戶請(qǐng)求下,業(yè)務(wù)能7×24小時(shí)穩(wěn)定地提供服務(wù)就非常重要了。哪怕服務(wù)故障出現(xiàn)十分鐘,對(duì)業(yè)務(wù)造成的損失可能都是不容小覷的。

所以在大廠中,你寫出來(lái)的程序不是能跑起來(lái)就行了,是必須能夠穩(wěn)定運(yùn)行。程序在運(yùn)行期間可能會(huì)無(wú)法避免地遭遇各種線上問(wèn)題。應(yīng)用都是跑在硬件、操作系統(tǒng)之上的,因此線上的很多問(wèn)題都和底層相關(guān)。如果遇到線上問(wèn)題,你是否有能力快速排查和處理?例如有的時(shí)候線上訪問(wèn)超時(shí)是因?yàn)門CP的全連接隊(duì)列滿導(dǎo)致的。如果你對(duì)這類底層的知識(shí)了解得不夠,則根本無(wú)法應(yīng)對(duì)。


深入理解Linux網(wǎng)絡(luò): 修煉底層內(nèi)功,掌握高性能原理的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
榆社县| 乌拉特后旗| 邛崃市| 新田县| 蓬安县| 斗六市| 淮安市| 抚松县| 通榆县| 绥芬河市| 宣城市| 黄石市| 香港 | 社旗县| 桐乡市| 二手房| 建瓯市| 东兴市| 恩施市| 神农架林区| 碌曲县| 龙陵县| 南雄市| 商丘市| 彭山县| 辉县市| 临沭县| 五河县| 汽车| 赞皇县| 亚东县| 凌云县| 莲花县| 方山县| 台北县| 灌阳县| 铜鼓县| 永州市| 南乐县| 新竹市| 德庆县|