注冊 | 登錄讀書好,好讀書,讀好書!
讀書網-DuShu.com
當前位置: 首頁出版圖書科學技術計算機/網絡網絡與數據通信網絡協議用TCP/IP進行網際互聯

用TCP/IP進行網際互聯

用TCP/IP進行網際互聯

定 價:¥48.00

作 者: (美)Douglas E.Comer,(美)David L.Stevens著;趙剛 等譯
出版社: 電子工業(yè)出版社
叢編項: 國外計算機科學教材系列
標 簽: Linux

ISBN: 9787505365902 出版時間: 2001-04-01 包裝:
開本: 26cm 頁數: 432 字數:  

內容簡介

  很榮幸DougComer給我這個機會,讓我能在他的這本書第三版付印時與諸位探討一些個人的想法。在這過去的十年期間,Internet以驚人的速度發(fā)展著。Internet上主機的數目從1989年的100000臺發(fā)展到1998年的30000000臺。在本書第二版出版的時候,連接到Internet的網絡大約有26000個。到1998年,這個數字大約在2000000到350000之間,這還不包括那些利用互聯網技術但未連接到公共網絡上的專用內聯網。除了規(guī)模上的變化,Internet在應用上也發(fā)生了驚人的變化。Internet技術與正在蓬勃發(fā)展的WWW作為一個完整的、不可缺少的系統已被人們所認可。而WWW在商業(yè)、學術和政府等部門都掀起了一場革命。在WWW上每天出現的“網頁”可達三億兩千萬之多,并且還在不斷涌現。有些學校大約四分之一的入學申請都是通過電子郵件或其他網頁申請形式進行的。Dell公司透露,他們通過網站每天銷售價值大約六百萬美元的PC機。Amazon網上書店以季度盈利達六千六百萬美元成為歷史上發(fā)展最快的公司,這也是第一個在一年之內銷售額超過兩億五千萬美元的公司。目前,至少有兩千多家無線電臺將他們的音頻服務推向了Internet,許多網站也開始提供音頻甚至低質量的視頻服務。隨著將訪問速率提高到兆比特的范圍,以及主干網容量的增加,視頻服務的質量也將得到提高。隨著1996年網絡電視和1997年Nokia推出的支持網絡功能的手機的問世,其他支持網絡功能的產品也不斷地涌現。更多的實用產品實現了相似的網絡功能,例如水暖加熱器既可以用家用電腦來控制,也可以由電力公司來控制用以滿足適度的調峰需求。盡管智能代理還沒有成為主流,但是XML近來的發(fā)展也表明Internet上有關事務處理的應用正在急劇增多。SML的標準“文檔”表示方式以及一致的常用解釋格式構成了一種可傳輸對象,該對象已形成所有商業(yè)、金融、事務、數據庫事務及其他需要標準表示方式和解釋格式的交易的基礎。再回頭看看電話產品的發(fā)展,無論傳統的服務商還是現代企業(yè)都在將支持網絡的電話產品推向市場?!败汸BX”系統利用LAN和Internet實現傳統的專用交換機的功能,基于微處理器的電話機也正在改變遠程通信的經濟情況和可操作性。具有IP功能的傳真機已經出現。網關把原有的模擬世界與現在的Internet世界聯系在一起,起著非常重要的作用。對Internet服務需求量的增長速度趕上甚至超過了網絡本身的增長。主干網絡的速度達到每秒622兆已是很平常的事。新一代利用硬件IP中繼器的路由器可望以每秒10G(OC192)以上的速度處理Internet上傳輸的數據。下一個挑戰(zhàn)是利用單模光纖處理每秒兆兆字節(jié)的信息量。網絡的安全性過去總是處于后臺操作狀態(tài),隨著越來越多領域依賴于Internet,安全性已逐漸走向前臺。防火墻技術、端-端加密、密鑰管理、信用證策略或鑒認系統已成為成功管理Internet的關鍵因素。再向未來展望,網絡協議和結構已經朝著星際互連的方向發(fā)展,也許會形成和互聯網一樣的形式。域名系統如果還存在,還要考慮將不同的行星計入命名體系?!盎ミB的Internet”協議將能夠處理更高的延遲,傳統的TCP概念也將被更多的單向過程取代。未來的網際遨游者回看這十年,一定會覺得這是個充滿挑戰(zhàn)但技術相對落后的時代。在他們看來,這段前言中的觀點可能已經過時又難以理解,因為他們所面對的是經歷了另外二十年革命的Internet。序言用TCP/IP進行網際互聯第二卷提供了第一卷所沒有包含的關于TCP/IP協議的一些細節(jié)問題。第二卷如同將TCP/IP置于放大鏡下,考察每個協議的具體細節(jié)。它討論了協議的實現方案,并著重于介紹協議軟件的內部機制。第三版包含了對某些協議的修改和更新的內容。其中的代碼改用C++語言的ANSI標準C子集,包含了函數原型和參數的聲明。另外還糾正了一些錯誤。我們將SNMP更新為標準的第二版,這包括替換了地址轉換表,增加了UDPlistener列表。在本書的最后,還增加了附錄2,給出了書中代碼所用到的主要數據結構的聲明及變量的交叉參考表,并擴充了附錄1中的過程調用交叉參考的內容。書中的范例代碼用GnuC++編譯器在Intel體系平臺編譯通過,也在PentiumTM系統上經過測試。所有的代碼均可在以下網址得到:ftp://ftp.cs.purdue.edu/pub/comer/TCPIP-vol2.dist.tar.Z雖然本書受到版權保護,但書中的代碼可供讀者使用,而且已經在許多商業(yè)產品中實現。這些代碼使用的惟一限制是不得在公開出版物中出版。我們鼓勵讀者利用計算機工具來查看、修改、編譯和測試這些代碼。事實上,盡管附錄1和附錄2中提供了定位代碼條目的有效途徑,但在查看大段代碼時,UNIXgrep程序的價值更是不可估量。對于各種正式的協議規(guī)范,以及對協議的實現和使用的討論,可參見請求評論文檔(RFC)。盡管一些RFC文檔對初學者來講難以理解,但這些文檔是信息詳盡的權威性資源,沒有哪個作者能夠做到在自己編寫的書中包涵RFC文檔中的所有內容。盡管RFC文檔涉及了每一個協議,但有時它們對協議之間的交互問題并未加以說明。例如,選路信息協議(RIP或OSPF)之類的選路協議規(guī)定了網關如何將路由置入IP路由表中,以及如何將表中的路由通知其他網關。RIP還規(guī)定路由必須設立定時機制,一旦某條路由超時,就將其刪除。但是,我們在RFC文檔中并不容易看出RIP和其他協議之間是如何交互作用的,隨之而來的問題是:“路由超時機制將如何影響路由表中那些由ICMP設置的路由呢?”我們可能還會考慮這樣一個問題:“當RIP更新路由時,應不應該推翻那些由管理員直接輸入的路由呢?”為了有助于解釋協議之間的交互作用,并確保我們的方案能協調工作,我們設計并構造了一個工作系統,作為全書的中心范例。該系統提供了TCP/IP協議族中的大部分協議,包括:TCP、IP、ICMP、IGMP、UDP、ARP、RIP、SNMPv2以及OSPF的主要部分。另外,還具有一個finger服務的客戶和服務器范例。由于本書包括了每一個協議的程序代碼,讀者可以研究其實現方法及理解其內部結構。最重要的是,由于范例系統將所有協議軟件集成為一個工作整體,讀者可以清楚地了解協議之間的交互作用。范例的程序代碼試圖做到一方面遵守協議標準,另一方面引入一些新的思想。例如,我們的TCP程序代碼中包含了“糊涂窗口預防”技術、Jacobson-Karels的“慢啟動”和“防擁塞”等優(yōu)化技術,諸如此類的性能可能在商業(yè)實現中被忽略。但同時,我們也清楚地認識到商業(yè)領域并不總是遵從已經公布的標準,因此我們也努力將系統調整到能夠在現實環(huán)境中使用。例如,程序代碼中包含了一個配置參數,使得它既可以采納Internet標準,也可以采納BSDUNIX中“TCP緊急數據指針”的實現方法。我們并不認為書中所提供的程序代碼都是準確無誤的,甚至不能斷言它肯定比其他實現方法要好。事實上,經過多年使用,我們仍然在不斷完善這套軟件,同時,也希望讀者跟我們一起繼續(xù)改進它。本書可以作為網絡工程人員的高級教程,或者作為研究生教材使用。在作為本科教程使用時,應將重點放在前幾章,而忽略有關OSPF、SNMP和RIP這幾章內容。研究生可能會在有關TCP的章節(jié)中發(fā)現一些最為有趣和最難理解的概念。為保證其高性能而采用的自適應重發(fā)和相關的試探法尤為重要,應當仔細加以研究??v觀全書,絕大部分習題都向大家提示了其他可選擇的實現方案及其大致情況,它們并不要求死記硬背,因此學生們可能需要閱讀本書以外的其他資料,才能解答這些習題。正如任何耗費甚巨的工程一樣,本書中包含了許多人的心血,對此我們表示衷心的感謝。作者之一DavidStevens完成了大部分軟件的編制工作,其中包括一個完整的TCP版本。ShawnOstermann為本書付出了許多努力。Shawn將TCP/IP代碼集成到Xinu版本8中,并將其從最初的Sun3平臺移植到DECstation3100上。在這一版本中,他還對上一版中由VicNorman編寫的SNMP軟件進行了大量的修改,以滿足第二版的標準,也有助于代碼的調試。JohnLin對書中的技術細節(jié)進行了校對,糾正了一些錯誤。珀杜(Purdue)大學的網際互連研究小組(InternetworkingResearchGroup)的許多成員對程序代碼的早期版本做過很多貢獻。AndyMuckelbauer和SteveChapin建立了一個UNIX兼容庫,并與ShawnOstermann和ScottMark合作,使用TCP代碼運行一個Xwindow服務器。他們對TCP做了大量的測試工作,并指出其性能上存在的幾個問題。ScottM.Ballew參與了一些軟件的開發(fā)工作。我的妻子Christine對本書手稿進行了編輯,并提出許多建議。最后,我們感謝珀杜大學的計算機科學系和計算中心所提供的幫助。DouglasE.ComerDavidL.Stevens1998年5月

