TCP/IP詳解(卷3):TCP 事務協定

TCP/IP詳解(卷3):TCP 事務協定

《TCP/IP詳解(卷3):TCP 事務協定》是一本於2019-02-25由機械工業出版社出版的圖書,作者是理察·史蒂文斯。

基本介紹

  • 書名:TCP/IP詳解(卷3):TCP 事務協定
  • 作者:理察·史蒂文斯
  • 出版社:機械工業出版社 
  • 裝幀:平裝
  • 開本:16開
內容簡介,作者簡介,圖書目錄,圖書前言,

內容簡介

第3卷詳細介紹了當今TCP/IP程式設計師和網路管理員必須非常熟悉的四個基本主題: TCP的擴展、Hyper文本傳輸協定、網路新聞傳輸協定和UNIX域協定。與前兩卷一樣,本書介紹了4.4BSD-Lite網路代碼中的示例和實現細節。

作者簡介

W. 理察?史蒂文斯(W. Richard Stevens)
博士,是國際知名的UNIX和網路專家、受人尊敬的技術作家和諮詢顧問。他教會了一代網路專業人員使用TCP/IP的功能,使網際網路成為人們日常生活的中心。Stevens於1999年去世,年僅48歲。在短暫而精彩的一生中,他著有多部經典的傳世之作,包括《TCP/IP詳解》(三卷本)、《UNIX網路編程》(兩卷本)以及《UNIX環境高級編程》。2000年他被國際機構Usenix追授“終身成就獎”。

圖書目錄

