tcpip詳解卷三事務協(xié)議http nntp和unix域_第1頁
tcpip詳解卷三事務協(xié)議http nntp和unix域_第2頁
tcpip詳解卷三事務協(xié)議http nntp和unix域_第3頁
tcpip詳解卷三事務協(xié)議http nntp和unix域_第4頁
tcpip詳解卷三事務協(xié)議http nntp和unix域_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第三部第三部 Unix域協(xié)第16章UnixUnix域協(xié)議是進程間通信(IPC)的一種形式,可以通過與網(wǎng)絡通信中使用的相同插口API來它們。圖16-1的左邊表示使用插口寫成的客戶程序和服務器程序,它們在同一臺主機上利用Internet協(xié)議進行通信。圖16-1的右邊表示用插口寫的利用Unix域協(xié)議進行通信的客戶 圖16- 當客戶進程通過TCPTCP輸出處理,然后再經過IP(見卷2的5.4節(jié)),在環(huán)回驅動器中,數(shù)據(jù)首先被放到IP輸入隊列,然后經過IP輸入和TCP輸入處理,最后傳送到服務器。這樣工作得很好,并且對于在相同主機上的對等端()來說是透明的。然而,在TCP/IP協(xié)議棧里需要大量的處理過程,當數(shù)據(jù)沒有離開主機時,這些處理過程實際上是不需要的。Unix域協(xié)議由于知道數(shù)據(jù)不會離開主機,所以只需要較少的處理過程(這樣數(shù)據(jù)傳送就快多了)器進程的執(zhí)行過程,流量控制也被大大簡化了,等等。雖然IPC的其他形式也有這些優(yōu)點(消息隊列、共享內存、命名管道,等等),但是,Unix域協(xié)議的優(yōu)點在于它們使用的接口與網(wǎng)絡應用程序使用的插口接口完全一樣:客戶程序調用connect,服務器程序調用listen和 第三部分Unixaccept,兩者都調用read和write,等等。而其他形式的IPC使用完全不同的API一些不能與插口以及其形方式的I/O(V消息隊列中我們不能使用select函數(shù))。一些TCP/IP實現(xiàn)努力通過優(yōu)化去提高性能,例如當目的地址是環(huán)回接口時可以忽略TCP檢驗和的計算和驗證。Unix域協(xié)議既提供一個流插口(SOCK_STREAM,與TCP字節(jié)流相似),又提供一個數(shù)據(jù)報插口(SOCK_DGRAM,與UDP數(shù)據(jù)報相似)。Unix域插口的地址族是AF_UNIX。在Unix域協(xié)議中用于標識插口的名字是文件系統(tǒng)的路徑名(Internet協(xié)議使用IP地址和端的組合來標識TCP和UDP插口)。網(wǎng)絡編程API標準IEEEPOSIX1003.1g也支持Unix域協(xié)議,它使用的名稱是“l(fā)ocalIPC。其地址族是AF_LOCAL,協(xié)議族是PF_LOCAL。因而使用術語“Unix”來描述這些協(xié)議也許已成為歷史。Unix域協(xié)議還能提供在不同機器之間進程間通信時所沒有的功能。這能就是描述符傳遞,即通過Unix域協(xié)議在互不相關的進程間傳送描述符的能力,這個例子在第18章討論。許多應用程序使用Unix管道。在一個源于伯克利的內核里,使用Unix域流插口來實現(xiàn)管道。在17.13節(jié)里我們XWindow系統(tǒng)。當與X1X11客戶進程通?;贒ISY環(huán)境變量的值或基于-disy命令行參數(shù)值來決定使用什么協(xié)議。這個值的形式是hostnamedis.sceen,這里hostname是可選的,默認值是當前主機,使用的協(xié)議是最有效的通信方式,其中典型的是Unix域流協(xié)議。值unix強制使用Unix域流協(xié)議。服務器綁定到Unix插口上的名字類似于/tmp/.X11-unix/X0。由于X服務器進程通常處理在同一臺主機或者網(wǎng)絡上的客戶進程的請求,這就意味著服務器進程需要等待接請求到達TC插口或者ni流插口。BSD打印假脫機系統(tǒng)(lpr客戶進程和lpd服務器進程,在[Stevens1990的第13章詳細描述)使用一個名為/dev/lp的Unix域流插口在相同的主機上進行通信。像X服務器一lpd服務器使用Unix插口處理在相同主機上客戶進程的連接,或者使用TCP插口BSD系統(tǒng)記錄器(syslog庫函數(shù),可以被任何應用程序調用)和syslogd服務器程序(使用一個名為/dev/log的Unix域數(shù)據(jù)報插口在相同的主機上進行通信)??蛻暨M程寫一個消息到插口上,服務器進程讀出來并進行處理。服務器進程也處理來自其他主機上使用UDP插口的客戶進程的消息,關于這種機制的詳細介紹見[Stevens1992]的13.4.2節(jié)。InterNetNews守護程序(innd)創(chuàng)建一個Unix數(shù)據(jù)報插口來控制報文,一個Unix流插口來本地閱讀器上的文章。這兩個插口分別是control和nntpin,通常第第16章Unix域協(xié)議:概 是在 Unix 比較Unix域插口與TCP插口的性能是非常有趣的。除 TCP和UDP插口,修改公共ttcp程序的一個版本,使之使用一個Unix域流插口。我們在同一臺主機上運行的兩個程序副本之間傳送16777216個字節(jié)的數(shù)據(jù),結果如圖16-2所示。 圖16- 我們感的是從一個TCP插口到一個Unix(這些測試運行在五個不同系統(tǒng)上,覆蓋了不同的處理器速度,在不同的行上進行速度比較毫無意義)。所有的內核都是源于伯克利,而不是Solaris2.4。我們可以看到,在源于伯克利內核上的Unix插口比TCP插口要快兩倍多,在Solaris下增長率要慢得多。SVR4以及源于它的Solaris,采用了完全不同的方法來實現(xiàn)Unix域插口。[Rago在這些試,術“FastestTCP(最塊的TCP)”意味著這些測試是在下列情況下進行的:將發(fā)送緩存和接收緩存都設置為32768(這個值要比一些系統(tǒng)中的默認值大),直接指定環(huán)回地而不是主機自己的IP地址。在早期的BSD實現(xiàn)中,如果指定了主機的IP地址,那么在ARP碼執(zhí)行之前分組不會發(fā)送到環(huán)回接口(卷1圖2-4),這稍微降低了性能(這就是為什么定時測試運行時要指定環(huán)回地址)。這些主機都有一個本地子網(wǎng)的網(wǎng)絡 ,其接口就是網(wǎng)絡的設備驅動程序,卷1第87頁中間網(wǎng)絡 2就是一個例子(SunOS4.1.3)較新的BS核有一條到主機本身IP地址的路由,其接口就是環(huán)回驅動程序,卷 2圖18-2中5就是一個例子(BSD/OSV2.0)。在討論Unix域協(xié)議的實現(xiàn)后,在18.11節(jié)再返回到性能問題。為了說明如何縮小一個TCP客戶-服務器與一個Unix域客戶-服務器之間的差別,我們修改了圖1-5和圖1-7中的客戶-服務器,使它們利用Unix域協(xié)議通信。圖16-3表示Unix序,與圖1-5的不同之處用黑體字表示。2 我們包含了<sys/un.h>頭文件,客戶和服務器的插口地址結構現(xiàn)在是11-15socket調用的協(xié)議族是PF_UNIX,調用strncpy將與服務器相聯(lián)系的路徑名(從命令行參數(shù)得到)寫入插口的地址結構。 第三部分Unix圖16- 圖16-4Unix第16章Unix域協(xié)議:概第16章Unix域協(xié)議:概 2-7我們包含了<sys/un.h>頭文件,并且定義了與服務器相聯(lián)系的路徑名(通常路經名應在客戶程序和服務器程序都包含的頭文件中定義,為了簡單,我們在這里定義)。現(xiàn)在的插口1314調用strncpyUnix域協(xié)議提供了進程間通信的一種形式,它使用同網(wǎng)絡通信相同的編程接口 (插口)Unix域協(xié)議既提供類似于TCP的流插口,又提供類似于UDP的數(shù)據(jù)報插口。從Unix域協(xié)議能獲得

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論