Linux/UNIX網絡編程
-
【作 者】甘剛 主編
【I S B N 】978-7-5084-5467-2
【責任編輯】張玉玲
【適用讀者群】本科
【出版時間】2008-07-01
【開 本】16開本
【裝幀信息】平裝(光膜)
【版 次】2008年07月第1版
【頁 數】248
【千字數】
【印 張】
【定 價】¥26
【叢 書】21世紀高職高專計算機科學規劃教材
【備注信息】
簡介
本書特色
前言
章節列表
精彩閱讀
下載資源
相關圖書
本書詳細介紹了在Unix系統下基于TCP/IP網絡套接口的基本編程方法,包括迭代與并發服務器編寫方法、進程與線程編程技術、I/O編程技術、IPv4與IPv6的兼容性、原始套接口、數據鏈路訪問技術、廣播與多播技術等。為滿足教學實際需要,在本書最后一章,給出了Socket基本編程、服務器與單客戶的連接處理、多進程服務器模板、多線程編寫模板、線程專用數據TSD實現模板等5個實驗指導。在本書編寫過程中,編著者參閱了國內外同類書籍及各類報刊雜志,將精華思想應用到教學實踐中,形成的教學成果與體會反映在書中。在書中相關章節,編者都至少列舉一個完整的例子來說明問題,學習者將書中的基礎實驗做好,再通過相關章節中的實驗進行驗證,就可以學習高級Linux/UNIX編程了。
本書在編寫上力求由簡到繁、由淺入深和循序漸進,讀者不但可以學會程序設計的基本知識、設計思想和方法,還可以學會網絡程序設計的通用方法與步驟。本書適合作為高等院校計算機及相關專業學生的教材,也可作為廣大計算機愛好者、網絡研究人員和網絡程序開發人員的自學參考書。
隨著Internet的快速發展,使用UNIX和Linux作為服務器主機的系統越來越多,而因為這種操作系統的穩定性和安全性,也使得基于UNIX和Linux的應用服務越來越多。掌握基于UNIX和Linux環境的編程技術,已成為相關網絡管理人員、網絡應用程序開發人員和網絡安全保障人員的必備技能。
本書特點:
本書在編寫上力求由簡到繁、由淺入深和循序漸進,讀者不但可以學會程序設計的基本知識、設計思想和方法,還可以學會網絡程序設計的通用方法與步驟。
本書中的每個知識點都是以簡短的篇幅介紹其中最基本、最常用的內容。通過精心設計的一些編程實例,介紹程序設計的基本方法,避免枯燥和空洞,在不知不覺中使讀者學會UNIX/Linux環境中的編程技術,從而激發讀者對網絡編程的興趣。
本書內容安排:
本書詳細介紹了在UNIX/Linux系統下基于TCP/IP網絡套接口的基本編程方法,包括迭代與并發服務器編寫方法、進程與線程編程技術、I/O編程技術、IPv4與IPv6的兼容性、原始套接口、數據鏈路訪問技術、廣播與多播技術等。本書每章后面都附有豐富的理論鞏固題和上機實踐題,有助于讀者復習、鞏固所學知識,以培養讀者的實際編程能力。
此外,為滿足教學中的實際需要,在本書最后一章還給出了Socket基本編程、服務器與單客戶的連接處理、多進程服務器模板、多線程編寫模板和線程專用數據TSD實現模板5個實驗指導。
書中所用到的函數都是標準函數,可以在UNIX/Linux系統上運行,所有實例程序都已在UNIX/Linux中調試通過。
本書適用對象:
大中專院校相關專業學生。
高等職業技術院校相關專業學生。
計算機培訓教師和學員。
計算機愛好者和相關技術人員。
在本書中,“注意”中所列的內容為學員容易混淆而在授課時教師需要特別澄清的概念和問題,“提示”中所列的內容是對實際操作有幫助的一些經驗性的方法和技巧。
本書由甘剛任主編,閆麗麗、盛志偉參編。另外,參與本書部分章節編寫的還有:文黎敏、王治國、馮強、曾德惠、許慶華、程亮、周聰、黃志平、胡松、邢永峰、邵軍、邊海龍、劉達因、趙婷、馬鴻娟、侯桐、趙光明、李勝、李輝、侯杰、王紅研、王磊、閆守紅、康涌泉、李歡、蔣杼倩、王小東、張森、張正亮、宋利梅、何群芬、程瑤,在此向他們表示衷心的感謝。
由于作者水平所限,加之網絡技術發展迅速,本教材的覆蓋面廣,書中錯誤和不妥之處在所難免,懇請廣大讀者批評指證。我們的聯系方式:china_54@tom.com。
前言
第1章 TCP/IP簡介 1
1.1 概述 1
1.1.1 基本的C/S服務模型 1
1.1.2 OSI模型和TCP/IP四層結構 2
1.2 IP協議介紹 3
1.2.1 IP數據報的格式 3
1.2.2 IP地址 4
1.2.3 子網掩碼(subnet mask) 5
1.3 TCP協議介紹 6
1.3.1 TCP連接的建立與終止 7
1.3.2 TCP狀態轉換圖 8
1.4 UDP協議 10
1.5 端口號 10
1.6 本章小結 10
1.7 實戰檢驗 11
理論鞏固 11
第2章 套接字編程簡介 12
2.1 套接字基礎 12
2.2 套接字的類型 13
2.3 套接字地址結構 13
2.3.1 IPv4套接字地址結構 13
2.3.2 IPv6套接字地址結構 14
2.3.3 兩種套接字地址結構的比較 15
2.3.4 通用套接字地址結構 15
2.4 套接字基本函數 16
2.4.1 字節排序函數 16
2.4.2 字節操縱函數 17
2.4.3 IP地址轉換函數 17
2.4.4 isfdtype()函數 19
2.5 值-結果參數 19
2.6 本章小結 20
2.7 實戰檢驗 20
理論鞏固 20
上機實戰 21
第3章 基本TCP套接字編程 22
3.1 TCP套接字編程 22
3.1.1 socket()函數 23
3.1.2 connect()函數 24
3.1.3 bind()函數 25
3.1.4 listen()函數 27
3.1.5 accept()函數 28
3.1.6 數據傳輸函數 29
3.1.7 close()函數 31
3.2 TCP套接字編程實例 31
3.3 服務器的3種異常情況 35
3.3.1 服務器主機崩潰 36
3.3.2 服務器主機崩潰后重啟 36
3.3.3 服務器主機關閉 37
3.4 本章小結 37
3.5 實戰檢驗 38
理論鞏固 38
上機實戰 38
第4章 基本UDP套接口編程 39
4.1 UDP套接字編程 39
4.1.1 recvfrom()函數 40
4.1.2 sendto函數 41
4.2 UDP套接字編程實例 42
4.3 UDP中對數據報的各項處理 46
4.3.1 數據報的丟失 46
4.3.2 驗證收到的響應 46
4.3.3 服務器進程未運行 47
4.4 connect函數用于UDP 47
4.5 本章小結 48
4.6 實戰檢驗 49
理論鞏固 49
上機實戰 49
第5章 并發服務器 50
5.1 服務器的分類 50
5.2 多進程并發服務器 51
5.2.1 進程基礎 51
5.2.2 進程創建 51
5.2.3 進程終止 54
5.2.4 多進程并發服務器 56
5.2.5 多進程并發服務器實例 57
5.3 多線程服務器 63
5.3.1 線程基礎 64
5.3.2 線程基礎函數 64
5.3.3 給新線程傳遞參數 66
5.3.4 多線程并發服務器實例 68
5.3.5 線程安全函數 72
5.3.6 線程安全實例 77
5.3.7 用函數參變量實現線程安全性 82
5.4 本章小結 85
5.5 實戰檢驗 86
理論鞏固 86
上機實戰 86
第6章 名字與地址轉換編程 87
6.1 概述 87
6.2 域名系統 87
6.3 gethostbyname()函數 88
6.4 RES_USE_INET6解析器選項 91
6.5 gethostbyname2函數對IPv6的支持 91
6.6 gethostbyaddr()函數 93
6.7 uname()函數 93
6.8 gethostname函數 94
6.9 getservbyname和getservbyport函數 95
6.10 getaddrinfo、gai_strerror和host_serv函數 96
6.11 freeaddrinfo函數 99
6.12 使用getaddrinfo的TCP和UDP 100
6.13 getnameinfo函數 105
6.14 gethostbyaddr實例 105
6.15 本章小結 106
6.16 實戰檢驗 107
理論鞏固 107
上機實戰 107
第7章 IPv4和IPv6編程 108
7.1 IPv4客戶與IPv6服務器 108
7.2 IPv6客戶與IPv4服務器 110
7.3 IPv6_ADDRFORM套接口選項 111
7.4 IPv6地址測試宏 112
7.5 源代碼的可移植性 112
7.6 本章小結 113
7.7 實戰檢驗 113
理論鞏固 113
上機實戰 113
第8章 守護進程和inetd超級服務器 114
8.1 守護進程的原理 114
8.1.1 啟動守護進程 114
8.1.2 輸出守護進程消息 115
8.1.3 syslog函數 115
8.1.4 創建守護進程 118
8.1.5 以守護進程方式運行的時間服務器 119
8.2 inetd的工作原理 122
8.2.1 概念 122
8.2.2 工作流程 123
8.2.3 inetd處理并發 125
8.3 本章小結 125
8.4 實戰檢驗 126
理論鞏固 126
上機實戰 126
第9章 I/O編程 127
9.1 I/O模型 127
9.2 select函數 130
9.3 shutdown函數 132
9.4 poll函數 133
9.5 使用select函數的TCP例子 135
9.6 高級的I/O編程 140
9.6.1 recv和send函數 140
9.6.2 recvmsg和sendmsg函數 141
9.7 非阻塞connect 143
9.8 ioctl函數 145
9.8.1 套接口操作 146
9.8.2 文件操作 146
9.8.3 接口配置 146
9.8.4 接口操作 147
9.8.5 ARP操作 148
9.8.6 路由表操作 148
9.9 本章小結 148
9.10 實戰檢驗 149
理論鞏固 149
上機實戰 149
第10章 廣播與多播編程 150
10.1 廣播的概念 150
10.1.1 廣播的原理 150
10.1.2 廣播的示例 152
10.2 多播概念 155
10.2.1 多播與廣播的比較 155
10.2.2 多播套接口選項 156
10.2.3 多播的實例 157
10.3 本章小結 159
10.4 理論與鞏固 159
實戰檢驗 159
上機實戰 159
第11章 路由套接口編程 160
11.1 概念和數據鏈路套接口地址結構 160
11.2 sysctl操作 165
11.3 接口名和索引函數 166
11.4 本章小結 167
11.5 實戰檢驗 168
理論與鞏固 168
上機實戰 168
第12章 信號量編程 169
12.1 信號的概念 169
12.2 信號的概念及常見信號介紹 169
12.2.1 signal函數 173
12.2.2 處理SIGCHLD信號 174
12.2.3 wait和waitpid函數 175
12.2.4 kill和raise函數 177
12.2.5 SIGPIPE信號 178
12.2.6 alarm和pause函數 178
12.2.7 sigprocmask函數 179
12.2.8 sigpending函數 179
12.2.9 sigaction函數 179
12.2.10 sigsetjmp和siglongjmp函數 180
12.2.11 sigsuspend函數 180
12.2.12 abort函數 181
12.2.13 system函數 181
12.2.14 sleep函數 182
12.3 例子:使用SIGIO的UDP回射服務器程序 183
12.4 本章小結 188
12.5 實戰檢驗 188
理論鞏固 188
上機實戰 188
第13章 原始套接口與數據鏈路訪問編程 189
13.1 原始套接口創建 189
13.2 原始套接口輸出 190
13.3 原始套接口輸入 191
13.4 原始套接字編程實例 191
13.4.1 實例1:拒絕服務攻擊 191
13.4.2 實例2:ICMP包的構建、發送和接收 194
13.4.3 實例3:ping程序 197
13.5 數據鏈路層訪問 202
13.5.1 BPF:BSD分組過濾器 203
13.5.2 數據鏈路提供者DLPI 203
13.5.3 Linux的SOCK_PACKET 204
13.5.4 分組捕獲函數庫libpcap 204
13.5.5 libpcap的庫函數 205
13.5.6 數據鏈路層訪問實例 209
13.6 本章小結 213
13.7 理論與鞏固 214
實戰檢驗 214
上機實戰 214
第14章 實驗指導 215
14.1 Socket基本編程 215
14.2 服務器與單客戶的連接處理 218
14.3 多進程服務器模板 221
14.4 多線程編寫模板 226
14.5 線程專用數據TSD實現模板 230
參考文獻 236
- Linux操作系統基礎 [宋焱宏 張勇]
- Linux服務器構建與運維管理從基礎到實戰(基于CentOS 8實現) [阮曉龍 馮順磊 董凱倫 于冠軍]
- Linux服務器配置與管理項目教程(微課版) [趙良濤 姜猛 肖川 楊云]
- Linux操作系統配置與管理項目化教程 [主編 白玉羚 劉金明 王鵬]
- Linux服務器配置與安全管理 [李賀華 李騰]
- Linux操作系統基礎及實驗指導教程 [主編 黃衛東 張岳 史士英]
- Linux服務器配置與管理 [唐宏 楊智勇]
- 嵌入式Linux開發技術基礎 [主編 伍德雁]
- Linux網絡服務與Shell腳本攻略 [主編 肖睿 江駿]
- Linux系統管理 [主編 肖睿]
- Linux基礎及應用教程(第二版) [主編 梁建武]
- Linux系統與應用 [劉蘭青 王飛]
- Linux服務器配置與管理實訓教程 [伍技祥]
- Linux網絡服務器配置管理項目實訓教程(第二版) [楊云 運永順 和乾]
- Linux操作系統的應用與管理項目化教程 [鄒承俊 周洪林]
- Linux操作系統配置與管理 [嚴學軍 魯立]
- Linux/Android開發利器——ARM DS-5使用指南 [崔更申 秦興國]
- Visual C++網絡編程技術 [延霞]
- Windows網絡程序設計完全講義 [高守傳 周書鋒]
- Linux體系與編程——基于Linux 0.01版本 [主編 盧軍 曾茂城]
- Linux網絡服務器配置管理項目實訓教程 [楊云 馬立新 楊建新 編著]
- Linux操作系統應用與安全 [李賀華 主編]
- Linux基礎及應用教程實驗指導與實訓 [郭迎 梁建武 等主編]
- 游戲中的網絡編程技術及應用 [樊永慶 黃國榮 周濱航 等編著]
- Linux實用教程 [劉兵 吳煜煌 等編著]
- 操作系統原理及應用(Linux) [王紅 主編]
- 操作系統實訓(Linux)--習題解答、例題解析、實驗指導 [王紅 主編]
- Red Hat Enterprise Linux 5基礎教程 [王路群 主編]
- 操作系統原理及應用(Linux)(第二版) [王紅 主編]
- 操作系統實訓(Linux)--習題解答、例題解析、實驗指導(第二版) [王紅 主編]