出版者的話
本書讚譽
譯者序
前言
第一部分 TCP事務協定
第1章 T/TCP概述1
1.1 概述1
1.2 UDP上的客戶-伺服器1
1.3 TCP上的客戶-伺服器6
1.4 T/TCP上的客戶-伺服器12
1.5 測試網路15
1.6 時間測量程式15
1.7 套用17
1.8 歷史19
1.9 實現20
1.10 小結21
第2章 T/TCP協定23
2.1 概述23
2.2 T/TCP中的新TCP選項23
2.3 T/TCP實現所需變數25
2.4 狀態變遷圖27
2.5 T/TCP的擴展狀態28
2.6 小結30
第3章 T/TCP使用舉例31
3.1 概述31
3.2 客戶重新啟動31
3.3 常規的T/TCP事務33
3.4 伺服器收到過時的重複SYN34
3.5 伺服器重啟動35
3.6 請求或應答超出報文段最大長度36
3.7 向後兼容性39
3.8 小結41
第4章 T/TCP協定(續)43
4.1 概述43
4.2 客戶的連線埠號和TIME_WAIT狀態43
4.3 設定TIME_WAIT狀態的目的45
4.4 TIME_WAIT狀態的截斷48
4.5 利用TAO跳過三次握手51
4.6 小結55
第5章 T/TCP實現:插口層56
5.1 概述56
5.2 常量56
5.3 sosend函式56
5.4 小結58
第6章 T/TCP實現:路由表59
6.1 概述59
6.2 代碼介紹59
6.3 radix_node_head結構60
6.4 rtentry結構61
6.5 rt_metrics結構61
6.6 in_inithead函式61
6.7 in_addroute函式62
6.8 in_matroute函式63
6.9 in_clsroute函式63
6.10 in_rtqtimo函式64
6.11 in_rtqkill函式66
6.12 小結69
第7章 T/TCP實現:協定控制塊70
7.1 概述70
7.2 in_pcbladdr函式71
7.3 in_pcbconnect函式71
7.4 小結72
第8章 T/TCP實現: TCP概要73
8.1 概述73
8.2 代碼介紹73
8.3 TCP的protosw結構74
8.4 TCP控制塊74
8.5 tcp_init函式75
8.6 tcp_slowtimo函式75
8.7 小結76
第9章 T/TCP實現:TCP輸出77
9.1 概述77
9.2 tcp_output函式77
9.3 小結83
第10章 T/TCP實現:TCP函式84
10.1 概述84
10.2 tcp_newtcpcb函式84
10.3 tcp_rtlookup函式85
10.4 tcp_gettaocache函式86
10.5 重傳逾時間隔的計算86
10.6 tcp_close函式89
10.7 tcp_msssend函式90
10.8 tcp_mssrcvd函式91
10.9 tcp_dooptions函式96
10.10 tcp_reass函式98
10.11 小結99
第11章 T/TCP實現:TCP輸入101
11.1 概述101
11.2 預處理103
11.3 首部預測104
11.4 被動打開的啟動105
11.5 主動打開的啟動108
11.6 PAWS:防止序號重複114
11.7 ACK處理115
11.8 完成被動打開和同時打開115
11.9 ACK處理(續)116
11.10 FIN處理118
11.11 小結119
第12章 T/TCP實現:TCP用戶請求120
12.1 概述120
12.2 PRU_CONNECT請求120
12.3 tcp_connect函式120
12.4 PRU_SEND和PRU_SEND_EOF請求124
12.5 tcp_usrclosed函式125
12.6 tcp_sysctl函式126
12.7 T/TCP的前景126
12.8 小結127
第二部分 TCP的其他套用
第13章 HTTP:超文本傳輸協定129
13.1 概述129
13.2 HTTP和HTML概述130
13.3 HTTP132
13.4 一個例子136
13.5 HTTP的統計資料138
13.6 性能問題139
13.7 小結141
第14章 在HTTP伺服器上找到的分組142
14.1 概述142
14.2 多個HTTP伺服器144
14.3 客戶端SYN的到達間隔時間145
14.4 RTT的測量149
14.5 用listen設定入連線佇列的容量150
14.6 客戶端的SYN選項154
14.7 客戶端的SYN重傳156
14.8 域名157
14.9 逾時的持續探測157
14.10 T/TCP路由表大小的模擬160
14.11 mbuf的互動162
14.12 TCP的PCB高速快取和首部預測163
14.13 小結165
第15章 NNTP:網路新聞傳輸協定166
15.1 概述166
15.2 NNTP167
15.3 一個簡單的新聞客戶170
15.4 一個複雜的新聞客戶171
15.5 NNTP的統計資料172
15.6 小結173
第三部分 Unix域協定
第16章 Unix域協定:概述175
16.1 概述175
16.2 用途176
16.3 性能177
16.4 編碼舉例177
16.5 小結179
第17章 Unix域協定:實現180
17.1 概述180
17.2 代碼介紹180
17.3 Unix domain和protosw結構181
17.4 Unix域插口地址結構182
17.5 Unix域協定控制塊183
17.6 uipc_usrreq函式185
17.7 PRU_ATTACH請求和unp_attach函式186
17.8 PRU_DETACH請求和unp_detach函式187
17.9 PRU_BIND請求和unp_bind函式189
17.10 PRU_CONNECT請求和unp_connect函式191
17.11 PRU_CONNECT2請求和unp_connect2函式195
17.12 socketpair系統調用198
17.13 pipe系統調用202
17.14 PRU_ACCEPT請求203
17.15 PRU_DISCONNECT請求和unp_disconnect函式204
17.16 PRU_SHUTDOWN請求和unp_shutdown函式205
17.17 PRU_ABORT請求和unp_drop函式206
17.18 其他各種請求207
17.19 小結209
第18章 Unix域協定:I/O和描述符的傳遞210
18.1 概述210
18.2 PRU_SEND和PRU_RCVD請求210
18.3 描述符的傳遞214
18.4 unp_internalize函式218
18.5 unp_externalize函式220
18.6 unp_discard函式221
18.7 unp_dispose函式222
18.8 unp_scan函式222
18.9 unp_gc函式223
18.10 unp_mark函式230
18.11 性能(再討論)231
18.12 小結231
附錄A 測量網路時間232
附錄B 編寫T/TCP應用程式242
參考文獻246
縮略語251

圖書前言

