注冊(cè) | 登錄讀書(shū)好,好讀書(shū),讀好書(shū)!
讀書(shū)網(wǎng)-DuShu.com
當(dāng)前位置: 首頁(yè)出版圖書(shū)科學(xué)技術(shù)計(jì)算機(jī)/網(wǎng)絡(luò)操作系統(tǒng)Linux網(wǎng)絡(luò)編程(第3版)

Linux網(wǎng)絡(luò)編程(第3版)

Linux網(wǎng)絡(luò)編程(第3版)

定 價(jià):¥159.00

作 者: 宋敬彬
出版社: 清華大學(xué)出版社
叢編項(xiàng):
標(biāo) 簽: 暫缺

購(gòu)買這本書(shū)可以去


ISBN: 9787302660514 出版時(shí)間: 2024-04-01 包裝: 平裝-膠訂
開(kāi)本: 16開(kāi) 頁(yè)數(shù): 字?jǐn)?shù):  

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

  本書(shū)是獲得大量讀者好評(píng)的“Linux典藏大系”中的《Linux網(wǎng)絡(luò)編程》第3版?!禠inux網(wǎng)絡(luò)編程》第1、2版出版后得到了大量讀者的好評(píng),曾經(jīng)多次印刷并得到了ChinaUnix技術(shù)社區(qū)的推薦。《Linux網(wǎng)絡(luò)編程(第3版)》全面、系統(tǒng)、深入地介紹Linux網(wǎng)絡(luò)編程的相關(guān)知識(shí),涉及面很廣,從編程工具和環(huán)境搭建,到高級(jí)技術(shù)和核心原理,再到項(xiàng)目實(shí)戰(zhàn),幾乎涵蓋Linux網(wǎng)絡(luò)編程的所有重要知識(shí)點(diǎn)?!禠inux網(wǎng)絡(luò)編程(第3版)》提供教學(xué)視頻、思維導(dǎo)圖、教學(xué)PPT和習(xí)題參考答案等超值配套資料,可以幫助讀者高效、直觀地學(xué)習(xí)?!禠inux網(wǎng)絡(luò)編程(第3版)》共20章,分為4篇。第1篇“Linux網(wǎng)絡(luò)開(kāi)發(fā)基礎(chǔ)知識(shí)”,涵蓋Linux操作系統(tǒng)概述、Linux編程環(huán)境、文件系統(tǒng)概述,以及程序、進(jìn)程和線程等相關(guān)知識(shí);第2篇“Linux用戶層網(wǎng)絡(luò)編程”,涵蓋TCP/IP族概述、應(yīng)用層網(wǎng)絡(luò)服務(wù)程序概述、TCP網(wǎng)絡(luò)編程基礎(chǔ)知識(shí)、服務(wù)器和客戶端信息獲取、數(shù)據(jù)的I/O及其復(fù)用、基于UDP接收和發(fā)送數(shù)據(jù)、高級(jí)套接字、套接字選項(xiàng)、原始套接字、服務(wù)器模型、IPv6基礎(chǔ)知識(shí)等;第3篇“Linux內(nèi)核網(wǎng)絡(luò)編程”,涵蓋Linux內(nèi)核層網(wǎng)絡(luò)架構(gòu)和netfilter框架的報(bào)文處理;第4篇“綜合案例”,介紹3個(gè)網(wǎng)絡(luò)編程綜合案例的實(shí)現(xiàn),包括一個(gè)簡(jiǎn)單的Web服務(wù)器SHTTPD的實(shí)現(xiàn)、一個(gè)簡(jiǎn)單的網(wǎng)絡(luò)協(xié)議棧SIP的實(shí)現(xiàn)和一個(gè)簡(jiǎn)單的防火墻SIPFW的實(shí)現(xiàn)。《Linux網(wǎng)絡(luò)編程(第3版)》內(nèi)容豐富,講解深入,適合想全面、系統(tǒng)、深入學(xué)習(xí)Linux網(wǎng)絡(luò)編程的人員閱讀,尤其適合Linux網(wǎng)絡(luò)開(kāi)發(fā)工程技術(shù)人員和基于Linux平臺(tái)的網(wǎng)絡(luò)程序設(shè)計(jì)人員作為參考讀物。

作者簡(jiǎn)介

  宋敬彬,海信集團(tuán)國(guó)家重點(diǎn)實(shí)驗(yàn)室高級(jí)工程師,海信數(shù)字家庭原型系統(tǒng)的主要設(shè)計(jì)和實(shí)現(xiàn)人。有25年的編程經(jīng)驗(yàn),對(duì)Linux內(nèi)核和網(wǎng)絡(luò)協(xié)議棧十分熟悉。長(zhǎng)期從事嵌入式Linux設(shè)備、機(jī)頂盒產(chǎn)品和IGRS設(shè)備互聯(lián)的研究和開(kāi)發(fā)工作。目前主要從事數(shù)字家庭系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)。曾經(jīng)在技術(shù)期刊上發(fā)表了多篇論文,并參與國(guó)家863高性能集群服務(wù)器和電子發(fā)展基金的IPv6等項(xiàng)目。

圖書(shū)目錄

第1篇  Linux網(wǎng)絡(luò)開(kāi)發(fā)基礎(chǔ)知識(shí)
第1章  Linux操作系統(tǒng)概述 2
1.1  Linux的發(fā)展歷史 2
1.1.1  Linux的誕生和發(fā)展 2
1.1.2  Linux名稱的由來(lái) 2
1.2  Linux的發(fā)展要素 3
1.2.1  UNIX操作系統(tǒng) 3
1.2.2  Minix操作系統(tǒng) 3
1.2.3  POSIX標(biāo)準(zhǔn) 3
1.3  Linux與UNIX的異同 3
1.4  常見(jiàn)的Linux發(fā)行版本和內(nèi)核版本的選擇 4
1.4.1  常見(jiàn)的Linux發(fā)行版本 4
1.4.2  內(nèi)核版本的選擇 5
1.5  Linux系統(tǒng)架構(gòu) 5
1.5.1  Linux內(nèi)核的主要模塊 5
1.5.2  Linux的文件結(jié)構(gòu) 7
1.6  GNU通用公共許可證 7
1.6.1  GPL許可證的發(fā)展歷史 8
1.6.2  GPL的自由理念 8
1.6.3  GPL的基本條款 8
1.6.4  關(guān)于GPL許可證的爭(zhēng)議 9
1.7  Linux軟件開(kāi)發(fā)的可借鑒之處 9
1.8  小結(jié) 9
1.9  習(xí)題 10
第2章  Linux編程環(huán)境 11
2.1  編輯器 11
2.1.1  Vim簡(jiǎn)介 11
2.1.2  使用Vim建立文件 12
2.1.3  使用Vim編輯文本 13
2.1.4  Vim的格式設(shè)置 14
2.1.5  Vim的配置文件.vimrc 15
2.1.6  使用其他編輯器 15
2.2  GCC編譯器工具集 16
2.2.1  GCC簡(jiǎn)介 16
2.2.2  編譯程序基礎(chǔ)知識(shí) 16
2.2.3  將單個(gè)文件編譯成可執(zhí)行文件 17
2.2.4  生成目標(biāo)文件 18
2.2.5  多文件編譯 18
2.2.6  預(yù)處理 19
2.2.7  編譯成匯編語(yǔ)言 20
2.2.8  生成并使用靜態(tài)鏈接庫(kù) 21
2.2.9  生成動(dòng)態(tài)鏈接庫(kù) 22
2.2.10  動(dòng)態(tài)加載庫(kù) 24
2.2.11  GCC的常用選項(xiàng) 26
2.2.12  搭建編譯環(huán)境 27
2.3  Makefile文件簡(jiǎn)介 27
2.3.1  多文件工程實(shí)例 27
2.3.2  多文件工程的編譯 29
2.3.3  Makefile的規(guī)則 31
2.3.4  在Makefile中使用變量 33
2.3.5  搜索路徑 36
2.3.6  自動(dòng)推導(dǎo)規(guī)則 37
2.3.7  遞歸調(diào)用 37
2.3.8  Makefile中的函數(shù) 39
2.4  GDB調(diào)試工具 40
2.4.1  編譯可調(diào)試程序 40
2.4.2  使用GDB調(diào)試程序 42
2.4.3  GDB的常用命令 45
2.4.4  其他GDB程序 52
2.5  小結(jié) 52
2.6  習(xí)題 53
第3章  文件系統(tǒng)概述 54
3.1  Linux文件系統(tǒng)簡(jiǎn)介 54
3.1.1  Linux的文件分類 54
3.1.2  創(chuàng)建文件系統(tǒng) 55
3.1.3  掛載文件系統(tǒng) 58
3.1.4  索引節(jié)點(diǎn) 59
3.1.5  普通文件 59
3.1.6  設(shè)備文件 60
3.1.7  虛擬文件系統(tǒng) 61
3.2  文件的通用操作方法 64
3.2.1  文件描述符 64
3.2.2  打開(kāi)文件函數(shù)open() 64
3.2.3  關(guān)閉文件函數(shù)close() 66
3.2.4  讀取文件函數(shù)read() 67
3.2.5  寫(xiě)文件函數(shù)write() 69
3.2.6  文件偏移函數(shù)lseek() 70
3.2.7  獲得文件狀態(tài) 73
3.2.8  文件空間映射函數(shù)mmap()和munmap() 74
3.2.9  文件屬性函數(shù)fcntl() 77
3.2.10  文件輸入/輸出控制函數(shù)ioctl() 81
3.3  socket文件類型 82
3.4  小結(jié) 82
3.5  習(xí)題 82
第4章  程序、進(jìn)程和線程 84
4.1  程序、進(jìn)程和線程的概念 84
4.1.1  程序和進(jìn)程的區(qū)別 84
4.1.2  Linux環(huán)境中的進(jìn)程 84
4.1.3  進(jìn)程和線程 85
4.2  進(jìn)程產(chǎn)生的方式 85
4.2.1  進(jìn)程號(hào) 86
4.2.2  fork()函數(shù) 86
4.2.3  system()函數(shù) 87
4.2.4  exec()族函數(shù) 88
4.2.5  所有用戶態(tài)進(jìn)程的產(chǎn)生進(jìn)程systemd 89
4.3  進(jìn)程間通信和同步 90
4.3.1  半雙工管道 90
4.3.2  命名管道 95
4.3.3  消息隊(duì)列 96
4.3.4  消息隊(duì)列實(shí)例 100
4.3.5  信號(hào)量 103
4.3.6  共享內(nèi)存 107
4.3.7  信號(hào) 110
4.4  Linux線程 111
4.4.1  多線程編程實(shí)例 112
4.4.2  線程創(chuàng)建函數(shù)pthread_create() 113
4.4.3  線程結(jié)束函數(shù)pthread_join()和pthread_exit() 114
4.4.4  線程的屬性 115
4.4.5  線程間的互斥 116
4.4.6  線程的信號(hào)量函數(shù) 118
4.5  小結(jié) 120
4.6  習(xí)題 121
第2篇  Linux用戶層網(wǎng)絡(luò)編程
第5章  TCP/IP族概述 124
5.1  OSI網(wǎng)絡(luò)分層簡(jiǎn)介 124
5.1.1  OSI網(wǎng)絡(luò)分層結(jié)構(gòu) 124
5.1.2  OSI模型的7層結(jié)構(gòu) 125
5.1.3  OSI模型的數(shù)據(jù)傳輸 125
5.2  TCP/IP棧簡(jiǎn)介 126
5.2.1  TCP/IP棧參考模型 126
5.2.2  主機(jī)到網(wǎng)絡(luò)層協(xié)議 128
5.2.3  IP簡(jiǎn)介 129
5.2.4  互聯(lián)網(wǎng)控制報(bào)文協(xié)議 131
5.2.5  傳輸控制協(xié)議 135
5.2.6  用戶數(shù)據(jù)報(bào)文協(xié)議 138
5.2.7  地址解析協(xié)議 140
5.3  IP地址分類與TCP/UDP端口 142
5.3.1  因特網(wǎng)中的IP地址分類 142
5.3.2  子網(wǎng)掩碼 144
5.3.3  IP地址的配置 145
5.3.4  端口 146
5.4  主機(jī)字節(jié)序和網(wǎng)絡(luò)字節(jié)序 146
5.4.1  字節(jié)序的含義 147
5.4.2  網(wǎng)絡(luò)字節(jié)序的轉(zhuǎn)換 147
5.5  小結(jié) 149
5.6  習(xí)題 149
第6章  應(yīng)用層網(wǎng)絡(luò)服務(wù)程序概述 151
6.1  HTTP及其服務(wù) 151
6.1.1  HTTP簡(jiǎn)介 151
6.1.2  HTTP實(shí)現(xiàn)的基本通信過(guò)程 151
6.2  FTP及其服務(wù) 153
6.2.1  FTP簡(jiǎn)介 153
6.2.2  FTP的工作模式 154
6.2.3  FTP的傳輸方式 155
6.2.4  一個(gè)簡(jiǎn)單的FTP下載過(guò)程 155
6.2.5  常用的FTP工具 156
6.3  TELNET協(xié)議及其服務(wù) 156
6.3.1  遠(yuǎn)程登錄簡(jiǎn)介 156
6.3.2  使用TELNET協(xié)議進(jìn)行遠(yuǎn)程登錄 156
6.3.3  TELNET協(xié)議簡(jiǎn)介 157
6.4  NFS協(xié)議及其服務(wù) 158
6.4.1  安裝NFS服務(wù)器和客戶端 158
6.4.2  服務(wù)器端的設(shè)定 158
6.4.3  客戶端操作 158
6.4.4  showmount命令 159
6.5  自定義網(wǎng)絡(luò)服務(wù) 159
6.5.1  xinetd簡(jiǎn)介 159
6.5.2  xinetd配置方式 159
6.5.3  自定義網(wǎng)絡(luò)服務(wù) 161
6.6  小結(jié) 162
6.7  習(xí)題 162
第7章  TCP網(wǎng)絡(luò)編程基礎(chǔ)知識(shí) 163
7.1  套接字編程基礎(chǔ)知識(shí) 163
7.1.1  套接字地址結(jié)構(gòu) 163
7.1.2  用戶層和內(nèi)核的交互過(guò)程 164
7.2  TCP網(wǎng)絡(luò)編程流程 165
7.2.1  TCP網(wǎng)絡(luò)編程架構(gòu) 165
7.2.2  創(chuàng)建網(wǎng)絡(luò)插口函數(shù)socket() 167
7.2.3  綁定一個(gè)地址端口 169
7.2.4  監(jiān)聽(tīng)本地端口函數(shù)listen() 172
7.2.5  接收一個(gè)網(wǎng)絡(luò)請(qǐng)求函數(shù)accept() 175
7.2.6  連接目標(biāo)網(wǎng)絡(luò)服務(wù)器函數(shù)connect() 178
7.2.7  寫(xiě)入數(shù)據(jù)函數(shù)write() 179
7.2.8  讀取數(shù)據(jù)函數(shù)read() 180
7.2.9  關(guān)閉套接字函數(shù)shutdown() 180
7.3  服務(wù)器/客戶端實(shí)例 180
7.3.1  功能描述 181
7.3.2  服務(wù)器網(wǎng)絡(luò)程序 181
7.3.3  服務(wù)器端和客戶端的連接 183
7.3.4  客戶端網(wǎng)絡(luò)程序 183
7.3.5  客戶端讀取和顯示字符串 184
7.3.6  編譯運(yùn)行程序 184
7.4  截取信號(hào)實(shí)例 185
7.4.1  信號(hào)處理 185
7.4.2  SIGPIPE信號(hào) 186
7.4.3  SIGINT信號(hào) 186
7.5  小結(jié) 186
7.6  習(xí)題 187
第8章  服務(wù)器和客戶端信息獲取 188
8.1  字節(jié)序 188
8.1.1  大端字節(jié)序和小端字節(jié)序 188
8.1.2  字節(jié)序轉(zhuǎn)換函數(shù) 190
8.1.3  字節(jié)序轉(zhuǎn)換實(shí)例 192
8.2  字符串IP地址和二進(jìn)制IP地址的轉(zhuǎn)換 194
8.2.1  inet_xxx()函數(shù) 195
8.2.2  inet_pton()和inet_ntop()函數(shù) 197
8.2.3  地址轉(zhuǎn)換實(shí)例 197
8.2.4  inet_pton()和inet_ntop()函數(shù)實(shí)例 200
8.3  套接字描述符判定函數(shù)issockettype() 200
8.3.1  issockettype()函數(shù) 201
8.3.2  main()函數(shù) 201
8.4  IP地址與域名的相互轉(zhuǎn)換 201
8.4.1  DNS原理 202
8.4.2  獲取主機(jī)信息的函數(shù) 203
8.4.3  通過(guò)主機(jī)名獲取主機(jī)信息實(shí)例 205
8.4.4  gethostbyname()函數(shù)不可重入實(shí)例 206
8.5  協(xié)議名稱處理函數(shù) 208
8.5.1  xxxprotoxxx()函數(shù) 208
8.5.2  使用協(xié)議族函數(shù)實(shí)例 209
8.6  小結(jié) 212
8.7  習(xí)題 213
第9章  數(shù)據(jù)的I/O及其復(fù)用 214
9.1  I/O函數(shù) 214
9.1.1  使用recv()函數(shù)接收數(shù)據(jù) 214
9.1.2  使用send()函數(shù)發(fā)送數(shù)據(jù) 215
9.1.3  使用readv()函數(shù)接收數(shù)據(jù) 215
9.1.4  使用writev()函數(shù)發(fā)送數(shù)據(jù) 216
9.1.5  使用recvmsg()函數(shù)接收數(shù)據(jù) 216
9.1.6  使用sendmsg()函數(shù)發(fā)送數(shù)據(jù) 218
9.1.7  I/O函數(shù)的比較 220
9.2  I/O函數(shù)使用實(shí)例 220
9.2.1  客戶端的處理流程 220
9.2.2  服務(wù)器端的處理流程 222
9.2.3  recv()和send()函數(shù) 223
9.2.4  readv()和write()函數(shù) 225
9.2.5  recvmsg()和sendmsg()函數(shù) 227
9.3  I/O模型 230
9.3.1  阻塞I/O模型 230
9.3.2  非阻塞I/O模型 231
9.3.3  I/O復(fù)用模型 231
9.3.4  信號(hào)驅(qū)動(dòng)I/O模型 231
9.3.5  異步I/O模型 232
9.4  select()和pselect()函數(shù) 232
9.4.1  select()函數(shù) 233
9.4.2  pselect()函數(shù) 234
9.5  poll()和ppoll()函數(shù) 236
9.5.1  poll()函數(shù) 236
9.5.2  ppoll()函數(shù) 237
9.6  非阻塞編程 237
9.6.1  非阻塞方式程序設(shè)計(jì)簡(jiǎn)介 238
9.6.2  非阻塞程序設(shè)計(jì)實(shí)例 238
9.7  小結(jié) 239
9.8  習(xí)題 239
第10章  基于UDP接收和發(fā)送數(shù)據(jù) 241
10.1  UDP程序設(shè)計(jì)簡(jiǎn)介 241
10.1.1  UDP編程框架 241
10.1.2  UDP服務(wù)器端編程框架 242
10.1.3  UDP客戶端編程框架 243
10.2  UDP程序設(shè)計(jì)的常用函數(shù) 243
10.2.1  建立套接字函數(shù)socket()和綁定套接字函數(shù)bind() 243
10.2.2  接收數(shù)據(jù)函數(shù)recvfrom()和recv() 244
10.2.3  發(fā)送數(shù)據(jù)函數(shù)sendto()和send() 247
10.3  UDP接收和發(fā)送數(shù)據(jù)實(shí)例 251
10.3.1  UDP服務(wù)器端 251
10.3.2  UDP服務(wù)器端數(shù)據(jù)處理 252
10.3.3  UDP客戶端 252
10.3.4  UDP客戶端數(shù)據(jù)處理 253
10.3.5  測(cè)試UDP程序 253
10.4  UDP程序設(shè)計(jì)的常見(jiàn)問(wèn)題 253
10.4.1  UDP報(bào)文丟失數(shù)據(jù) 254
10.4.2  UDP數(shù)據(jù)發(fā)送亂序 256
10.4.3  在UDP中使用connect()函數(shù)的副作用 257
10.4.4  UDP缺乏流量控制 258
10.4.5  UDP的外出網(wǎng)絡(luò)接口 260
10.4.6  UDP的數(shù)據(jù)報(bào)文截?cái)?261
10.5  小結(jié) 262
10.6  習(xí)題 262
第11章  高級(jí)套接字 263
11.1  UNIX域函數(shù) 263
11.1.1  UNIX域函數(shù)的地址結(jié)構(gòu) 263
11.1.2  套接字函數(shù) 263
11.1.3  使用UNIX域函數(shù)進(jìn)行套接字編程 264
11.1.4  傳遞文件描述符 266
11.1.5  socketpair()函數(shù) 266
11.1.6  傳遞文件描述符實(shí)例 267
11.2  廣播 271
11.2.1  廣播的IP地址 271
11.2.2  廣播與單播比較 272
11.2.3  廣播實(shí)例 274
11.3  多播 279
11.3.1  多播的概念 279
11.3.2  廣域網(wǎng)的多播 279
11.3.3  多播編程 279
11.3.4  內(nèi)核中的多播 281
11.3.5  多播服務(wù)器端實(shí)例 285
11.3.6  多播客戶端實(shí)例 286
11.4  數(shù)據(jù)鏈路層訪問(wèn) 287
11.4.1  SOCK_PACKET類型 287
11.4.2  設(shè)置套接口捕獲鏈路幀的編程方法 288
11.4.3  從套接口讀取鏈路幀的編程方法 289
11.4.4  定位IP報(bào)頭的編程方法 290
11.4.5  定位TCP報(bào)頭的編程方法 291
11.4.6  定位UDP報(bào)頭的編程方法 292
11.4.7  定位應(yīng)用層報(bào)文數(shù)據(jù)的編程方法 293
11.4.8  使用SOCK_PACKET編寫(xiě)ARP請(qǐng)求程序?qū)嵗?294
11.5  小結(jié) 297
11.6  習(xí)題 297
第12章  套接字選項(xiàng) 299
12.1  獲取和設(shè)置套接字選項(xiàng) 299
12.1.1  getsockopt()和setsocketopt()函數(shù) 299
12.1.2  套接字選項(xiàng) 300
12.1.3  套接字選項(xiàng)的簡(jiǎn)單示例 300
12.2  SOL_SOCKET協(xié)議族選項(xiàng) 303
12.2.1  廣播選項(xiàng)SO_BROADCAST 304
12.2.2  調(diào)試選項(xiàng)SO_DEBUG 304
12.2.3  不經(jīng)過(guò)路由選項(xiàng)SO_DONTROUTE 304
12.2.4  錯(cuò)誤選項(xiàng)SO_ERROR 304
12.2.5  保持連接選項(xiàng)SO_KEEPALIVE 305
12.2.6  緩沖區(qū)處理方式選項(xiàng)SO_LINGER 306
12.2.7  帶外數(shù)據(jù)處理方式選項(xiàng)SO_OOBINLINE 308
12.2.8  緩沖區(qū)大小選項(xiàng)SO_RCVBUF和SO_SNDBUF 309
12.2.9  緩沖區(qū)下限選項(xiàng)SO_RCVLOWAT和SO_SNDLOWAT 309
12.2.10  收發(fā)超時(shí)選項(xiàng)SO_RCVTIMEO和SO_SNDTIMEO 309
12.2.11  地址重用選項(xiàng)SO_REUSERADDR 310
12.2.12  端口獨(dú)占選項(xiàng)SO_EXCLUSIVEADDRUSE 310
12.2.13  套接字類型選項(xiàng)SO_TYPE 310
12.2.14  是否與BSD套接字兼容選項(xiàng)SO_BSDCOMPAT 310
12.2.15  套接字網(wǎng)絡(luò)接口綁定選項(xiàng)SO_BINDTODEVICE 311
12.2.16  套接字優(yōu)先級(jí)選項(xiàng)SO_PRIORITY 312
12.3  IPPROTO_IP選項(xiàng) 312
12.3.1  IP_HDRINCL選項(xiàng) 312
12.3.2  IP_OPTIONS選項(xiàng) 312
12.3.3  IP_TOS選項(xiàng) 312
12.3.4  IP_TTL選項(xiàng) 313
12.4  IPPROTO_TCP選項(xiàng) 313
12.4.1  TCP_KEEPALIVE選項(xiàng) 313
12.4.2  TCP_MAXRT選項(xiàng) 313
12.4.3  TCP_MAXSEG選項(xiàng) 314
12.4.4  TCP_NODELAY和TCP_CORK選項(xiàng) 314
12.5  套接字選項(xiàng)使用實(shí)例 316
12.5.1  設(shè)置和獲取緩沖區(qū)大小 316
12.5.2  獲取套接字的類型 320
12.5.3  套接字選項(xiàng)綜合實(shí)例 321
12.6  ioctl()函數(shù) 325
12.6.1  ioctl()函數(shù)的選項(xiàng) 325
12.6.2  ioctl()函數(shù)的I/O請(qǐng)求 326
12.6.3  ioctl()函數(shù)的文件請(qǐng)求 328
12.6.4  ioctl()函數(shù)的網(wǎng)絡(luò)接口請(qǐng)求 328
12.6.5  使用ioctl()函數(shù)對(duì)ARP高速緩存進(jìn)行操作 335
12.6.6  使用ioctl()函數(shù)發(fā)送路由表請(qǐng)求 337
12.7  fcntl()函數(shù) 337
12.7.1  fcntl()函數(shù)的命令選項(xiàng) 337
12.7.2  使用fcntl()函數(shù)修改套接字非阻塞屬性 337
12.7.3  使用fcntl()函數(shù)設(shè)置信號(hào)屬主 338
12.8  小結(jié) 338
12.9  習(xí)題 338
第13章  原始套接字 340
13.1  原始套接字概述 340
13.2  創(chuàng)建原始套接字 341
13.2.1  SOCK_RAW選項(xiàng) 341
13.2.2  IP_HDRINCL套接字選項(xiàng) 342
13.2.3  不需要bind()函數(shù) 342
13.3  使用原始套接字發(fā)送報(bào)文 342
13.4  使用原始套接字接收?qǐng)?bào)文 343
13.5  原始套接字報(bào)文處理的結(jié)構(gòu) 343
13.5.1  IP的頭部結(jié)構(gòu) 343
13.5.2  ICMP的頭部結(jié)構(gòu) 344
13.5.3  UDP的頭部結(jié)構(gòu) 347
13.5.4  TCP的頭部結(jié)構(gòu) 348
13.6  ping命令使用實(shí)例 350
13.6.1  協(xié)議格式 350
13.6.2  校驗(yàn)和函數(shù) 351
13.6.3  設(shè)置ICMP發(fā)送報(bào)文的頭部 352
13.6.4  剝離ICMP接收?qǐng)?bào)文的頭部 353
13.6.5  計(jì)算時(shí)間差 354
13.6.6  發(fā)送報(bào)文 355
13.6.7  接收?qǐng)?bào)文 356
13.6.8  主函數(shù)實(shí)現(xiàn)過(guò)程 357
13.6.9  主函數(shù)main() 359
13.6.10  編譯測(cè)試 362
13.7  洪水攻擊 362
13.8  ICMP洪水攻擊 362
13.8.1  ICMP洪水攻擊的原理 362
13.8.2  ICMP洪水攻擊實(shí)例 364
13.9  UDP洪水攻擊 367
13.10  SYN洪水攻擊 370
13.10.1  SYN洪水攻擊的原理 370
13.10.2  SYN洪水攻擊實(shí)例 371
13.11  小結(jié) 374
13.12  習(xí)題 374
第14章  服務(wù)器模型 376
14.1  循環(huán)服務(wù)器 376
14.1.1  UDP循環(huán)服務(wù)器 376
14.1.2  TCP循環(huán)服務(wù)器 378
14.2  并發(fā)服務(wù)器 381
14.2.1  簡(jiǎn)單的并發(fā)服務(wù)器模型 381
14.2.2  UDP并發(fā)服務(wù)器 382
14.2.3  TCP并發(fā)服務(wù)器 384
14.3  TCP的高級(jí)并發(fā)服務(wù)器模型 387
14.3.1  單客戶端單進(jìn)程統(tǒng)一接收請(qǐng)求 387
14.3.2  單客戶端單線程統(tǒng)一接收請(qǐng)求 390
14.3.3  單客戶端單線程獨(dú)自接收請(qǐng)求 392
14.4  I/O復(fù)用循環(huán)服務(wù)器 395
14.4.1  I/O復(fù)用循環(huán)服務(wù)器模型簡(jiǎn)介 395
14.4.2  I/O復(fù)用循環(huán)服務(wù)器模型實(shí)例 396
14.5  小結(jié) 400
14.6  習(xí)題 400
第15章  IPv6基礎(chǔ)知識(shí) 402
15.1  IPv4的缺陷 402
15.2  IPv6的特點(diǎn) 403
15.3  IPv6的地址 403
15.3.1  IPv6的單播地址 404
15.3.2  可聚集全球單播地址 404
15.3.3  本地單播地址 405
15.3.4  兼容性地址 405
15.3.5  IPv6的多播地址 406
15.3.6  IPv6的任播地址 407
15.3.7  主機(jī)的多個(gè)IPv6地址 407
15.4  IPv6的頭部 407
15.4.1  IPv6的頭部結(jié)構(gòu) 407
15.4.2  IPv6的頭部結(jié)構(gòu)與IPv4的頭部結(jié)構(gòu)對(duì)比 408
15.4.3  IPv6的TCP頭部結(jié)構(gòu) 409
15.4.4  IPv6的UDP頭部結(jié)構(gòu) 409
15.4.5  IPv6的ICMP頭部結(jié)構(gòu) 409
15.5  IPv6運(yùn)行環(huán)境 410
15.5.1  加載IPv6模塊 411
15.5.2  查看是否支持IPv6 411
15.6  IPv6的結(jié)構(gòu)定義 412
15.6.1  IPv6的地址族和協(xié)議族 412
15.6.2  套接字地址結(jié)構(gòu) 412
15.6.3  地址兼容考慮 413
15.6.4  IPv6的通用地址 413
15.7  IPv6的套接字函數(shù) 414
15.7.1  socket()函數(shù) 414
15.7.2  沒(méi)有改變的函數(shù) 414
15.7.3  改變的函數(shù) 415
15.8  IPv6的套接字選項(xiàng)與控制命令 415
15.8.1  IPv6的套接字選項(xiàng) 415
15.8.2  單播跳限IPV6_UNICAST_HOPS 416
15.8.3  發(fā)送和接收多播包 416
15.8.4  在IPv6中獲得時(shí)間戳的ioctl命令 417
15.9  IPv6的庫(kù)函數(shù) 417
15.9.1  地址轉(zhuǎn)換函數(shù)的差異 417
15.9.2  域名解析函數(shù)的差異 417
15.9.3  測(cè)試宏 419
15.10  IPv6編程實(shí)例 419
15.10.1  服務(wù)器程序 419
15.10.2  客戶端程序 421
15.10.3  編譯程序 422
15.11  小結(jié) 423
15.12  習(xí)題 423
第3篇  Linux內(nèi)核網(wǎng)絡(luò)編程
第16章  Linux內(nèi)核層網(wǎng)絡(luò)架構(gòu) 426
16.1  Linux網(wǎng)絡(luò)協(xié)議棧概述 426
16.1.1  代碼目錄分布 426
16.1.2  網(wǎng)絡(luò)數(shù)據(jù)在內(nèi)核中的處理過(guò)程 427
16.1.3  修改內(nèi)核層的網(wǎng)絡(luò)數(shù)據(jù) 429
16.1.4  sk_buff結(jié)構(gòu) 429
16.1.5  網(wǎng)絡(luò)協(xié)議數(shù)據(jù)結(jié)構(gòu)inet_protosw 434
16.2  軟中斷CPU報(bào)文隊(duì)列及其處理 435
16.2.1  軟中斷簡(jiǎn)介 435
16.2.2  網(wǎng)絡(luò)收發(fā)處理軟中斷的實(shí)現(xiàn)機(jī)制 436
16.3  如何在內(nèi)核中接收和發(fā)送socket數(shù)據(jù) 437
16.3.1  初始化函數(shù)socket() 437
16.3.2  接收網(wǎng)絡(luò)數(shù)據(jù)函數(shù)recv() 437
16.3.3  發(fā)送網(wǎng)絡(luò)數(shù)據(jù)函數(shù)send() 438
16.4  小結(jié) 439
16.5  習(xí)題 439
第17章  netfilter框架的報(bào)文處理 440
17.1  netfilter框架概述 440
17.1.1  netfilter框架簡(jiǎn)介 440
17.1.2  在IPv4棧上實(shí)現(xiàn)netfilter框架 440
17.1.3  netfilter框架的檢查 441
17.1.4  netfilter框架的規(guī)則 442
17.2  iptables和netfilter 442
17.2.1  iptables簡(jiǎn)介 442
17.2.2  iptables的表和鏈 443
17.2.3  使用iptables設(shè)置過(guò)濾規(guī)則 444
17.3  內(nèi)核模塊編程 446
17.3.1  內(nèi)核層的Hello World程序 446
17.3.2  內(nèi)核模塊的基本架構(gòu) 448
17.3.3  內(nèi)核模塊的加載和卸載過(guò)程 450
17.3.4  內(nèi)核模塊的初始化和清理函數(shù) 450
17.3.5  內(nèi)核模塊的初始化和清理過(guò)程的容錯(cuò)處理 451
17.3.6  編譯內(nèi)核模塊所需的Makefile 452
17.4  5個(gè)鉤子 453
17.4.1  netfilter框架的5個(gè)鉤子 453
17.4.2  NF_HOOK()宏函數(shù) 454
17.4.3  鉤子的處理規(guī)則 454
17.5  注冊(cè)和注銷鉤子 455
17.5.1  nf_hook_ops結(jié)構(gòu) 455
17.5.2  注冊(cè)鉤子 455
17.5.3  注銷鉤子 456
17.5.4  注冊(cè)和注銷函數(shù) 456
17.6  鉤子處理實(shí)例 457
17.6.1  功能描述 457
17.6.2  需求分析 458
17.6.3  ping回顯屏蔽 458
17.6.4  禁止向目的IP地址發(fā)送數(shù)據(jù) 458
17.6.5  端口關(guān)閉 458
17.6.6  動(dòng)態(tài)配置 459
17.6.7  可加載內(nèi)核代碼 460
17.6.8  應(yīng)用層測(cè)試代碼 467
17.6.9  編譯和測(cè)試 467
17.7  多個(gè)鉤子的優(yōu)先級(jí)設(shè)置 467
17.8  校驗(yàn)和問(wèn)題 468
17.9  小結(jié) 469
17.10  習(xí)題 469
第4篇  綜合案例
第18章  一個(gè)簡(jiǎn)單的Web服務(wù)器SHTTPD的實(shí)現(xiàn) 472
18.1  SHTTPD的需求分析 472
18.1.1  啟動(dòng)參數(shù)可動(dòng)態(tài)配置 473
18.1.2  多客戶端支持 475
18.1.3  支持的方法 475
18.1.4  支持的HTTP版本 476
18.1.5  支持的頭域 476
18.1.6  URI定位 476
18.1.7  支持的CGI 477
18.1.8  錯(cuò)誤代碼 478
18.2  SHTTPD的模塊分析和設(shè)計(jì) 478
18.2.1  主函數(shù) 478
18.2.2  命令行解析模塊 479
18.2.3  文件配置解析模塊 481
18.2.4  多客戶端支持模塊 481
18.2.5  頭部解析模塊 483
18.2.6  URI解析模塊 484
18.2.7  請(qǐng)求方法解析模塊 484
18.2.8  支持的CGI模塊 485
18.2.9  錯(cuò)誤處理模塊 487
18.3  SHTTPD各模塊的實(shí)現(xiàn) 489
18.3.1  命令行解析模塊的實(shí)現(xiàn) 489
18.3.2  文件配置解析模塊的實(shí)現(xiàn) 491
18.3.3  多客戶端支持模塊的實(shí)現(xiàn) 493
18.3.4  URI解析模塊的實(shí)現(xiàn) 496
18.3.5  請(qǐng)求方法解析模塊的實(shí)現(xiàn) 497
18.3.6  響應(yīng)方法模塊的實(shí)現(xiàn) 498
18.3.7  CGI模塊的實(shí)現(xiàn) 501
18.3.8  支持的HTTP版本的實(shí)現(xiàn) 504
18.3.9  支持的內(nèi)容類型模塊的實(shí)現(xiàn) 504
18.3.10  錯(cuò)誤處理模塊的實(shí)現(xiàn) 506
18.3.11  返回目錄文件列表模塊的實(shí)現(xiàn) 508
18.3.12  主函數(shù)的實(shí)現(xiàn) 510
18.4  程序的編譯和測(cè)試 511
18.4.1  建立源文件 511
18.4.2  制作Makefile和執(zhí)行文件 511
18.4.3  使用不同的瀏覽器測(cè)試服務(wù)器程序 512
18.5  小結(jié) 512
18.6  習(xí)題 513
第19章  一個(gè)簡(jiǎn)單的網(wǎng)絡(luò)協(xié)議棧SIP的實(shí)現(xiàn) 514
19.1  功能描述 514
19.1.1  基本功能描述 514
19.1.2  分層功能描述 515
19.1.3  用戶接口功能描述 515
19.2  基本架構(gòu) 516
19.3  SIP網(wǎng)絡(luò)協(xié)議棧的存儲(chǔ)區(qū)緩存 517
19.3.1  SIP存儲(chǔ)緩沖結(jié)構(gòu)定義 517
19.3.2  SIP存儲(chǔ)緩沖的處理函數(shù) 520
19.4  SIP網(wǎng)絡(luò)協(xié)議棧的網(wǎng)絡(luò)接口層 522
19.4.1  網(wǎng)絡(luò)接口層架構(gòu) 523
19.4.2  網(wǎng)絡(luò)接口層的數(shù)據(jù)結(jié)構(gòu) 523
19.4.3  網(wǎng)絡(luò)接口層的初始化函數(shù) 525
19.4.4  網(wǎng)絡(luò)接口層的輸入函數(shù) 526
19.4.5  網(wǎng)絡(luò)接口層的輸出函數(shù) 529
19.5  SIP網(wǎng)絡(luò)協(xié)議棧的ARP層 531
19.5.1  ARP層的架構(gòu) 531
19.5.2  ARP層的數(shù)據(jù)結(jié)構(gòu) 532
19.5.3  ARP層的映射表 533
19.5.4  ARP層的映射表維護(hù)函數(shù) 533
19.5.5  ARP層的網(wǎng)絡(luò)報(bào)文構(gòu)建函數(shù) 535
19.5.6  ARP層的網(wǎng)絡(luò)報(bào)文收發(fā)處理函數(shù) 537
19.6  SIP網(wǎng)絡(luò)協(xié)議棧的IP層 539
19.6.1  IP層的架構(gòu) 540
19.6.2  IP層的數(shù)據(jù)結(jié)構(gòu) 540
19.6.3  IP層的輸入函數(shù) 542
19.6.4  IP層的輸出函數(shù) 546
19.6.5  IP層的分片函數(shù) 546
19.6.6  IP層的分片組裝函數(shù) 548
19.7  SIP網(wǎng)絡(luò)協(xié)議棧的ICMP層 551
19.7.1  ICMP層的數(shù)據(jù)結(jié)構(gòu) 552
19.7.2  ICMP層的協(xié)議支持 552
19.7.3  ICMP層的輸入函數(shù) 554
19.7.4  ICMP層的回顯應(yīng)答函數(shù) 555
19.8  SIP網(wǎng)絡(luò)協(xié)議棧的UDP層 556
19.8.1  UDP層的數(shù)據(jù)結(jié)構(gòu) 556
19.8.2  UDP層的控制單元 556
19.8.3  UDP層的數(shù)據(jù)輸入函數(shù) 557
19.8.4  UDP層的數(shù)據(jù)輸出函數(shù) 558
19.8.5  UDP層的創(chuàng)建函數(shù) 558
19.8.6  UDP層的釋放函數(shù) 559
19.8.7  UDP層的綁定函數(shù) 559
19.8.8  UDP層的發(fā)送數(shù)據(jù)函數(shù) 560
19.8.9  UDP層的校驗(yàn)和計(jì)算 561
19.9  SIP網(wǎng)絡(luò)協(xié)議棧的協(xié)議無(wú)關(guān)層 562
19.9.1  協(xié)議無(wú)關(guān)層的系統(tǒng)架構(gòu) 562
19.9.2  協(xié)議無(wú)關(guān)層的函數(shù)形式 563
19.9.3  協(xié)議無(wú)關(guān)層的接收數(shù)據(jù)函數(shù) 563
19.10  SIP網(wǎng)絡(luò)協(xié)議棧的BSD接口層 564
19.10.1  BSD接口層的架構(gòu) 565
19.10.2  BSD接口層的套接字創(chuàng)建函數(shù) 565
19.10.3  BSD接口層的套接字關(guān)閉函數(shù) 566
19.10.4  BSD接口層的套接字綁定函數(shù) 566
19.10.5  BSD接口層的套接字連接函數(shù) 567
19.10.6  BSD接口層的套接字接收數(shù)據(jù)函數(shù) 567
19.10.7  BSD接口層的發(fā)送數(shù)據(jù)函數(shù) 568
19.11  SIP網(wǎng)絡(luò)協(xié)議棧的編譯 569
19.11.1  SIP的文件結(jié)構(gòu) 569
19.11.2  SIP的Makefile 569
19.11.3  SIP的編譯運(yùn)行 570
19.12  小結(jié) 570
19.13  習(xí)題 571
第20章  一個(gè)簡(jiǎn)單的防火墻SIPFW的實(shí)現(xiàn) 572
20.1  SIPFW防火墻功能描述 572
20.1.1  網(wǎng)絡(luò)數(shù)據(jù)過(guò)濾功能描述 572
20.1.2  防火墻規(guī)則設(shè)置功能描述 573
20.1.3  附加功能描述 573
20.2  SIPFW防火墻需求分析 573
20.2.1  SIPFW防火墻的條件和動(dòng)作 573
20.2.2  支持的過(guò)濾類型 574
20.2.3  過(guò)濾方式 575
20.2.4  基本配置文件 576
20.2.5  命令行配置格式 576
20.2.6  防火墻規(guī)則配置文件 577
20.2.7  防火墻日志文件 578
20.2.8  構(gòu)建防火墻采用的技術(shù)方案 579
20.3  使用netlink機(jī)制進(jìn)行用戶空間和內(nèi)核空間的數(shù)據(jù)交互 579
20.3.1  用戶空間程序設(shè)計(jì) 580
20.3.2  內(nèi)核空間的netlink API 582
20.4  使用proc實(shí)現(xiàn)內(nèi)核空間和用戶空間通信 584
20.4.1  proc虛擬文件系統(tǒng)的結(jié)構(gòu) 584
20.4.2  創(chuàng)建proc虛擬文件 584
20.4.3  刪除proc虛擬文件 585
20.5  內(nèi)核空間的文件操作函數(shù) 585
20.5.1  內(nèi)核空間的文件結(jié)構(gòu) 585
20.5.2  內(nèi)核空間的文件建立操作 586
20.5.3  內(nèi)核空間的文件讀寫(xiě)操作 586
20.5.4  內(nèi)核空間的文件關(guān)閉操作 587
20.6  SIPFW防火墻的模塊設(shè)計(jì)和分析 587
20.6.1  總體架構(gòu) 588
20.6.2  用戶命令解析模塊 590
20.6.3  用戶空間與內(nèi)核空間的交互模塊 593
20.6.4  內(nèi)核鏈的規(guī)則處理模塊 596
20.6.5  proc虛擬文件系統(tǒng)模塊 598
20.6.6  配置文件和日志文件處理模塊 598
20.6.7  過(guò)濾模塊 600
20.7  SIPFW防火墻各模塊的實(shí)現(xiàn) 603
20.7.1  用戶命令解析模塊的實(shí)現(xiàn) 603
20.7.2  過(guò)濾規(guī)則解析模塊的實(shí)現(xiàn) 607
20.7.3  網(wǎng)絡(luò)數(shù)據(jù)攔截模塊的實(shí)現(xiàn) 609
20.7.4  proc虛擬文件系統(tǒng)模塊的實(shí)現(xiàn) 610
20.7.5  配置文件解析模塊的實(shí)現(xiàn) 612
20.7.6  內(nèi)核模塊初始化和退出的實(shí)現(xiàn) 613
20.7.7  用戶空間處理主函數(shù)的實(shí)現(xiàn) 614
20.8  程序的編譯和測(cè)試 615
20.8.1  用戶程序和內(nèi)核程序的Makefile 615
20.8.2  編譯并運(yùn)行程序 616
20.8.3  過(guò)濾測(cè)試 616
20.9  小結(jié) 618
20.10  習(xí)題 619

本目錄推薦

掃描二維碼
Copyright ? 讀書(shū)網(wǎng) m.ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號(hào) 鄂公網(wǎng)安備 42010302001612號(hào)