TCP/IP網路編程原理與技術

TCP/IP網路編程原理與技術

《TCP/IP網路編程原理與技術》是2019年清華大學出版社出版的圖書,作者是鐘輝、臧晗、董潔、宋凱、孟祥宇 、高野。

基本介紹

  • 書名:TCP/IP網路編程原理與技術
  • 作者:鐘輝、臧晗、董潔、宋凱、孟祥宇 、高野 
  • ISBN:9787302526025 
  • 定價:39元 
  • 出版社:清華大學出版社 
  • 出版時間:2019年06月  
  • 裝幀:平裝
  • 開本:16開
圖書簡介,編輯推薦,內容簡介,圖書目錄,目錄,附錄A,參考文獻,

圖書簡介

編輯推薦

1. 從套用網際網路的角度講解網路編程的基本概念和原理,用實例引出概念,用套用引出方法,用案例引出原理。
2. 在基本的、原始的作業系統上講解計算機之間的通信過程,使用原始的進程概念解釋網路編程的細節和步驟。
3. 用易懂的語言輸入輸出功能講解複雜的網路通信編程原理,用基本的客戶機伺服器概念來概括說明網路編程的方法和步驟。

內容簡介

Internet 是世界上最大的計算機互連網路,TCP/IP是Internet上使用最為成熟的協定。本書重點介紹用TCP/IP進行編程的主要原理和編程環境,並舉出實例來解釋這些編程原理和概念。網路中最基本的通信基礎是客戶伺服器模式,它在計算機通信中占主導地位。本書內容主要包括客戶伺服器各部件的功能,還說明了如何構建客戶和伺服器軟體。介紹了客戶伺服器模式的基本概念,TCP/IP協定提供傳輸數據的基本機制;如何在TCP/IP環境下組織編寫應用程式;計算機網路通信程式的構建方法;從而進一步了解在網路環境下構建分散式程式。 全書共分13章: 第1章著重介紹網路編程的目標和準備工作;第2章和第3章著重介紹客戶伺服器的概念以及並發處理存在的主要問題和套用;第4章和第5章基於Linux作業系統介紹套接字接口的概念和封裝的系統調用函式;第6章介紹客戶程式設計方法和需要注意的細節問題;第7章介紹了各種典型伺服器的設計方法,需要注意的問題和細節;第8章和第9章介紹單執行緒編寫並發程式的方法和套用條件;第10~12章介紹多服務、多協定伺服器設計方法和並發管理過程;第13章介紹客戶並發設計的方法和使用條件。全書提供了大量套用實例,每章後均附有習題。 本書適合作為高等院校計算機、軟體工程、信息管理等專業高年級本科生、研究生的教材,也可供對TCP/IP比較熟悉並且對網路編程有所了解的開發人員、廣大科技工作者和研究人員參考。

圖書目錄

目錄