引言和本書的組織
本書是套書《TCP/IP詳解》的第3卷,這套書的卷1是[Stevens 1994],卷2是[Wright and Stevens 1995]。本書分成三個部分,每個部分覆蓋了不同的內容。
1) TCP事務協定,通常叫作T/TCP。這是對TCP的擴展,其設計目的是使客戶-伺服器事務更快、更高效和更可靠。這個目標的實現省略了連線開始時TCP的三次握手,並縮短了連線結束時TIME_WAIT狀態的持續時間。我們將會看到,在客戶-伺服器事務中,T/TCP的性能與UDP相當,而且T/TCP具有可靠性和適應性,這兩點相對UDP來說都是很大的改進。
事務是這樣定義的:一個客戶向伺服器發出請求,接下來是伺服器給出回響(這裡的名詞“事務”(transaction)並非資料庫中的事務處理,資料庫中的事務處理有封鎖、兩步提交和回退)。
2) TCP/IP套用,特別是HTTP(超文本傳輸協定,WWW的基礎)和NNTP(網路新聞傳輸協定Usenet新聞系統的基礎)。
3) Unix域協定。這些協定是所有Unix的TCP/IP實現中都提供的,在許多非Unix的實現中也有提供。這些協定提供了一種進程之間通信(IPC)的手段,採用了與TCP/IP中一樣的插口接口。當客戶與伺服器進程在同一主機上時,Unix域協定通常要比TCP/IP快1倍。
第一部分是對T/TCP的介紹,又分成兩個小部分。第1~4章介紹協定,並給出了大量實例來說明它們是怎樣工作的。這些材料主要是對卷1中24.7節的補充,在那裡對T/TCP只是做了簡單的介紹。第5~12章介紹T/TCP在4.4BSD-Lite網路代碼(即卷2中給出的代碼)中的確切實現。由於最早的T/TCP實現遲至1994年9月才發布,已經是本書卷1出版一年以後了,那時卷2也快完成了,因此T/TCP的詳細敘述,包括諸多實例和所有的實現細節都只好放在本系列書的卷3中了。
第二部分介紹HTTP和NNTP套用,是卷1的第25~30章中介紹的TCP/IP套用的延續。在卷1出版後的兩年里,隨著Internet的發展,HTTP得到了極大的流行,而NNTP的使用則在最近的10多年中每年增長了大約75%。T/TCP對HTTP來說也是非常好的,可以這樣來用TCP:在少量數據傳輸中縮短連線時間,因為這種時候連線的建立和拆除時間往往占總時間的大頭。在繁忙的Web伺服器上,成千上萬個不同而且不斷變化的客戶對HTTP(因此也對TCP)的高負荷使用,也提供了唯一可以對伺服器上確切的分組進行考察的機會(第14章),可以回顧卷1和卷2中給出的TCP/IP的許多特性。
第三部分中的Unix域協定原本是準備在卷2中介紹的,但由於卷2已多達1200頁而刪去了。在名為《TCP/IP詳解》這樣的套書中夾雜著TCP/IP以外的協定不免令人奇怪,但Unix域協定幾乎15年前就已經伴隨著BSD版TCP/IP的實現在4.2BSD中發布了。今天,它們在任何一個從伯克利衍生而來的核心中都在頻繁地使用,但它們的使用往往“被掩蓋在後台”,大多數用戶不知道它們的存在。除了在從伯克利衍生而來的核心中充當Unix管道的基礎外,它們的另一個大用戶是當客戶程式和伺服器程式在同一主機(典型的情況是工作站)上時的X Window系統。Unix域的插口也用於進程之間傳遞描述符,是進程之間通信的一個強大工具。由於Unix域協定所用的插口API(套用編程接口)與TCP/IP所用的插口API幾乎是相同的,Unix域協定以最小的代碼變化提供了一個簡單的手段來增強本地套用的性能。
以上三個部分的每個部分都可以獨立閱讀。
讀者
與這套書的前兩卷一樣,這一卷是為所有想要理解TCP/IP如何工作的人寫的:編寫網路套用的程式設計師,負責維護採用TCP/IP的計算機網路的系統管理員,以及在日常工作中經常與TCP/IP應用程式打交道的用戶。
第一和第二部分是理解TCP/IP工作原理的基礎。不熟悉TCP/IP的讀者應該看看這套書的卷1,見[Stevens 1994],以便對TCP/IP協定集有一個全面的了解。第一部分的前半部分(第1~4章,TCP/IP中的概念和例子)與卷2無關,可以直接閱讀。但後半部分(第5~12章,T/TCP的實現)則需要先熟悉4.4 BSD-Lite網路程式,這些內容在卷2中介紹。
在整本書中有大量的向前和向後參考索引,這些參考索引是針對本書的兩個主題,以及對卷1和卷2的內容,為想要了解更詳細內容的讀者提供的。在本書最後有書中用到的所有縮略語,書中介紹的所有結構、函式和宏(以字母順序排列)及其介紹起始頁碼的交叉索引。如果本書引用了卷2中的定義,則該交叉索引也列出了卷2中的定義。
源碼著作權
本書中引自4.4BSD-Lite版的所有源碼(源程式)都包括下面這樣的著作權聲明:
第6章路由表的源碼則包括下面這樣的著作權聲明:
印刷慣例
當需要顯示互動的輸入和輸出信息時,將用黑體表示鍵盤輸入,而計算機輸出則用Courier體,並用中文宋體做注釋。
書中總是把系統名作為命令解釋程式提示符的一部分(例如sun),以說明命令是在哪個主機上執行的。在正文中引用的程式名通常都是首字母大寫(如Telnet和Tcpdump),以避免過多的字型形式。
在整本書中,我們會使用這種縮進格式的附加說明來描述實現細節或歷史觀點。
W. Richard Stevens
圖森,亞利桑那
1995年11月

相關詞條

熱門詞條

聯絡我們