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

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

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

定 價(jià):¥79.00

作 者: 宋敬彬,孫海濱 等編著
出版社: 清華大學(xué)出版社
叢編項(xiàng): Linux典藏大系
標(biāo) 簽: LINUX

ISBN: 9787302207177 出版時(shí)間: 2010-01-01 包裝: 平裝
開(kāi)本: 16開(kāi) 頁(yè)數(shù): 690 字?jǐn)?shù):  

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

  Linux是目前最流行的開(kāi)源操作系統(tǒng),網(wǎng)絡(luò)功能在Linux下占有核心的地位。《Linux網(wǎng)絡(luò)編程》循序漸進(jìn)地從應(yīng)用層到Linux內(nèi)核、從基本知識(shí)點(diǎn)到綜合案例,向讀者介紹如何在Linux下進(jìn)行網(wǎng)絡(luò)程序設(shè)計(jì)?!禠inux網(wǎng)絡(luò)編程》內(nèi)容分為4個(gè)部分:Linux程序設(shè)計(jì)基礎(chǔ)部分、Linux用戶空間網(wǎng)絡(luò)編程部分、Linux內(nèi)核網(wǎng)絡(luò)編程部分以及綜合案例部分。內(nèi)容包含Linux系統(tǒng)概述、Linux編程環(huán)境、Linux文件系統(tǒng)簡(jiǎn)介、Linux下的進(jìn)程和線程、TCP/IP協(xié)議族、應(yīng)用層網(wǎng)絡(luò)服務(wù)程序、TCP編程、主機(jī)信息獲取、數(shù)據(jù)IO復(fù)用、UDP編程、高級(jí)套接字、套接字選項(xiàng)、原始套接字、服務(wù)器模型、IPv6、Linux內(nèi)核網(wǎng)絡(luò)部分結(jié)構(gòu)及分布、netfilter框架內(nèi)報(bào)文處理。為了方便讀者學(xué)習(xí),《Linux網(wǎng)絡(luò)編程》最后一個(gè)部分介紹了3個(gè)綜合案例,包括應(yīng)用層的Web服務(wù)器例子、簡(jiǎn)單的應(yīng)用層網(wǎng)絡(luò)協(xié)議站例子和內(nèi)核層網(wǎng)防火墻的例子?!禠inux網(wǎng)絡(luò)編程》適合廣大的Linux平臺(tái)下的網(wǎng)絡(luò)程序設(shè)計(jì)人員和大中專(zhuān)院校學(xué)生閱讀,尤其是有一定Linux基礎(chǔ)知識(shí)的編程技術(shù)人員。

作者簡(jiǎn)介

  宋敬彬,海信集團(tuán)國(guó)家重點(diǎn)實(shí)驗(yàn)室高級(jí)工程師。海信數(shù)字家庭原型系統(tǒng)的主要設(shè)計(jì)及實(shí)現(xiàn)人員。有十多年的Linux編程經(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ò)多篇技術(shù)論文。曾經(jīng)參加過(guò)國(guó)家863高性能集群服務(wù)器、電子發(fā)展基金的IPv6等項(xiàng)目的研究和開(kāi)發(fā)。孫海濱,山東科技大學(xué)信息科學(xué)與工程學(xué)院副教授。計(jì)算機(jī)應(yīng)用技術(shù)專(zhuān)業(yè)博士、博士后。長(zhǎng)期從事計(jì)算機(jī)應(yīng)用技術(shù)的研究和教學(xué)。有多年的Linux應(yīng)用和開(kāi)發(fā)經(jīng)驗(yàn),對(duì)網(wǎng)絡(luò)協(xié)議有較深入的研究。目前致力于多媒體信息檢索、人工智能、空間推理、地理信息系統(tǒng)等技術(shù)的研究。曾經(jīng)在國(guó)內(nèi)外的核心刊物上發(fā)表過(guò)多篇學(xué)術(shù)論文。參與開(kāi)發(fā)了多個(gè)應(yīng)用軟件系統(tǒng)。參與國(guó)家863計(jì)劃項(xiàng)目一項(xiàng)。主持開(kāi)發(fā)過(guò)山東科技大學(xué)“春蕾計(jì)劃”項(xiàng)目一項(xiàng)。

圖書(shū)目錄

