TCP的半連接


T C P提供了連接的一端在結束它的發送后還能接收來自另一端數據的能力。這就是所謂
下載
的半關閉。正如我們早些時候提到的只有很少的應用程序使用它。
為了使用這個特性,編程接口必須為應用程序提供一種方式來說明“我已經完成了數據
傳送,因此發送一個文件結束( F I N)給另一端,但我還想接收另一端發來的數據,直到它給
我發來文件結束(F I N)”。
如果應用程序不調用c l o s e而調用s h u t d o w n,且第2個參數值為1,則插口的A P I支持
半關閉。然而,大多數的應用程序通過調用close終止兩個方向的連接。

 


為什么要有半關閉?一個例子是 U n i x中的r s h( 1 )命令,它將完成在另一個系統上執行一
個命令。命令
sun % rsh bsdi sort < datafile
將在主機b s d i上執行s o r t排序命令,r s h命令的標准輸入來自文件d a t a f i l e。r s h將在它
與在另一主機上執行的程序間建立一個 T C P連接。 r s h的操作很簡單:它將標准輸入
(d a t a f i l e)復制給T C P連接,並將結果從 T C P連接中復制給標准輸出(我們的終端)。圖顯示了這個建立過程(牢記TCP連接是全雙工的)。

在遠端主機b s d i上,r s h d服務器將執行s o r t程序,它的標准輸入和標准輸出都是 T C P
連接。
s o r t程序只有讀取到所有輸入數據后才能產生輸出。所有的原始數據通過 T C P連接從
r s h客戶端傳送到s o r t服務器進行排序。當輸入( d a t a f i l e)到達文件尾時, r s h客戶端
執行這個T C P連接的半關閉。接着s o r t服務器在它的標准輸入(這個 T C P連接)上收到一個
文件結束符,對數據進行排序,並將結果寫在它的標准輸出上( T C P連接)。r s h客戶端繼續
接收來自T C P連接另一端的數據,並將排序的文件復制到它的標准輸出上。
沒有半關閉,需要其他的一些技術讓客戶通知服務器, 客戶端已經完成了它的數據傳送,但
仍要接收來自服務器的數據。使用兩個T C P連接也可作為一個選擇,但使用半關閉的單連接更好。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM