网络编程与分层协议设计:基于linux平台实现,网络编程与分层协议设计:基于Linux平台实现...
圖書簡介
本書以Linux網絡套接字編程和網絡分層協議的設計與程序實現為主題,詳細介紹如何在Linux平臺下進行套接字程序設計,并給出了一個基于分層協議的應用實例,用于模擬Linux網絡協議棧中IP層的核心功能—IP報文的分段和重組過程。本書旨在通過具有一定復雜度的應用,切實幫助讀者掌握網絡協議分層的設計思想和程序實現方法。此外,本書的許多程序示例直接使用了Linux的內核鏈表和散列鏈表,以及內核的其他數據結構和多線程等程序設計技巧,通過實際應用的形式有效地銜接了C語言、數據結構、操作系統、計算機網絡和網絡協議分析等課程的相關內容。
本書可作為高等院校計算機、網絡工程、通信工程等專業本科生與研究生“網絡程序設計”課程的教材,也可作為相關領域工程技術人員的參考用書。
章節目錄
前言
教學和閱讀建議
第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.1 getsockopt和setsockopt75
5.1.2 套接字通用選項示例76
5.2 I/O多路復用78
5.2.1 I/O多路復用模型79
5.2.2 select函數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.2 fcntl函數設置非阻塞模式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
圖書評論
總結
以上是生活随笔為你收集整理的网络编程与分层协议设计:基于linux平台实现,网络编程与分层协议设计:基于Linux平台实现...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c++ 参数传递
- 下一篇: linux一键打包工具,常见压缩与打包工