第1篇 Linux網(wǎng)絡(luò)開(kāi)發(fā)基礎(chǔ)
第1章 Linux操作系統(tǒng)概述 2
1.1 Linux發(fā)展歷史 2
1.1.1 Linux的誕生和發(fā)展 2
1.1.2 Linux名稱(chēng)的由來(lái) 3
1.2 Linux的發(fā)展要素 3
1.2.1 UNIX操作系統(tǒng) 4
1.2.2 Minix操作系統(tǒng) 4
1.2.3 POSIX 標(biāo)準(zhǔn) 4
1.3 Linux與UNIX的異同 5
1.4 操作系統(tǒng)類(lèi)型選擇和內(nèi)核版本的選擇 5
1.4.1 常見(jiàn)的不同公司發(fā)行的Linux異同 6
1.4.2 內(nèi)核版本的選擇 6
1.5 Linux的系統(tǒng)架構(gòu) 7
1.5.1 Linux內(nèi)核的主要模塊 7
1.5.2 Linux的文件結(jié)構(gòu) 9
1.6 GNU通用公共許可證 10
1.6.1 GPL許可證的歷史 10
1.6.2 GPL的自由理念 10
1.6.3 GPL的基本條款 11
1.6.4 關(guān)于GPL許可證的爭(zhēng)議 12
1.7 Linux軟件開(kāi)發(fā)的可借鑒之處 12
1.8 小結(jié) 13
第2章 Linux編程環(huán)境 14
2.1 Linux環(huán)境下的編輯器 14
2.1.1 vim使用簡(jiǎn)介 14
2.1.2 使用vim建立文件 15
2.1.3 使用vim編輯文本 16
2.1.4 vim的格式設(shè)置 18
2.1.5 vim配置文件.vimrc 19
2.1.6 使用其他編輯器 19
2.2 Linux下的GCC編譯器工具集 19
2.2.1 GCC簡(jiǎn)介 19
2.2.2 編譯程序的基本知識(shí) 21
2.2.3 單個(gè)文件編譯成執(zhí)行文件 22
2.2.4 編譯生成目標(biāo)文件 22
2.2.5 多文件編譯 23
2.2.6 預(yù)處理 24
2.2.7 編譯成匯編語(yǔ)言 24
2.2.8 生成和使用靜態(tài)鏈接庫(kù) 25
2.2.9 生成動(dòng)態(tài)鏈接庫(kù) 26
2.2.10 動(dòng)態(tài)加載庫(kù) 29
2.2.11 GCC常用選項(xiàng) 31
2.2.12 編譯環(huán)境的搭建 33
2.3 Makefile文件簡(jiǎn)介 34
2.3.1 一個(gè)多文件的工程例子 34
2.3.2 多文件工程的編譯 36
2.3.3 Makefile的規(guī)則 37
2.3.4 Makefile中使用變量 39
2.3.5 搜索路徑 43
2.3.6 自動(dòng)推導(dǎo)規(guī)則 44
2.3.7 遞歸make 44
2.3.8 Makefile中的函數(shù) 46
2.4 用GDB調(diào)試程序 47
2.4.1 編譯可調(diào)試程序 48
2.4.2 使用GDB調(diào)試程序 49
2.4.3 GDB常用命令 52
2.4.4 其他的GDB 59
2.5 小結(jié) 60
第3章 文件系統(tǒng)簡(jiǎn)介 61
3.1 Linux下的文件系統(tǒng) 61
3.1.1 Linux下文件的內(nèi)涵 61
3.1.2 文件系統(tǒng)的創(chuàng)建 62
3.1.3 掛接文件系統(tǒng) 64
3.1.4 索引節(jié)點(diǎn)inode 65
3.1.5 普通文件 66
3.1.6 設(shè)備文件 66
3.1.7 虛擬文件系統(tǒng)VFS 68
3.2 文件的通用操作方法 72
3.2.1 文件描述符 72
3.2.2 打開(kāi)創(chuàng)建文件open()、create()函數(shù) 72
3.2.3 關(guān)閉文件close()函數(shù) 76
3.2.4 讀取文件read()函數(shù) 77
3.2.5 寫(xiě)文件write()函數(shù) 79
3.2.6 文件偏移lseek()函數(shù) 80
3.2.7 獲得文件狀態(tài)fstat()函數(shù) 83
3.2.8 文件空間映射mmap()函數(shù) 85
3.2.9 文件屬性fcntl()函數(shù) 88
3.2.10 文件輸入輸出控制ioctl()函數(shù) 92
3.3 socket文件類(lèi)型 93
3.4 小結(jié) 93
第4章 程序、進(jìn)程和線程 94
4.1 程序、進(jìn)程和線程的概念 94
4.1.1 程序和進(jìn)程的差別 94
4.1.2 Linux環(huán)境下的進(jìn)程 95
4.1.3 進(jìn)程和線程 96
4.2 進(jìn)程產(chǎn)生的方式 96
4.2.1 進(jìn)程號(hào) 96
4.2.2 進(jìn)程復(fù)制fork() 97
4.2.3 system()方式 98
4.2.4 進(jìn)程執(zhí)行exec()函數(shù)系列 99
4.2.5 所有用戶態(tài)進(jìn)程的產(chǎn)生進(jìn)程init 100
4.3 進(jìn)程間通信和同步 101
4.3.1 半雙工管道 101
4.3.2 命名管道 107
4.3.3 消息隊(duì)列 108
4.3.4 消息隊(duì)列的一個(gè)例子 114
4.3.5 信號(hào)量 116
4.3.6 共享內(nèi)存 121
4.3.7 信號(hào) 124
4.4 Linux下的線程 127
4.4.1 多線程編程實(shí)例 127
4.4.2 Linux下線程創(chuàng)建函數(shù)pthread_create() 129
4.4.3 線程的結(jié)束函數(shù)pthread_join()和pthread_exit() 129
4.4.4 線程的屬性 130
4.4.5 線程間的互斥 132
4.4.6 線程中使用信號(hào)量 133
4.5 小結(jié) 136
第2篇 Linux用戶層網(wǎng)絡(luò)編程
第5章 TCP/IP協(xié)議族簡(jiǎn)介 138
5.1 OSI網(wǎng)絡(luò)分層介紹 138
5.1.1 OSI網(wǎng)絡(luò)分層結(jié)構(gòu) 138
5.1.2 OSI的7層網(wǎng)絡(luò)結(jié)構(gòu) 139
5.1.3 OSI參考模型中的數(shù)據(jù)傳輸 140
5.2 TCP/IP協(xié)議棧 141
5.2.1 TCP/IP協(xié)議棧參考模型 141
5.2.2 主機(jī)到網(wǎng)絡(luò)層協(xié)議 143
5.2.3 IP協(xié)議 144
5.2.4 網(wǎng)際控制報(bào)文協(xié)議(ICMP) 146
5.2.5 傳輸控制協(xié)議(TCP) 150
5.2.6 用戶數(shù)據(jù)報(bào)文協(xié)議(UDP) 154
5.2.7 地址解析協(xié)議(ARP) 156
5.3 IP地址分類(lèi)與TCP/UDP端口 158
5.3.1 因特網(wǎng)中IP地址的分類(lèi) 159
5.3.2 子網(wǎng)掩碼(subnet mask address) 161
5.3.3 IP地址的配置 162
5.3.4 端口 163
5.4 主機(jī)字節(jié)序和網(wǎng)絡(luò)字節(jié)序 163
5.4.1 字節(jié)序的含義 164
5.4.2 網(wǎng)絡(luò)字節(jié)序的轉(zhuǎn)換 164
5.5 小結(jié) 166
第6章 應(yīng)用層網(wǎng)絡(luò)服務(wù)程序簡(jiǎn)介 167
6.1 HTTP協(xié)議和服務(wù) 167
6.1.1 HTTP協(xié)議概述 167
6.1.2 HTTP協(xié)議的基本過(guò)程 168
6.2 FTP協(xié)議和服務(wù) 170
6.2.1 FTP協(xié)議概述 170
6.2.2 FTP協(xié)議的工作模式 172
6.2.3 FTP協(xié)議的傳輸方式 172
6.2.4 一個(gè)簡(jiǎn)單的FTP過(guò)程 173
6.2.5 常用的FTP工具 173
6.3 TELNET協(xié)議和服務(wù) 174
6.3.1 遠(yuǎn)程登錄的基本概念 174
6.3.2 使用TELNET協(xié)議進(jìn)行遠(yuǎn)程登錄的工作過(guò)程 174
6.3.3 TELNET協(xié)議 174
6.4 NFS協(xié)議和服務(wù) 176
6.4.1 安裝NFS服務(wù)器和客戶端 176
6.4.2 服務(wù)器端的設(shè)定 176
6.4.3 客戶端的操作 177
6.4.4 showmount命令 177
6.5 自定義網(wǎng)絡(luò)服務(wù) 177
6.5.1 xinetd/inetd 178
6.5.2 xinetd服務(wù)配置 178
6.5.3 自定義網(wǎng)絡(luò)服務(wù) 179
6.6 小結(jié) 180
第7章 TCP網(wǎng)絡(luò)編程基礎(chǔ) 181
7.1 套接字編程基礎(chǔ)知識(shí) 181
7.1.1 套接字地址結(jié)構(gòu) 181
7.1.2 用戶層和內(nèi)核層交互過(guò)程 183
7.2 TCP網(wǎng)絡(luò)編程流程 184
7.2.1 TCP網(wǎng)絡(luò)編程架構(gòu) 184
7.2.2 創(chuàng)建網(wǎng)絡(luò)插口函數(shù)socket() 186
7.2.3 綁定一個(gè)地址端口對(duì)bind() 189
7.2.4 監(jiān)聽(tīng)本地端口listen 192
7.2.5 接受一個(gè)網(wǎng)絡(luò)請(qǐng)求accept() 194
7.2.6 連接目標(biāo)網(wǎng)絡(luò)服務(wù)器connect() 199
7.2.7 寫(xiě)入數(shù)據(jù)函數(shù)write() 200
7.2.8 讀取數(shù)據(jù)函數(shù)read() 201
7.2.9 關(guān)閉套接字函數(shù)close() 201
7.3 服務(wù)器/客戶端的簡(jiǎn)單例子 202
7.3.1 例子功能描述 202
7.3.2 服務(wù)器網(wǎng)絡(luò)程序 203
7.3.3 服務(wù)器讀取和顯示字符串 205
7.3.4 客戶端的網(wǎng)絡(luò)程序 205
7.3.5 客戶端讀取和顯示字符串 206
7.3.6 編譯運(yùn)行程序 206
7.4 截取信號(hào)的例子 207
7.4.1 信號(hào)處理 207
7.4.2 信號(hào)SIGPIPE 208
7.4.3 信號(hào)SIGINT 208
7.5 小結(jié) 208
第8章 服務(wù)器和客戶端信息的獲取 210
8.1 字節(jié)序 210
8.1.1 大端字節(jié)序和小端字節(jié)序 210
8.1.2 字節(jié)序轉(zhuǎn)換函數(shù) 212
8.1.3 一個(gè)字節(jié)序轉(zhuǎn)換的例子 214
8.2 字符串IP地址和二進(jìn)制IP地址的轉(zhuǎn)換 217
8.2.1 inet_xxx()函數(shù) 217
8.2.2 inet_pton()和inet_ntop()函數(shù) 219
8.2.3 使用8.2.1節(jié)地址轉(zhuǎn)換函數(shù)的例子 220
8.2.4 使用函數(shù)inet_pton()和函數(shù)inet_ntop()的例子 223
8.3 套接字描述符判定函數(shù)issockettype() 223
8.3.1 進(jìn)行文件描述符判定的函數(shù)issockettype() 224
8.3.2 main()函數(shù) 224
8.4 IP地址與域名之間的相互轉(zhuǎn)換 225
8.4.1 DNS原理 225
8.4.2 獲取主機(jī)信息的函數(shù) 226
8.4.3 使用主機(jī)名獲取主機(jī)信息的例子 228
8.4.4 函數(shù)gethostbyname()不可重入的例子 230
8.5 協(xié)議名稱(chēng)處理函數(shù) 232
8.5.1 xxxprotoxxx()函數(shù) 232
8.5.2 使用協(xié)議族函數(shù)的例子 233
8.6 小結(jié) 236
第9章 數(shù)據(jù)的IO和復(fù)用 237
9.1 IO函數(shù) 237
9.1.1 使用recv()函數(shù)接收數(shù)據(jù) 237
9.1.2 使用send()函數(shù)發(fā)送數(shù)據(jù) 239
9.1.3 使用readv()函數(shù)接收數(shù)據(jù) 240
9.1.4 使用writev()函數(shù)發(fā)送數(shù)據(jù) 240
9.1.5 使用recvmsg()函數(shù)接收數(shù)據(jù) 242
9.1.6 使用sendmsg()函數(shù)發(fā)送數(shù)據(jù) 244
9.1.7 IO函數(shù)的比較 246
9.2 使用IO函數(shù)的例子 246
9.2.1 客戶端處理框架的例子 246
9.2.2 服務(wù)器端程序框架 248
9.2.3 使用recv()和send()函數(shù) 249
9.2.4 使用readv()和write()函數(shù) 251
9.2.5 使用recvmsg()和sendmsg()函數(shù) 253
9.3 IO模型 256
9.3.1 阻塞IO模型 256
9.3.2 非阻塞IO模型 257
9.3.3 IO復(fù)用 257
9.3.4 信號(hào)驅(qū)動(dòng)IO模型 258
9.3.5 異步IO模型 258
9.4 select()函數(shù)和pselect()函數(shù) 259
9.4.1 select()函數(shù) 259
9.4.2 pselect()函數(shù) 261
9.5 poll()函數(shù)和ppoll()函數(shù) 262
9.5.1 poll()函數(shù) 263
9.5.2 ppoll()函數(shù) 264
9.6 非阻塞編程 264
9.6.1 非阻塞方式程序設(shè)計(jì)介紹 264
9.6.2 非阻塞程序設(shè)計(jì)的例子 264
9.7 小結(jié) 266
第10章 基于UDP協(xié)議的接收和發(fā)送 267
10.1 UDP編程框架 267
10.1.1 UDP編程框圖 267
10.1.2 UDP服務(wù)器編程框架 269
10.1.3 UDP客戶端編程框架 269
10.2 UDP協(xié)議程序設(shè)計(jì)的常用函數(shù) 270
10.2.1 建立套接字socket()和綁定套接字bind() 270
10.2.2 接收數(shù)據(jù)recvfrom()/recv() 270
10.2.3 發(fā)送數(shù)據(jù)sendto()/send() 275
10.3 UDP接收和發(fā)送數(shù)據(jù)的例子 279
10.3.1 UDP服務(wù)器端 279
10.3.2 UDP服務(wù)器端數(shù)據(jù)處理 280
10.3.3 UDP客戶端 281
10.3.4 UDP客戶端數(shù)據(jù)處理 281
10.3.5 測(cè)試UDP程序 282
10.4 UDP協(xié)議程序設(shè)計(jì)中的幾個(gè)問(wèn)題 282
10.4.1 UDP報(bào)文丟失數(shù)據(jù) 282
10.4.2 UDP數(shù)據(jù)發(fā)送中的亂序 284
10.4.3 UDP協(xié)議中的connect()函數(shù) 287
10.4.4 UDP缺乏流量控制 287
10.4.5 UDP協(xié)議中的外出網(wǎng)絡(luò)接口 289
10.4.6 UDP協(xié)議中的數(shù)據(jù)報(bào)文截?cái)?290
10.5 小結(jié) 291
第11章 高級(jí)套接字 292
11.1 UNIX域函數(shù) 292
11.1.1 UNIX域函數(shù)的地址結(jié)構(gòu) 292
11.1.2 套接字函數(shù) 293
11.1.3 使用UNIX域函數(shù)進(jìn)行套接字編程 293
11.1.4 傳遞文件描述符 296
11.1.5 socketpair()函數(shù) 296
11.1.6 傳遞文件描述符的例子 297
11.2 廣播 302
11.2.1 廣播的IP地址 302
11.2.2 廣播與單播的比較 303
11.2.3 廣播的示例 304
11.3 多播 310
11.3.1 多播的概念 310
11.3.2 廣域網(wǎng)的多播 311
11.3.3 多播的編程 311
11.3.4 內(nèi)核中的多播 313
11.3.5 一個(gè)多播例子的服務(wù)器端 317
11.3.6 一個(gè)多播例子的客戶端 318
11.4 數(shù)據(jù)鏈路層訪問(wèn) 319
11.4.1 SOCK_PACKET類(lèi)型 319
11.4.2 設(shè)置套接口以捕獲鏈路幀的編程方法 320
11.4.3 從套接口讀取鏈路幀的編程方法 321
11.4.4 定位IP包頭的編程方法 322
11.4.5 定位TCP報(bào)頭的編程方法 323
11.4.6 定位UDP報(bào)頭的編程方法 325
11.4.7 定位應(yīng)用層報(bào)文數(shù)據(jù)的編程方法 326
11.4.8 使用SOCK_PACKET編寫(xiě)ARP請(qǐng)求程序的例子 326
11.5 小結(jié) 329
第12章 套接字選項(xiàng) 330
12.1 獲取和設(shè)置套接字選項(xiàng)getsocketopt()/setsocketopt() 330
12.1.1 getsockopt()函數(shù)和setsocketopt()函數(shù)的介紹 330
12.1.2 套接字選項(xiàng) 331
12.1.3 套接字選項(xiàng)簡(jiǎn)單示例 332
12.2 SOL_SOCKET協(xié)議族選項(xiàng) 336
12.2.1 SO_BROADCAST廣播選項(xiàng) 336
12.2.2 SO_DEBUG調(diào)試選項(xiàng) 337
12.2.3 SO_DONTROUTE不經(jīng)過(guò)路由選項(xiàng) 337
12.2.4 SO_ERROR錯(cuò)誤選項(xiàng) 338
12.2.5 SO_KEEPALIVE保持連接選項(xiàng) 338
12.2.6 SO_LINGER緩沖區(qū)處理方式選項(xiàng) 339
12.2.7 SO_OOBINLINE帶外數(shù)據(jù)處理方式選項(xiàng) 342
12.2.8 SO_RCVBUF和SO_SNDBUF緩沖區(qū)大小選項(xiàng) 342
12.2.9 SO_RCVLOWAT和SO_SNDLOWAT緩沖區(qū)下限選項(xiàng) 343
12.2.10 SO_RCVTIMEO和SO_SNDTIMEO收發(fā)超時(shí)選項(xiàng) 343
12.2.11 SO_REUSERADDR地址重用選項(xiàng) 344
12.2.12 SO_EXCLUSIVEADDRUSE端口獨(dú)占選項(xiàng) 344
12.2.13 SO_TYPE套接字類(lèi)型選項(xiàng) 345
12.2.14 SO_BSDCOMPAT與BSD套接字兼容選項(xiàng) 345
12.2.15 SO_BINDTODEVICE套接字網(wǎng)絡(luò)接口綁定選項(xiàng) 345
12.2.16 SO_PRIORITY套接字優(yōu)先級(jí)選項(xiàng) 346
12.3 IPPROTO_IP選項(xiàng) 347
12.3.1 IP_HDRINCL選項(xiàng) 347
12.3.2 IP_OPTNIOS選項(xiàng) 347
12.3.3 IP_TOS選項(xiàng) 347
12.3.4 IP_TTL選項(xiàng) 347
12.4 IPPROTO_TCP選項(xiàng) 348
12.4.1 TCP_KEEPALIVE選項(xiàng) 348
12.4.2 TCP_MAXRT選項(xiàng) 348
12.4.3 TCP_MAXSEG選項(xiàng) 349
12.4.4 TCP_NODELAY和TCP_CORK選項(xiàng) 349
12.5 使用套接字選項(xiàng) 351
12.5.1 設(shè)置和獲取緩沖區(qū)大小 351
12.5.2 獲取套接字類(lèi)型的例子 355
12.5.3 使用套接字選項(xiàng)的綜合例子 356
12.6 ioctl()函數(shù) 361
12.6.1 ioctl()函數(shù)的命令選項(xiàng) 361
12.6.2 ioctl()函數(shù)的IO請(qǐng)求 363
12.6.3 ioctl()函數(shù)的文件請(qǐng)求 365
12.6.4 ioctl()函數(shù)的網(wǎng)絡(luò)接口請(qǐng)求 365
12.6.5 使用ioctl()函數(shù)對(duì)ARP高速緩存操作 372
12.6.6 使用ioctl()函數(shù)發(fā)送路由表請(qǐng)求 374
12.7 fcntl()函數(shù) 374
12.7.1 fcntl()函數(shù)的選項(xiàng) 375
12.7.2 使用fcntl()函數(shù)修改套接字非阻塞屬性 375
12.7.3 使用fcntl()函數(shù)設(shè)置信號(hào)屬主 376
12.8 小結(jié) 376
第13章 原始套接字 377
13.1 概述 377
13.2 原始套接字的創(chuàng)建 379
13.2.1 SOCK_RAW選項(xiàng) 379
13.2.2 IP_HDRINCL套接字選項(xiàng) 379
13.2.3 不需要bind()函數(shù) 380
13.3 原始套接字發(fā)送報(bào)文 380
13.4 原始套接字接收?qǐng)?bào)文 380
13.5 原始套接字報(bào)文處理時(shí)的結(jié)構(gòu) 381
13.5.1 IP頭部的結(jié)構(gòu) 381
13.5.2 ICMP頭部結(jié)構(gòu) 382
13.5.3 UDP頭部結(jié)構(gòu) 384
13.5.4 TCP頭部結(jié)構(gòu) 386
13.6 ping的例子 387
13.6.1 協(xié)議格式 388
13.6.2 校驗(yàn)和函數(shù) 389
13.6.3 設(shè)置ICMP發(fā)送報(bào)文的頭部 390
13.6.4 剝離ICMP接受報(bào)文的頭部 391
13.6.5 計(jì)算時(shí)間差 392
13.6.6 發(fā)送報(bào)文 393
13.6.7 接收?qǐng)?bào)文 394
13.6.8 主函數(shù)過(guò)程 395
13.6.9 主函數(shù)main() 397
13.6.10 編譯測(cè)試 400
13.7 洪水攻擊 400
13.8 ICMP洪水攻擊 401
13.8.1 ICMP洪水攻擊的原理 401
13.8.2 ICMP洪水攻擊的例子 401
13.9 UDP洪水攻擊 405
13.10 SYN洪水攻擊 409
13.10.1 SYN洪水攻擊的原理 409
13.10.2 SYN洪水攻擊的例子 409
13.11 小結(jié) 413
第14章 服務(wù)器模型選擇 414
14.1 循環(huán)服務(wù)器 414
14.1.1 UDP循環(huán)服務(wù)器 414
14.1.2 TCP循環(huán)服務(wù)器 417
14.2 簡(jiǎn)單并發(fā)服務(wù)器 420
14.2.1 并發(fā)服務(wù)器的模型 420
14.2.2 UDP并發(fā)服務(wù)器 420
14.2.3 TCP并發(fā)服務(wù)器 423
14.3 TCP的高級(jí)并發(fā)服務(wù)器模型 426
14.3.1 單客戶端單進(jìn)程,統(tǒng)一accept() 426
14.3.2 單客戶端單線程,統(tǒng)一accept() 429
14.3.3 單客戶端單線程,各線程獨(dú)自accept(),使用互斥鎖 431
14.4 IO復(fù)用循環(huán)服務(wù)器 435
14.4.1 IO復(fù)用循環(huán)服務(wù)器模型介紹 435
14.4.2 IO復(fù)用循環(huán)服務(wù)器模型的例子 436
14.5 小結(jié) 440
第15章 IPv6簡(jiǎn)介 441
15.1 IPv4的缺陷 441
15.2 IPv6的特點(diǎn) 442
15.3 IPv6的地址 443
15.3.1 IPv6的單播地址 443
15.3.2 可聚集全球單播地址 443
15.3.3 本地使用單播地址 444
15.3.4 兼容性地址 445
15.3.5 IPv6多播地址 446
15.3.6 IPv6任播地址 446
15.3.7 主機(jī)的多個(gè)IPv6地址 447
15.4 IPv6的頭部 447
15.4.1 IPv6頭部格式 447
15.4.2 與IPv4頭部的對(duì)比 448
15.4.3 IPv6的TCP頭部 449
15.4.4 IPv6的UDP頭部 449
15.4.5 IPv6的ICMP頭部 449
15.5 IPv6運(yùn)行環(huán)境 451
15.5.1 加載IPv6模塊 451
15.5.2 查看是否支持IPv6 452
15.6 IPv6的結(jié)構(gòu)定義 453
15.6.1 IPv6的地址族和協(xié)議族 453
15.6.2 套接字地址結(jié)構(gòu) 453
15.6.3 地址兼容考慮 455
15.6.4 IPv6通用地址 455
15.7 IPv6的套接字函數(shù) 456
15.7.1 socket()函數(shù) 456
15.7.2 沒(méi)有發(fā)生改變的函數(shù) 456
15.7.3 發(fā)生改變的函數(shù) 457
15.8 IPv6的套接字選項(xiàng) 457
15.8.1 IPv6的套接字選項(xiàng) 457
15.8.2 單播跳限IPV6_UNICAST_HOPS 459
15.8.3 發(fā)送和接收多播包 459
15.8.4 IPv6中獲得時(shí)間戳的ioctl命令 460
15.9 IPv6的庫(kù)函數(shù) 460
15.9.1 地址轉(zhuǎn)換函數(shù)的差異 460
15.9.2 域名解析函數(shù)的差異 461
15.9.3 測(cè)試宏 463
15.10 IPv6的編程的一個(gè)簡(jiǎn)單例子 463
15.10.1 服務(wù)器程序 464
15.10.2 客戶端程序 465
15.10.3 編譯調(diào)試 467
15.11 小結(jié) 467
第3篇 Linux內(nèi)核網(wǎng)絡(luò)編程
第16章 Linux內(nèi)核中網(wǎng)絡(luò)部分結(jié)構(gòu)以及分布 470
16.1 概述 470
16.1.1 代碼目錄分布 470
16.1.2 內(nèi)核中網(wǎng)絡(luò)部分流程簡(jiǎn)介 472
16.1.3 系統(tǒng)提供修改網(wǎng)絡(luò)流程點(diǎn) 474
16.1.4 sk_buff結(jié)構(gòu) 475
16.1.5 網(wǎng)絡(luò)協(xié)議數(shù)據(jù)結(jié)構(gòu)inet_protosw 478
16.2 軟中斷CPU報(bào)文隊(duì)列及其處理 479
16.2.1 Linux內(nèi)核網(wǎng)絡(luò)協(xié)議層的層間傳遞手段——軟中斷 479
16.2.2 網(wǎng)絡(luò)收發(fā)處理軟中斷的實(shí)現(xiàn)機(jī)制 481
16.3 socket數(shù)據(jù)如何在內(nèi)核中接收和發(fā)送 482
16.3.1 socket()的初始化 482
16.3.2 接收網(wǎng)絡(luò)數(shù)據(jù)recv() 482
16.3.3 發(fā)送網(wǎng)絡(luò)數(shù)據(jù)send() 483
16.4 小結(jié) 484
第17章 netfilter框架內(nèi)報(bào)文處理 485
17.1 netfilter 485
17.1.1 netfilter簡(jiǎn)介 485
17.1.2 netfilter框架 486
17.1.3 netfilter檢查時(shí)的表格 487
17.1.4 netfilter的規(guī)則 487
17.2 iptables和netfilter 488
17.2.1 iptables簡(jiǎn)介 488
17.2.2 iptables的表和鏈 488
17.2.3 使用iptables設(shè)置過(guò)濾規(guī)則 489
17.3 內(nèi)核模塊編程 492
17.3.1 內(nèi)核“Hello,World!”程序 492
17.3.2 內(nèi)核模塊的基本架構(gòu) 494
17.3.3 內(nèi)核模塊加載和卸載過(guò)程 496
17.3.4 內(nèi)核模塊初始化和清理函數(shù) 497
17.3.5 內(nèi)核模塊初始化和清理過(guò)程的容錯(cuò)處理 497
17.3.6 內(nèi)核模塊編譯所需的Makefile 498
17.4 5個(gè)鉤子點(diǎn) 499
17.4.1 netfilter的5個(gè)鉤子點(diǎn) 499
17.4.2 NF_HOOK宏 500
17.4.3 鉤子的處理規(guī)則 501
17.5 注冊(cè)/注銷(xiāo)鉤子 502
17.5.1 結(jié)構(gòu)nf_hook_ops 502
17.5.2 注冊(cè)鉤子 503
17.5.3 注銷(xiāo)鉤子 504
17.5.4 注冊(cè)注銷(xiāo)函數(shù) 504
17.6 鉤子的簡(jiǎn)單處理例子 505
17.6.1 功能描述 505
17.6.2 需求分析 506
17.6.3 ping回顯屏蔽實(shí)現(xiàn) 506
17.6.4 禁止向目的IP地址發(fā)送數(shù)據(jù)的實(shí)現(xiàn) 506
17.6.5 端口關(guān)閉實(shí)現(xiàn) 506
17.6.6 動(dòng)態(tài)配置實(shí)現(xiàn) 508
17.6.7 可加載內(nèi)核實(shí)現(xiàn)代碼 509
17.6.8 應(yīng)用層測(cè)試代碼實(shí)現(xiàn) 516
17.6.9 編譯運(yùn)行 516
17.7 一點(diǎn)多個(gè)鉤子的優(yōu)先級(jí) 517
17.8 校驗(yàn)和問(wèn)題 518
17.9 小結(jié) 518
第4篇 綜 合 案 例
第18章 一個(gè)簡(jiǎn)單Web服務(wù)器的例子SHTTPD 522
18.1 SHTTPD的需求分析 522
18.1.1 SHTTPD啟動(dòng)參數(shù)可動(dòng)態(tài)配置的需求 523
18.1.2 SHTTPD的多客戶端支持的需求 524
18.1.3 SHTTPD支持方法的需求 525
18.1.4 SHTTPD支持的HTTP協(xié)議版本的需求 526
18.1.5 SHTTPD支持頭部的需求 527
18.1.6 SHTTPD定位URI的需求 527
18.1.7 SHTTPD支持CGI的需求 528
18.1.8 SHTTPD錯(cuò)誤代碼的需求 529
18.2 SHTTPD的模塊分析和設(shè)計(jì) 530
18.2.1 SHTTPD的主函數(shù) 530
18.2.2 SHTTPD命令行解析的分析設(shè)計(jì) 531
18.2.3 SHTTPD配置文件解析的分析設(shè)計(jì) 532
18.2.4 SHTTPD的多客戶端支持的分析設(shè)計(jì) 534
18.2.5 SHTTPD頭部解析的分析設(shè)計(jì) 536
18.2.6 SHTTPD對(duì)URI的分析設(shè)計(jì) 537
18.2.7 SHTTPD支持方法的分析設(shè)計(jì) 537
18.2.8 SHTTPD支持CGI的分析設(shè)計(jì) 538
18.2.9 SHTTPD錯(cuò)誤處理的分析設(shè)計(jì) 540
18.3 SHTTPD各模塊的實(shí)現(xiàn) 542
18.3.1 SHTTPD命令行解析的實(shí)現(xiàn) 543
18.3.2 SHTTPD文件配置解析的實(shí)現(xiàn) 545
18.3.3 SHTTPD的多客戶端支持的實(shí)現(xiàn) 547
18.3.4 SHTTPD所請(qǐng)求URI解析的實(shí)現(xiàn) 551
18.3.5 SHTTPD方法解析的實(shí)現(xiàn) 552
18.3.6 SHTTPD響應(yīng)方法的實(shí)現(xiàn) 552
18.3.7 SHTTPD支持CGI的實(shí)現(xiàn) 556
18.3.8 SHTTPD支持HTTP協(xié)議版本的實(shí)現(xiàn) 559
18.3.9 SHTTPD內(nèi)容類(lèi)型的實(shí)現(xiàn) 559
18.3.10 SHTTPD錯(cuò)誤處理的實(shí)現(xiàn) 561
18.3.11 SHTTPD生成目錄下文件列表文件的實(shí)現(xiàn) 563
18.3.12 SHTTPD主函數(shù)的實(shí)現(xiàn) 565
18.4 SHTTPD的編譯、調(diào)試和測(cè)試 566
18.4.1 建立源文件 566
18.4.2 制作Makefile 566
18.4.3 制作執(zhí)行文件 567
18.4.4 使用不同的瀏覽器測(cè)試服務(wù)器程序 567
18.5 小結(jié) 568
第19章 一個(gè)簡(jiǎn)單網(wǎng)絡(luò)協(xié)議棧的例子SIP 569
19.1 SIP網(wǎng)絡(luò)協(xié)議棧的功能描述 569
19.1.1 SIP網(wǎng)絡(luò)協(xié)議棧的基本功能描述 570
19.1.2 SIP網(wǎng)絡(luò)協(xié)議棧的分層功能描述 570
19.1.3 SIP網(wǎng)絡(luò)協(xié)議棧的用戶接口功能描述 571
19.2 SIP網(wǎng)絡(luò)協(xié)議棧的架構(gòu) 571
19.3 SIP網(wǎng)絡(luò)協(xié)議棧的存儲(chǔ)區(qū)緩存 572
19.3.1 SIP存儲(chǔ)緩沖的結(jié)構(gòu)定義 573
19.3.2 SIP存儲(chǔ)緩沖的處理函數(shù) 577
19.4 SIP網(wǎng)絡(luò)協(xié)議棧的網(wǎng)絡(luò)接口層 579
19.4.1 SIP網(wǎng)絡(luò)接口層的架構(gòu) 579
19.4.2 SIP網(wǎng)絡(luò)接口層的數(shù)據(jù)結(jié)構(gòu) 580
19.4.3 SIP網(wǎng)絡(luò)接口層的初始化函數(shù) 581
19.4.4 SIP網(wǎng)絡(luò)接口層的輸入函數(shù) 583
19.4.5 SIP網(wǎng)絡(luò)接口層的輸出函數(shù) 586
19.5 SIP網(wǎng)絡(luò)協(xié)議棧的ARP層 588
19.5.1 SIP地址解析層的架構(gòu) 588
19.5.2 SIP地址解析層的數(shù)據(jù)結(jié)構(gòu) 588
19.5.3 SIP地址解析層的映射表 590
19.5.4 SIP地址解析層的ARP映射表維護(hù)函數(shù) 591
19.5.5 SIP地址解析層的ARP網(wǎng)絡(luò)報(bào)文構(gòu)建函數(shù) 593
19.5.6 SIP地址解析層的ARP網(wǎng)絡(luò)報(bào)文收發(fā)處理函數(shù) 595
19.6 SIP網(wǎng)絡(luò)協(xié)議棧的IP層 598
19.6.1 SIP網(wǎng)際協(xié)議層的架構(gòu) 598
19.6.2 SIP網(wǎng)際協(xié)議層的數(shù)據(jù)結(jié)構(gòu) 599
19.6.3 SIP網(wǎng)際協(xié)議層的輸入函數(shù) 601
19.6.4 SIP網(wǎng)際協(xié)議層的輸出函數(shù) 605
19.6.5 SIP網(wǎng)際協(xié)議層的分片函數(shù) 606
19.6.6 SIP網(wǎng)際協(xié)議層的分片組裝函數(shù) 607
19.7 SIP網(wǎng)絡(luò)協(xié)議棧的ICMP層 611
19.7.1 SIP控制報(bào)文協(xié)議的數(shù)據(jù)結(jié)構(gòu) 611
19.7.2 SIP控制報(bào)文協(xié)議的協(xié)議支持 612
19.7.3 SIP控制報(bào)文協(xié)議的輸入函數(shù) 613
19.7.4 SIP控制報(bào)文協(xié)議的回顯應(yīng)答函數(shù) 614
19.8 SIP網(wǎng)絡(luò)協(xié)議棧的UDP層 615
19.8.1 SIP數(shù)據(jù)報(bào)文層的數(shù)據(jù)結(jié)構(gòu) 615
19.8.2 SIP數(shù)據(jù)報(bào)文層的控制單元 615
19.8.3 SIP數(shù)據(jù)報(bào)文層的輸入函數(shù) 617
19.8.4 SIP數(shù)據(jù)報(bào)文層的輸出函數(shù) 618
19.8.5 SIP數(shù)據(jù)報(bào)文層的建立函數(shù) 618
19.8.6 SIP數(shù)據(jù)報(bào)文層的釋放函數(shù) 619
19.8.7 SIP數(shù)據(jù)報(bào)文層的綁定函數(shù) 620
19.8.8 SIP數(shù)據(jù)報(bào)文層的發(fā)送數(shù)據(jù)函數(shù) 621
19.8.9 SIP數(shù)據(jù)報(bào)文層的校驗(yàn)和計(jì)算 622
19.9 SIP網(wǎng)絡(luò)協(xié)議棧的協(xié)議無(wú)關(guān)層 623
19.9.1 SIP協(xié)議無(wú)關(guān)層的系統(tǒng)架構(gòu) 623
19.9.2 SIP協(xié)議無(wú)關(guān)層的函數(shù)形式 624
19.9.3 SIP協(xié)議無(wú)關(guān)層的接收數(shù)據(jù)函數(shù) 624
19.10 SIP網(wǎng)絡(luò)協(xié)議棧的BSD接口層 625
19.10.1 SIP用戶接口層的架構(gòu) 625
19.10.2 SIP用戶接口層的套接字建立函數(shù) 626
19.10.3 SIP用戶接口層的套接字關(guān)閉函數(shù) 627
19.10.4 SIP用戶接口層的套接字綁定函數(shù) 627
19.10.5 SIP用戶接口層的套接字連接函數(shù) 628
19.10.6 SIP用戶接口層的套接字接收數(shù)據(jù)函數(shù) 628
19.10.7 SIP用戶接口層的發(fā)送數(shù)據(jù)函數(shù) 629
19.11 SIP網(wǎng)絡(luò)協(xié)議棧的編譯 630
19.11.1 SIP的文件結(jié)構(gòu) 630
19.11.2 SIP的Makefile 631
19.11.3 SIP的編譯運(yùn)行 631
19.12 小結(jié) 631
第20章 一個(gè)簡(jiǎn)單防火墻的例子SIPFW 633
20.1 SIPFW防火墻的功能描述 633
20.1.1 SIPFW防火墻對(duì)主機(jī)進(jìn)行網(wǎng)絡(luò)數(shù)據(jù)過(guò)濾的功能描述 633
20.1.2 SIPFW防火墻用戶設(shè)置防火墻規(guī)則的功能描述 634
20.1.3 SIPFW防火墻配置文件等附加功能的功能描述 634
20.2 SIPFW需求分析 634
20.2.1 SIPFW防火墻條件和動(dòng)作 635
20.2.2 SIPFW防火墻支持過(guò)濾的類(lèi)型和內(nèi)容 635
20.2.3 SIPFW防火墻過(guò)濾的方式和動(dòng)作 638
20.2.4 SIPFW防火墻的配置文件 640
20.2.5 SIPFW防火墻命令行配置格式 640
20.2.6 SIPFW防火墻的規(guī)則文件格式 642
20.2.7 SIPFW防火墻的日志文件數(shù)據(jù)格式 643
20.2.8 SIPFW防火墻構(gòu)建所采用的技術(shù)方案 644
20.3 使用netlink進(jìn)行用戶空間和內(nèi)核空間數(shù)據(jù)交互 645
20.3.1 netlink的用戶空間程序設(shè)計(jì) 645
20.3.2 netlink的內(nèi)核空間API 648
20.4 使用proc進(jìn)行內(nèi)存數(shù)據(jù)用戶空間映射 650
20.4.1 proc虛擬文件系統(tǒng)的結(jié)構(gòu) 650
20.4.2 創(chuàng)建proc虛擬文件 651
20.4.3 刪除proc虛擬文件 652
20.4.4 proc文件的寫(xiě)函數(shù) 652
20.4.5 proc文件的讀函數(shù) 653
20.5 內(nèi)核空間的文件操作函數(shù) 654
20.5.1 內(nèi)核空間的文件結(jié)構(gòu) 654
20.5.2 內(nèi)核空間的文件建立操作 655
20.5.3 內(nèi)核空間的文件讀寫(xiě)操作 656
20.5.4 內(nèi)核空間的文件關(guān)閉操作 657
20.6 SIPFW防火墻的模塊分析和設(shè)計(jì) 657
20.6.1 SIPFW防火墻的總體架構(gòu) 657
20.6.2 SIPFW防火墻的用戶命令解析 660
20.6.3 SIPFW用戶空間與內(nèi)核空間的交互 663
20.6.4 SIPFW防火墻內(nèi)核鏈上的規(guī)則處理 666
20.6.5 SIPFW防火墻的PROC虛擬文件系統(tǒng) 668
20.6.6 SIPFW防火墻的配置文件和日志文件處理 669
20.6.7 SIPFW防火墻的過(guò)濾模塊設(shè)計(jì) 671
20.7 SIPFW防火墻各功能模塊的實(shí)現(xiàn) 673
20.7.1 SIPFW防火墻的命令解析代碼 674
20.7.2 SIPFW防火墻的過(guò)濾規(guī)則解析模塊代碼 678
20.7.3 SIPFW防火墻的網(wǎng)絡(luò)數(shù)據(jù)攔截模塊代碼 680
20.7.4 SIPFW防火墻的PROC虛擬文件系統(tǒng) 681
20.7.5 SIPFW防火墻對(duì)配置文件的解析 683
20.7.6 SIPFW防火墻內(nèi)核模塊初始化和退出 684
20.7.7 用戶空間處理主函數(shù) 685
20.8 編譯、調(diào)試和測(cè)試 686
20.8.1 用戶程序和內(nèi)核程序的Makefile 686
20.8.2 編譯及運(yùn)行 687
20.8.3 下發(fā)過(guò)濾規(guī)則,測(cè)試過(guò)濾結(jié)果 688
20.9 小結(jié) 690

本目錄推薦

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