第1章 網路編程準備1
1.1TCP/IP技術的網際網路套用1
1.2用TCP/IP構建分散式環境設計應用程式2
1.3用TCP/IP構建的標準和非標準套用協定2
1.4使用TCP/IP標準套用協定的例子2
1.5Telnet連線的例子3
1.6使用Telnet訪問其他服務4
1.7TCP/IP套用協定和軟體靈活性5
1.8從提供者的角度看服務5
1.9本教材內容介紹6
1.10小結6
習題6
第2章 客戶伺服器模式軟體設計概念8
2.1客戶伺服器的起源8
2.2客戶伺服器關鍵問題9
2.3客戶伺服器術語9
2.3.1客戶和伺服器10
2.3.2伺服器特權和複雜性10
2.3.3標準和非標準客戶軟體10
2.3.4客戶的參數化11
2.3.5無連線的和面向連線的伺服器11
2.3.6無狀態和有狀態伺服器12
2.3.7無狀態檔案伺服器的例子13
2.3.8有狀態檔案伺服器的例子13
2.3.9客戶標識14
2.3.10無狀態是一個協定問題15
2.3.11充當客戶的伺服器16
2.4小結16
習題17
第3章 客戶伺服器模式軟體中的並發處理18
3.1引言18
3.2網路中的並發18
3.3伺服器中的並發19
3.4並發術語20
3.4.1進程概念20
3.4.2局部和全局變數的共享21
3.4.3過程調用22
3.5一個創建並發進程的例子22
3.5.1一個順序執行的C實例22
3.5.2程式的並發版本23
3.5.3時間分片24
3.5.4單執行緒的進程25
3.5.5使各進程分離25
3.6執行新的代碼26
3.7上下文切換和協定軟體設計27
3.8並發和異步I/O27
3.9小結28
習題28
第4章 網路編程協定的程式接口29
4.1引言29
4.2不精確指明的協定軟體編程接口29
4.3接口功能30
4.4概念性接口的規範30
4.5作業系統調用31
4.6網路通信的兩種基本方法31
4.7Linux中提供的基本I/O功能32
4.8將Linux I/O用於TCP/IP33
4.9小結33
習題33
第5章 接口實現——套接字API35
5.1引言35
5.2Berkeley套接字35
5.3指明一個協定接口35
5.4套接字的抽象36
5.4.1套接字描述符和檔案描述符36
5.4.2針對套接字的系統數據結構37
5.4.3主動套接字或被動套接字37
5.5指明端點地址38
5.6類屬地址結構39
5.7套接字API中的主要系統調用40
5.7.1socket調用40
5.7.2connect調用40
5.7.3send調用41
5.7.4recv調用41
5.7.5close調用41
5.7.6bind調用41
5.7.7listen調用42
5.7.8accept調用42
5.7.9在套接字中使用read和write42
5.7.10套接字調用小結42
5.8用於整數轉換的實用例程43
5.9在程式中使用套接字調用44
5.10套接字調用的參數所使用的符號常量44
5.11小結45
習題46
第6章 客戶軟體算法及編程實例47
6.1引言47
6.2不是研究細節而是學習算法47
6.3客戶體系結構和要解決的問題48
6.3.1標識伺服器的位置48
6.3.2分析地址參數49
6.3.3查找域名50
6.3.4由名字查找某個熟知連線埠51
6.3.5連線埠號和網路位元組順序51
6.3.6由名字查找協定51
6.4TCP客戶算法52
6.4.1分配套接字52
6.4.2選擇本地協定連線埠號53
6.4.3選擇本地IP位址中的一個基本問題53
6.4.4將TCP套接字連線到某個伺服器54
6.4.5使用TCP與伺服器通信54
6.4.6從TCP連線中讀取回響55
6.4.7關閉TCP連線55
6.5UDP客戶算法56
6.5.1連線的和非連線的UDP套接字57
6.5.2對UDP使用connect57
6.5.3使用UDP與伺服器通信57
6.5.4關閉使用UDP的套接字57
6.5.5對UDP的部分關閉58
6.5.6關於UDP不可靠性的警告58
6.6客戶編程實例的重要性58
6.7隱藏細節59
6.8針對客戶程式的過程庫59
6.8.1connectTCP的實現60
6.8.2connectUDP的實現60
6.8.3構成連線的過程61
6.9過程庫使用63
6.10DAYTIME服務63
6.10.1針對DAYTIME的TCP客戶實現64
6.10.2從TCP連線中進行讀65
6.11TIME服務66
6.12訪問TIME服務66
6.13精確時間和網路時延67
6.14針對TIME服務的UDP客戶67
6.15ECHO服務69
6.16針對ECHO服務的TCP客戶69
6.17針對ECHO服務的UDP客戶71
6.18小結72
習題74
第7章 伺服器軟體算法及編程實例76
7.1引言76
7.2概念性的伺服器算法76
7.3並發伺服器和循環伺服器76
7.4面向連線的和無連線的訪問77
7.5伺服器需要考慮的幾個問題77
7.5.1傳輸層協定的語義77
7.5.2選擇傳輸協定78
7.5.3面向連線的伺服器78
7.5.4無連線的伺服器79
7.5.5伺服器的故障、可靠性和無狀態80
7.5.6最佳化無狀態伺服器80
7.5.7請求處理時間82
7.6伺服器的四種基本類型82
7.7循環伺服器的算法83
7.8循環的、面向連線的伺服器的算法83
7.8.1用INADDR_ANY綁定熟知連線埠83
7.8.2將套接字置於被動模式84
7.8.3接受連線並使用這些連線84
7.9循環的、無連線的伺服器的算法84
7.10並發伺服器的算法85
7.11並發的、無連線的伺服器的算法86
7.12並發的、面向連線的伺服器的算法86
7.12.1伺服器並發性的實現87
7.12.2把單獨的程式作為從進程來使用87
7.13使用單執行緒獲得表面上的並發性88
7.14各伺服器類型所適用的場合89
7.15伺服器類型小結89
7.16重要問題——伺服器死鎖90
7.17其他的實現方法90
7.18循環的、無連線的伺服器設計91
7.18.1創建被動套接字91
7.18.2進程結構94
7.18.3TIME伺服器舉例94
7.18.4小結96
7.19循環的、面向連線的伺服器設計96
7.19.1分配被動的TCP套接字96
7.19.2用於DAYTIME服務的伺服器97
7.19.3進程結構97
7.19.4DAYTIME伺服器舉例98
7.19.5關閉連線100
7.19.6連線終止和伺服器的脆弱性100
7.19.7小結101
7.20並發的、面向連線的伺服器設計101
7.20.1並發ECHO102
7.20.2循環與並發實現的比較102
7.20.3進程結構102
7.20.4並發ECHO伺服器舉例103
7.20.5清除游離(errant)進程106
7.20.6小結106
7.21小結107
習題107
第8章 使用執行緒模型實現並發110
8.1引言110
8.2Linux執行緒概述110
8.3執行緒和進程的關係111
8.3.1描述符、延遲和退出111
8.3.2執行緒退出112
8.4執行緒協調和同步112
8.4.1互斥112
8.4.2信號量113
8.4.3條件變數113
8.5使用執行緒的伺服器實例114
8.6監控117
8.7小結118
習題118
第9章 單執行緒並發伺服器設計119
9.1引言119
9.2伺服器中的數據驅動處理119
9.3用單執行緒進行數據驅動處理120
9.4單執行緒伺服器的執行緒結構120
9.5單執行緒ECHO伺服器舉例121
9.6小結123
習題124
第10章 多協定伺服器設計125
10.1引言125
10.2減少伺服器數量的動機125
10.3多協定伺服器的設計125
10.4進程結構126
10.5多協定DAYTIME伺服器的例子126
10.6共享代碼的概念129
10.7並發多協定伺服器130
10.8小結130
習題130
第11章 多服務伺服器設計132
11.1引言132
11.2合併伺服器132
11.3循環的、無連線的、多服務伺服器設計132
11.4循環的、面向連線的、多服務伺服器設計133
11.5並發的、面向連線的、多服務伺服器設計134
11.6並發的、單執行緒的、多服務伺服器的實現135
11.7從多服務伺服器調用單獨的程式135
11.8多服務、多協定伺服器設計136
11.9多服務伺服器的例子137
11.10靜態的和動態的伺服器配置143
11.11UNIX超級伺服器——inetd144
11.12inetd伺服器的例子146
11.13小結147
習題148
第12章 伺服器並發性管理149
12.1引言149
12.2在循環設計和並發設計間選擇149
12.3並發等級150
12.4需求驅動的並發150
12.5並發的代價150
12.6額外開銷和時延151
12.7小時延問題151
12.8從執行緒/進程的預分配152
12.8.1Linux中的預分配153
12.8.2面向連線的伺服器中的預分配153
12.8.3互斥、檔案鎖定和accept並發調用154
12.8.4無連線的伺服器中的預分配155
12.8.5預分配、突發通信量和NFS155
12.8.6多處理器上的預分配156
12.9延遲的從執行緒/進程分配156
12.10兩種技術統一的基礎157
12.11技術的結合157
12.12小結158
習題158
第13章 客戶軟體並發設計160
13.1引言160
13.2並發的優點160
13.3運用控制的動機160
13.4與多個伺服器的並發聯繫161
13.5實現並發客戶162
13.6單執行緒實現162
13.7使用ECHO的並發客戶的例子163
13.8並發客戶的執行167
13.9例子代碼中的並發性169
13.10小結169
習題169

附錄A

系統調用與套接字使用的庫例程170

參考文獻

192

相關詞條

熱門詞條

聯絡我們