內容簡介
《網路編程與分層協定設計:基於Linux平台實現》以Linux網路套接字編程和網路分層協定的設計與程式實現為主題,詳細介紹如何在Linux平台下進行套接字程式設計,並給出了一個基於分層協定的套用實例,用於模擬Linux網路協定棧中IP層的核心功能—IP報文的分段和重組過程。《網路編程與分層協定設計:基於Linux平台實現》旨在通過具有一定複雜度的套用,切實幫助讀者掌握網路協定分層的設計思想和程式實現方法。此外,《網路編程與分層協定設計:基於Linux平台實現》的許多程式示例直接使用了Linux的核心鍊表和散列鏈表,以及核心的其他數據結構和多執行緒等程式設計技巧,通過實際套用的形式有效地銜接了C語言、數據結構、作業系統、計算機網路和網路協定分析等課程的相關內容。
《網路編程與分層協定設計:基於Linux平台實現》可作為高等院校計算機、網路工程、通信工程等專業本科生與研究生“網路程式設計”課程的教材,也可作為相關領域工程技術人員的參考用書。
圖書目錄
前言
教學和閱讀建議
第1章 TCP/IP網路編程基礎1
1.1 網路和網路互聯1
1.1.1 ISO/OSI網路模型和TCP/IP協定棧1
1.1.2 IP位址和連線埠2
1.2 客戶端/伺服器編程模型3
1.2.1 循環式伺服器3
1.2.2 並髮式伺服器3
1.3 本章小結4
習題4
第2章 Linux下的C編程環境5
2.1 進程5
2.1.1 進程標識5
2.1.2 創建進程6
2.1.3 終止進程6
2.1.4僵死進程7
2.1.5 子進程退出的異步善後處理7
2.2 執行緒8
2.2.1 執行緒標識9
2.2.2 創建執行緒9
2.2.3 終止執行緒10
2.2.4 執行緒同步11
2.3 信號14
2.3.1 信號的概念14
2.3.2 常用信號及其含義14
2.3.3 信號集和信號掩碼15
2.3.4 信號處理16
2.3.5可重入函式18
2.4 時間20
2.4.1 時間表示21
2.4.2 獲得時間21
2.4.3 休眠時間22
2.4.4 間隔定時器23
2.5 檔案24
2.6 本章小結26
習題26
第3章 網路編程中常用的典型知識28
3.1 結構體大小的計算28
3.2 數據存儲與位元組序29
3.3 常用數據結構30
3.3.1 Linux鍊表30
3.3.2 Linux散列鍊表33
3.4 函式指針34
3.5 校驗和35
3.6 用戶態下多定時器的實現37
3.7 本章小結47
習題48
第4章 基礎套接字49
4.1 套接字基本概念49
4.1.1 創建套接字49
4.1.2 域和地址族50
4.1.3 套接字地址50
4.1.4 流式套接字和數據報套接字51
4.1.5 使用套接字51
4.1.6 套接字編程常用基本函式和數據類型55
4.1.7 客戶端/伺服器通信方式56
4.2 流式套接字客戶端/伺服器編程57
4.3並發流式套接字伺服器編程63
4.3.1 伺服器主進程67
4.3.2 伺服器子進程67
4.3.3 伺服器子進程終止67
4.4 數據報套接字客戶端/伺服器編程67
4.5 本章小結73
習題73
第5章 高級套接字75
5.1 套接字選項75
5.1.1GETSOCKOPT和setsockopt75
5.1.2 套接字通用選項示例76
5.2 I/O多路復用78
5.2.1 I/O多路復用模型79
5.2.2select函式79
5.2.3 檔案描述符集合的使用80
5.2.4 檔案描述符的可讀寫狀態82
5.2.5 最大檔案描述符個數82
5.2.6 select函式的套用82
5.3 非阻塞I/O90
5.3.1 非阻塞I/O模型90
5.3.2fcntl函式設定非阻塞模式91
5.3.3 非阻塞模式下的read和write92
5.3.4 非阻塞模式下的connect92
5.3.5 非阻塞模式下的accept93
5.4 信號驅動I/O94
5.4.1 信號驅動I/O模型94
5.4.2 設定套接字工作於信號驅動I/O模式94
5.4.3 信號驅動I/O示例95
5.5 事件I/O100
5.5.1 創建epoll上下文環境epoll_create101
5.5.2 epoll設定epoll_ctl101
5.5.3 等待事件發生epoll_wait103
5.5.4 epoll程式示例104
5.5.5 邊沿觸發ET和水平觸發LT109
5.6 原始套接字110
5.6.1 創建原始套接字111
5.6.2 原始套接字數據傳送111
5.6.3 原始套接字數據接收111
5.7 本章小結111
習題112
第6章 網路協定113
6.1 IP協定113
6.1.1 IP協定格式113
6.1.2 IP協定頭的C語言定義114
6.1.3 IP報文分段115
6.1.4 IP報文分段重組116
6.2 ICMP協定118
6.2.1 ICMP訊息類型118
6.2.2 ICMP訊息通用格式118
6.2.3 ICMP查詢請求和應答訊息格式118
6.2.4 ICMP訊息格式的C語言定義119
6.3 FTP協定119
6.3.1 FTP連線管理120
6.3.2 FTP通信過程121
6.3.3 FTP命令處理122
6.3.4 數據(檔案)傳輸過程123
6.3.5 數據傳輸連線埠124
6.4 一個簡單套用層協定示例125
6.5 分層協定示例-IP報文分段和重組模擬127
6.5.1 程式功能描述128
6.5.2 分層協定棧129
6.5.3 分層協定定義130
6.6 本章小結131
習題132
第7章 ICMP協定程式設計133
7.1 ping程式功能模組133
7.2 回應請求和應答實例分析133
7.3 ping程式實現134
7.4 ping程式的編譯和測試140
7.5 本章小結140
習題140
第8章 FTP協定程式設計141
8.1 FTP互動命令實例分析141
8.2 FTP客戶端程式功能模組143
8.3 FTP客戶端程式實現144
8.4 FTP客戶端程式的編譯和測試168
8.5 本章小結169
習題169
第9章 IP報文分段和重組模擬程式設計170
9.1 主機工作流程170
9.2 轉發伺服器工作流程171
9.3 訊息分段172
9.4 主機程式功能模組172
9.5 轉發伺服器程式功能模組175
9.6 訊息分段的錯序和丟失模擬176
9.7 關鍵數據結構177
9.8 主機程式實現180
9.9 轉發伺服器程式實現220
9.10 IP報文分段和重組模擬程式的編譯和運行240
9.11 本章小結243
習題243
附錄A C/C++源檔案編輯244
附錄B C/C++源檔案編譯247
附錄C C/C++源檔案調試250
參考文獻253