作者簡介

  作者:DouglasE.ComerDouglasE.Comer博士從20世紀70年代開始從事互聯網的研究和開發(fā)工作,他曾是互聯網體系結構委員會的成員,該委員會是確定互聯網發(fā)展標準的權威機構;他也曾任美國計算機網CSTNET技術委員會的主席,該網絡是美國早期互聯網建設中最重要的網絡之一。他現在是美國普渡大學計算機科學系的教授,從事計算機網絡和操作系統方面的教學和科研工作。Internet技術基礎>>更多作品

圖書目錄

第1章 引言和概述 
1.1 使用TCP/IP的因特網應用 
1.2 為分布式環(huán)境設計應用程序 
1.3 標準和非標準的應用協議 
1.4 使用標準應用協議的例子 
1.5 telnet連接的例子 
1.6 使用TELNET訪問其他服務 
1.7 應用協議和軟件的靈活性 
1.8 從提供者的角度看服務 
1.9 本教材的其余部分 
1.10 小結 
深入研究 
習題 
第2章 客戶-服務器模型與軟件設計 
2.1 引言 
2.2 動機 
2.3 術語和概念 
2.3.1 客戶和服務器 
2.3.2 特權和復雜性 
2.3.3 標準和非標準客戶軟件 
2.3.4 客戶的參數化 
2.3.5 無連接的和面向無連接的服務器 
2.3.6 無狀態(tài)和有狀態(tài)服務器 
2.3.7 無狀態(tài)文件服務器的例子 
2.3.8 有狀態(tài)文件服務器的例子 
2.3.9 標識客戶 
2.3.10 無狀態(tài)是一個協議問題 
2.3.11 充當客戶的服務器 
2.4 小結 
深入研究 
習題 
第3章 客戶-服務器軟件中的并發(fā)處理 
3.1 引言 
3.2 網絡中的并發(fā) 
3.3 服務器中的并發(fā) 
3.4 術語和概念 
3.4.1 進程概念 
3.4.2 局部和全局變量的共享 
3.4.3 過程調用 
3.5 一個創(chuàng)建并發(fā)進程的例子 
3.5.1 一個順序執(zhí)行的C實例 
3.5.2 程序的并發(fā)版本 
3.5.3 時間分片 
3.5.4 單線程的進程 
3.5.5 使各進程分離 
3.6 執(zhí)行新的代碼 
3.7 上下文切換和協議軟件設計 
3.8 并發(fā)和異步I/O 
3.9 小結 
深入研究 
習題 
第4章 協議的程序接口 
4.1 引言 
4.2 不精確指明的協議軟件接口 
4.2.1 優(yōu)點與缺點 
4.3 接口功能 
4.4 概念性接口的規(guī)約 
4.5 系統調用 
4.6 網絡通信的兩種基本方法 
4.7 LINIX中提供的基本I/O功能 
4.8 將Linux I/O用于TCP/IP 
4.9 小結 
深入研究 
習題 
第5章 套接字API 
5.1 引言 
5.2 Berkeley套接字 
5.3 指明一個協議接口 
5.4 套接字的抽象 
5.4.1 套接字描述符和文件描述符 
5.4.2 針對套接字的系統數據結構 
5.4.3 主動套接字或被動套接字 
5.5 指明端點地址 
5.6 類屬地址結構 
5.7 套接字API中的主要系統調用 
5.7.1 socket調用 
5.7.2 connect調用 
5.7.3 send調用 
5.7.4 recv調用 
5.7.5 close調用 
5.7.6 bind調用 
5.7.7 listen調用 
5.7.8 accept調用 
5.7.9 在套接字中使用read和write 
5.7.10 套接字調用小結 
5.8 用于整數轉換的實用例程 
5.9 在程序中使用套接字調用 
5.10 套接字調用的參數所使用的符號常量 
5.11 小結 
深入研究 
習題 
第6章 客戶軟件設計中的算法和問題 
6.1 引言 
6.2 不是研究細節(jié)而是學習算法 
6.3 客戶體系結構 
6.4 標識服務器的位置 
6.5 分析地址參數 
6.6 查找域名 
6.7 由名字查找某個熟知端口 
6.8 端口號和網絡字節(jié)順序 
6.9 由名字查找協議 
6.10 TCP客戶算法 
6.11 分配套接字 
6.12 選擇本地協議端口號 
6.13 選擇本地IP地址中的一個基本問題 
6.14 將TCP套接字連接到某個服務器 
6.15 使用TCP與服務器通信 
6.16 從TCP連接中讀取響應 
6.17 關閉TCP連接 
6.17.1 對部分關閉的需要 
6.17.2 部分關閉的操作 
6.18 UDP客戶的編程 
6.19 連接的和非連接的UDP套接字 
6.20 對UDP使用connect 
6.21 使用UDP與服務器通信 
6.22 關閉使用UDP的套接字 
6.23 對UDP的部分關閉 
6.24 關于UDP不可靠性的警告 
6.25 小結 
深入研究 
習題 
第7章 客戶軟件舉例 
7.1 引言 
7.2 小例子的重要性 
7.3 隱藏細節(jié) 
7.4 針對客戶程序的過程庫例子 
7.5 connectTCP的實現 
7.6 connectUDP的實現 
7.7 構成連接的過程 
7.8 使用例子庫 
7.9 DAYTIME服務 
7.10 針對DAYTIME的TCP客戶實現 
7.11 從TCP連接中進行讀 
7.12 TIME服務 
7.13 訪問TIME服務 
7.14 精確時間和網絡時延 
7.15 針對TIME服務的UDP客戶 
7.16 ECHO服務 
7.17 針對ECHO服務的TCP客戶 
7.18 針對ECHO服務的UDP客戶 
7.19 小結 
深入研究 
習題 
第8章 服務器軟件設計的算法和問題 
8.1 引言 
8.2 概念性的服務器算法 
8.3 并發(fā)服務器和循環(huán)服務器 
8.4 面向連接的和無連接的訪問
8.5 傳輸協議的語義 
8.5.1 TCP語義 
8.5.2 UDP語義 
8.6 選擇傳輸協議 
8.7 面向連接的服務器 
8.8 無連接的服務器 
8.9 故障、可靠性和無狀態(tài) 
8.10 優(yōu)化無狀態(tài)服務器 
8.11 四種基本類型的服務器 
8.12 請求處理時間 
8.13 循環(huán)服務器的算法 
8.14 一種循環(huán)的、面向連接的服務器的算法 
8.15 用INADDR_ANY綁定熟知端口 
8.16 將套接字置于被動模式 
8.17 接受連接并使用這些連接 
8.18 循環(huán)的、無連接的服務器的算法 
8.19 在無連接的服務器中構造應答 
8.20 并發(fā)服務器的算法 
8.21 主線程和從線程 
8.22 并發(fā)的、無連接的服務器的算法 
8.23 并發(fā)的、面向連接服務器的算法 
8.24 服務器并發(fā)性的實現 
8.25 把單獨的程序作為從進程來使用 
8.26 使用單線程獲得表面上的并發(fā)性 
8.27 各服務器類型所適用的場合 
8.28 服務器類型小結 
8.29 重要問題——服務器死鎖 
8.30 其他的實現方法 
8.31 小結 
深入研究 
習題 
第9章 循環(huán)的、無連接服務器(UDP) 
9.1 引言 
9.2 創(chuàng)建被動套接字 
9.3 進程結構 
9.4 TIME服務器舉例 
9.5 小結 
深入研究 
習題 
第10章 循環(huán)的、面向連接的服務器(TCP) 
10.1 引言 
10.2 分配被動的TCP套接字 
10.3 用于DAYTIME服務的服務器 
10.4 進程結構 
10.5 DAYTIME服務器舉例 
10.6 關閉連接 
10.7 連接終止和服務器的脆弱性 
10.8 小結 
深入研究 
習題 
第11章 并發(fā)的、面向連接的服務器(TCP) 
11.1 引言 
11.2 并發(fā)ECHO 
11.3 循環(huán)與并發(fā)實現的比較 
11.4 進程結構 
11.5 并發(fā)ECHO服務器舉例 
11.6 清除游離(errant)進程 
11.7 小結 
深入研究 
習題 
第12章 將線程用于并發(fā)(TCP) 
12.1 引言 
12.2 Linux線程概述 
12.3 線程的優(yōu)點 
12.4 線程的缺點 
12.5 描述符、延遲和退出 
12.6 線程退出 
12.7 線程協調和同步 
12.7.1 互斥 
12.7.2 信號量 
12.7.3 條件變量 
12.8 使用線程的服務器實例 
12.9 監(jiān)控 
12.10 小結 
深入研究 
習題 
第13章 單線程、并發(fā)服務器(TCP) 
13.1 引言 
13.2 服務器中的數據驅動處理 
13.3 用單線程進行數據驅動處理 
13.4 單線程服務器的線程結構 
13.5 單線程ECHO服務器舉例 
13.6 小結 
深入研究 
習題 
第14章 多協議服務器(TCP,UDP) 
14.1 引言 
14.2 減少服務器數量的動機 
14.3 多協議服務器的設計 
14.4 進程結構 
14.5 多協議DAYTIME服務器的例子 
14.6 共享代碼的概念 
14.7 并發(fā)多協議服務器 
14.8 小結 
深入研究 
習題 
第15章 多服務服務器(TCP,UDP) 
15.1 引言 
15.2 合并服務器 
15.3 無連接的、多服務服務器的設計 
15.4 面向連接的、多服務服務器的設計 
15.5 并發(fā)的、面向連接的、多服務服務器 
15.6 單線程的、多服務服務器的實現 
15.7 從多服務服務器調用單獨的程序 
15.8 多服務、多協議設計 
15.9 多服務服務器的例子 
15.10 靜態(tài)的和動態(tài)的服務器配置 
15.11 UNIX超級服務器,inetd 
15.12 inetd服務器的例子 
15.13 服務器的幾種變形清單 
15.14 小結 
深入研究 
習題 
第16章 服務器并發(fā)性的統一、高效管理 
16.1 引言 
16.2 在循環(huán)設計和并發(fā)設計間選擇 
16.3 并發(fā)等級 
16.4 需求驅動的并發(fā) 
16.5 并發(fā)的代價 
16.6 額外開銷和時延 
16.7 小時延可能出麻煩 
16.8 從線程/進程預分配 
16.8.1 Linux中的預分配 
16.8.2 面向連接服務器中的預分配 
16.8.3 互斥、文件鎖定和accept并發(fā)調用 
16.8.4 無連接服務器中的預分配 
16.8.5 預分配、突發(fā)通信量和NFS 
16.8.6 多處理器上的預分配 
16.9 延遲的從線程/進程分配 
16.10 兩種技術統一的基礎 
16.11 技術的結合 
16.12 小結 
深入研究 
習題 
第17章 客戶進程中的并發(fā) 
17.1 引言 
17.2 并發(fā)的優(yōu)點 
17.3 運用控制的動機 
17.4 與多個服務器的并發(fā)聯系 
17.5 實現并發(fā)客戶 
17.6 單線程實現 
17.7 使用ECHO的并發(fā)客戶例子 
17.8 并發(fā)客戶的執(zhí)行
17.9 例子代碼中的并發(fā)性 
17.10 小結 
習題 
第18章 運輸層和應用層的隧道技術 
18.1 引言 
18.2 多協議環(huán)境 
18.3 混合網絡技術 
18.4 動態(tài)電路分配 
18.5 封裝和隧道技術 
18.6 通過IP互聯網的隧道技術 
18.7 客戶和服務器之間的應用級隧道技術 
18.8 隧道技術、封裝和電話撥號線 
18.9 小結 
深入研究 
習題 
第19章 應用級網關 
19.1 引言 
19.2 在受約束的環(huán)境中的客戶和服務器 
19.2.1 限制訪問的現實 
19.2.2 有限功能的計算機 
19.2.3 安全性引起的連通性約束 
19.3 使用應用網關 
19.4 通過郵件網關互操作 
19.5 郵件網關的實現 
19.6 應用網關與隧道技術的比較 
19.7 應用網關和有限因特網連接 
19.8 為解決安全問題而使用的應用網關 
19.9 應用網關和額外跳問題 
19.10 應用網關舉例 
19.11 一個應用網關的實現 
19.12 應用網關的代碼 
19.13 網關交換的例子 
19.14 使用rfcd和.forward或slocal文件 
19.15 通用的應用網關 
19.16 SLIRP的運行 
19.17 SLIRP如何處理連接 
19.18 IP尋址和SLIRP 
19.19 小結 
深入研究 
習題 
第20章 外部數據表示(XDR) 
20.1 引言 
20.2 數據表示 
20.3 N平方轉換問題 
20.4 網絡標準字節(jié)順序 
20.5 外部數據表示的事實上的標準 
20.6 XDR數據類型 
20.7 隱含類型 
20.8 使用XDR的軟件支持 
20.9 XDR庫例程 
20.10 一次一片地構造報文 
20.11 XDR庫中的轉換例程 
20.12 XDR流、I/O和TCP 
20.13 記錄、記錄邊界和數據報I/O 
20.14 小結 
深入研究 
習題 
第21章 遠程過程調用(RPC)的概念 
21.1 引言 
21.2 遠程過程調用模型 
21.3 構建分布式程序的兩種模式 
21.4 常規(guī)過程調用的概念性模型 
21.5 過程模型的擴充 
21.6 常規(guī)過程調用的執(zhí)行和返回 
21.7 分布式系統中的過程模型 
21.8 客戶-服務器和RPC之間的類比 
21.9 作為程序的分布式計算 
21.10 Sun Microsystems的遠程過程調用定義 
21.11 遠程程序和過程 
21.12 減少參數的數量 
21.13 標識遠程程序和過程 
21.14 適應遠程程序的多個版本 
21.15 遠程程序中的互斥 
21.16 通信語義 
21.17 至少一次語義 
21.18 RPC重傳 
21.19 將遠程程序映射到協議端口 
21.20 動態(tài)端口映射 
21.21 RPC端口映射器算法 
21.22 ONC RPC的報文格式 
21.23 對遠程過程進行參數排序 
21.24 21.24 鑒別 
21.25 21.25 RPC報文表示的例子 
21.26 UNIX鑒別字段的例子 
21.27 小結 
深入研究 
習題 
第22章 分布式程序的生成(rpcgen的概念) 
22.1 引言 
22.2 使用遠程過程調用 
22.3 支持RPC的編程工具 
22.4 將程序劃分成本地過程和遠程過程 
22.5 為RPC增加代碼 
22.6 stub過程 
22.7 多個遠程過程和分派 
22.8 客戶端的stub過程的名字 
22.9 使用rpcgen生成分布式程序 
22.10 rpcgen輸出和接口過程 
22.11 rpcgen的輸入和輸出 
22.12 使用rpcgen構建客戶和服務器 
22.13 小結 
深入研究 
習題 
第23章 分布式程序的生成(rpcgen的例子) 
23.1 引言 
23.2 說明rpcgen的例子 
23.3 查找字典 
23.4 分布式程序的八個步驟 
23.5 步驟1:構建常規(guī)應用程序 
23.6 步驟2:將程序劃分成兩部分 
23.7 步驟3:創(chuàng)建rpcgen規(guī)約 
23.8 步驟4:運行rpcgen 
23.9 rpcgen產生的.h文件 
23.10 rpcgen產生的XDR轉換文件 
23.11 rpcgen產生的客戶代碼 
23.12 rpcgen產生的服務器代碼 
23.13 步驟5:編寫stub接口過程 
23.13.1 客戶端接口例程 
23.13.2 服務器端接口例程 
23.14 步驟6:編譯和鏈接客戶程序 
23.15 步驟7:編譯和鏈接服務器程序 
23.16 步驟8:啟動服務器和執(zhí)行客戶 
23.17 使用make實用程序 
23.18 小結 
深入研究 
習題 
第24章 網絡文件系統(NFS)的概念 
24.1 引言 
24.2 遠程文件存取和傳送 
24.3 對遠程文件的操作 
24.4 異構計算機之間的文件存取 
24.5 無狀態(tài)服務器 
24.6 NFS和UNIX的文件語義 
24.7 UNIX文件系統的回顧 
24.7.1 基本定義 
24.7.2 無記錄界限的字節(jié)序列 
24.7.3 文件擁有者和組標識符 
24.7.4 保護和存取 
24.7.5 打開-讀-寫-關閉范例 
24.7.6 數據傳送 
24.7.7 搜索目錄權限 
24.7.8 隨機存取 
24.7.9 搜索超過文件的結束 
24.7.10 文件位置和并發(fā)存取 
24.7.11 在并發(fā)存取時的“寫(write)”語義 
24.7.12 文件名和路徑 
24.7.13 索引節(jié)點(inode):存儲在文件中的信息 
24.7.14 stat操作 
24.7.15 文件命名機制 
24.7.16 文件系統mount 
24.7.17 UNIX文件名解析 
24.7.18 符號鏈接 
24.8 NFS下的文件 
24.9 NFS的文件類型 
24.10 NFS文件模式 
24.11 NFS文件屬性 
24.12 NFS客戶和服務器 
24.13 NFS客戶操作 
24.14 NFS客戶與UNIX系統 
24.15 NFS安裝 
24.16 文件句柄 
24.17 句柄取代路徑名 
24.18 無狀態(tài)服務器的文件定位 
24.19 對目錄的操作 
24.20 無狀態(tài)地讀目錄 
24.21 NFS服務器中的多個分層結構 
24.22 安裝(mount)協議 
24.23 NFS的傳輸協議 
24.24 小結 
深入研究 
習題 
第25章 網絡文件系統協議(NFS,Mount) 
25.1 引言 
25.2 用RPC定義協議 
25.3 用數據結構和過程定義協議 
25.4 NFS常數、類型和數據聲明 
25.4.1 NFS常數 
25.4.2 NFS的typedef聲明 
25.4.3 NFS數據結構 
25.5 NFS過程 
25.6 NFS操作的語義 
25.6.1 NFSPROC3_NULL(過程0) 
25.6.2 NFSPROC3_GETATTR(過程1) 
25.6.3 NFSPROC3_SETATTR(過程2) 
25.6.4 NFSPROC3_LOOKUP(過程3) 
25.6.5 NFSPROC3_ACCESS(過程4) 
25.6.6 NFSPROC3_READLINK(過程5) 
25.6.7 NFSPROC3_READ(過程6) 
25.6.8 NFSPROC3_WRITE(過程7) 
25.6.9 NFSPROC3_CREATE(過程8) 
25.6.10 NFSPROC3_MKDIR(過程9) 
25.6.11 NFSPROC3_SYMLINK(過程10) 
25.6.12 NFSPROC3_MKNOD(過程11) 
25.6.13 NFSPROC3_REMOVE(過程12) 
25.6.14 NFSPROC3_RMDIR(過程13) 
25.6.15 NFSPROC3_RENAME(過程14) 
25.6.16 NFSPROC3_LINK(過程15) 
25.6.17 NFSPROC3_READDIR(過程16) 
25.6.18 NFSPROC3_READDIRPLUS(過程17) 
25.6.19 NFSPROC3_FSSTAT(過程18) 
25.6.20 NFSPROC3_FSINO(過程19) 
25.6.21 NFSPROC3_PATHCONF(過程20) 
25.6.22 NFSPROC3_COMMIT(過程21) 
25.7 安裝協議 
25.7.1 安裝協議的常數定義 
25.7.2 安裝協議的類型定義 
25.7.3 安裝數據結構 
25.8 安裝協議中的過程 
25.9 安裝操作的語義 
25.9.1 MOUNTPROC3_NULL(過程0) 
25.9.2 MOUNTPROC3_MNT(過程1) 
25.9.3 MOUNTPROC3_DUMP(過程2) 
25.9.4 MOUNTPROC3_UMNT(過程3) 
25.9.5 MOUNTPROC3_UMNTALL(過程4) 
25.9.6 MOUNTPROC3_EXPORT(過程5) 
25.10 NFS和安裝鑒別 
25.11 文件加鎖 
25.12 NFS第3版與第4版之間的變化 
25.13 小結 
深入研究 
習題 
第26章 TELNET客戶(程序結構) 
26.1 引言 
26.2 概述 
26.2.1 用戶終端 
26.2.2 命令和控制信息 
26.2.3 終端、窗口和文件 
26.2.4 對并發(fā)性的需要 
26.2.5 TELNET客戶的過程模型 
26.3 TELNET客戶算法 
26.4 Linux中的終端I/O 
26.4.1 控制設備驅動器 
26.5 建立終端模式 
26.6 用于保存狀態(tài)的全局變量 
26.7 在退出之前恢復終端模式 
26.8 客戶掛起與恢復 
26.9 有限狀態(tài)機的規(guī)約 
26.10 在TELNET數據流中嵌入命令 
26.11 選項協商 296
26.12 請求/提供的對稱性 
26.13 TELNET字符定義 
26.14 針對來自服務器數據的有限狀態(tài)機 
26.15 在各種狀態(tài)之間轉移 
26.16 有限狀態(tài)機的實現 
26.17 壓縮的有限狀態(tài)機表示 
26.18 在運行時維持壓縮表示 
26.19 壓縮表示的實現 
26.20 構造有限狀態(tài)機轉移矩陣 
26.21 套接字輸出有限狀態(tài)機 
26.22 套接字輸出有限狀態(tài)機的相關定義 
26.23 選項子協商有限狀態(tài)機 
26.24 選項子協商有限狀態(tài)機的相關定義 
26.25 有限狀態(tài)機初始化 
26.26 TELNET客戶的參數 
26.27 TELNET客戶的核心 
26.28 主有限狀態(tài)機的實現 
26.29 小結 
深入研究 
習題 
第27章 TELNET客戶(實現細節(jié)) 
27.1 引言 
27.2 有限狀態(tài)機動作過程 
27.3 記錄選項請求的類型 
27.4 完成空操作 
27.5 對回顯選項的WILL/WONT做出響應 
27.6 對未被支持的選項的WILL/WONT做出響應 
27.7 對 no go-ahead 選項的WILL/WONT做出響應 
27.8 生成用于二進制傳輸的DO/DONT 
27.9 對未被支持的選項的DO/DONT做出響應 
27.10 對傳輸二進制選項的DO/DONT做出響應 
27.11 對終端類型選項的DO/DONT做出響應 
27.12 選項子協商 
27.13 發(fā)送終端類型信息 
27.14 終止子協商 
27.15 向服務器發(fā)送字符 
27.16 顯示在用戶終端上出現的傳入數據 
27.17 使用termcap控制用戶終端 
27.18 將數據塊寫到服務器 
27.19 與客戶進程交互 
27.20 對非法命令做出響應 
27.21 腳本描述文件 
27.22 腳本描述的實現 
27.23 初始化腳本描述 
27.24 收集腳本文件名的字符 
27.25 打開腳本文件 
27.26 終止腳本描述 
27.27 打印狀態(tài)信息 
27.28 小結 
深入研究 
習題 
第28章 流式音頻和視頻傳輸(RTP概念和設計) 
28.1 引言 
28.2 流式傳輸服務 
28.3 實時交付 
28.4 抖動的協議補償 
28.5 重傳、丟失和恢復 
28.6 實時傳輸協議 
28.7 流的轉換和混合 
28.8 遲延回放和抖動緩存 
28.9 RTP控制協議(RTCP) 
28.10 多種流同步 
28.11 RTP傳輸和多對多傳輸 
28.12 會話、流、協議端口和分用 
28.13 編碼的基本方法 
28.14 RTP軟件的概念性組織 
28.15 進程/線程結構 
28.16 API的語義 
28.17 抖動緩存的設計和重新緩存 
28.18 事件處理 
28.19 回放異常及時間戳的復雜性 
28.20 實時庫例子的大小 
28.21 MP3播放器的例子 
28.22 小結 
深入研究 
習題 
第29章 流式音頻和視頻傳輸(RTP實現示例) 
29.1 引言 
29.2 集成實現 
29.3 程序結構 
29.4 RTP定義 
29.5 時間值的處理 
29.6 RTP序列空間的處理 
29.7 RTP分組隊列的處理 
29.8 RTP輸入處理 
29.9 為RTCP保存統計信息 
29.10 RTP初始化 
29.11 RTCP的定義 
29.12 接收RTCP發(fā)送方的報告 
29.13 產生RTCP接收方的報告 
29.14 創(chuàng)建RTCP的首部 
29.15 RTCP時延的計算 
29.16 RTCP Bye(再見)報文的產生 
29.17 集成實現的大小 
29.18 小結 
深入研究 
習題 
第30章 Linux服務器中的實用技巧和技術 
30.1 引言 
30.2 后臺操作 
30.3 編寫在后臺運行的服務器 
30.4 打開描述符和繼承 
30.5 對服務器編程以關閉所繼承的描述符 
30.6 來自控制TTY的信號 
30.7 對服務器編程以改變它的控制TTY 
30.8 轉移到一個安全的和已知的目錄 
30.9 對服務器編程以改變目錄 
30.10 Linux umask 
30.11 對服務器編程以設置其umask 
30.12 進程組 
30.13 對服務器編程以設置其進程組 
30.14 標準I/O描述符 
30.15 對服務器編程以打開標準描述符 
30.16 服務器互斥 
30.17 對服務器編程以避免多個副本 
30.18 記錄服務器的進程ID 
30.19 對服務器編程以記錄其進程ID 
30.20 等待一個子進程退出 
30.21 對服務器編程以等待每個子進程退出 
30.22 外來信號 
30.23 對服務器編程以忽略外來信號 
30.24 使用系統日志設施 
30.24.1 產生日志報文 
30.24.2 間接方式和標準差錯的優(yōu)點 
30.24.3 I/O重定向的限制 
30.24.4 客戶-服務器的解決方案 
30.24.5 syslog機制 
30.24.6 syslog的報文類 
30.24.7 syslog的設施 
30.24.8 syslog的優(yōu)先級 
30.24.9 使用syslog 
30.24.10 syslog配置文件舉例 
30.25 小結 
深入研究 
習題 
第31章 客戶-服務器系統中的死鎖和資源缺乏 
31.1 引言 
31.2 死鎖的定義 
31.3 死鎖檢測的難度 
31.4 避免死鎖 
31.5 客戶和服務器間的死鎖 
31.6 在單個交互中避免死鎖 
31.7 一組客戶和一個服務器之間的資源缺乏 
31.8 忙連接和資源缺乏 
31.9 避免阻塞的操作 
31.10 進程、連接和其他限制 
31.11 客戶和服務器的循環(huán) 
31.12 用文檔確認依賴性 
31.13 小結 
習題 
附錄1 系統調用與套接字使用的庫例程 
附錄2 Linux文件和套接字描述符的操作 
參考文獻 

本目錄推薦

掃描二維碼
Copyright ? 讀書網 www.dappsexplained.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網安備 42010302001612號