5-5 傳輸服務元件
『傳輸服務元件』(Transport Service Element)是讓使用者(或應用程式)來存取傳輸服務的介面。傳輸服務與網路服務之間的相異如下:網路服務是用來模式化真實網路所提供的服務,然而傳輸服務是提供一個與實際網路無關的抽象環境,讓使用者來連接。真實網路上會有封包遺失與封包錯誤的現象,因此網路服務通常都不太可靠;但傳輸服務主要訴求在於脫離真實網路環境,並提供一個抽象化的系統介面,讓使用者直接存取而無須理會真實環境。亦即在較不可靠的網路環境上,提供一個可靠的介面服務。至於如何提供可靠的傳輸介面,如錯誤偵出、連線管理、資料遺失、或資料重複等等問題,乃是傳輸層的主要功能。 正因如此,使用者連接傳輸服務介面時,無須考慮網路上可能發生的各種情況,以及網路的架構為何。傳輸服務元件好比是一般作業系統中的系統呼叫(System Call)一樣,其處理方式也如同『程序與程序間通訊』(Process-to-process communication)的運作方式。對使用者而言,其『不知道也不需要知道網路的存在,或網路上資源的存取方式』。網路上的傳輸服務元件多半大同小異,我們以柏克萊(Berkeley)Unix系統的TCP協定為例,其服務元件如下:
圖 5-7 傳輸鏈路
使用者可直接透過檔案描述子(socket())來執行傳送與接收(send()/receive())的動作,當執行 send() 時,是將資料傳送緩衝器內,而緩衝器以先進先出(First-in First-out, FIFO)的佇列排列,網路層再依序傳送到網路上;接收端收到資料後,也依照 FIFO 佇列的順序排列於接收緩衝器上,等待使用者以 receive() 呼叫來索取。如以抽象資料型態來觀察,雙方通訊的動作就如同管道(pipe)連線一樣,如圖 5-7 所示。又從另一個觀點來看,當傳送端到將資料寫入管道時,並不表示資料已發送到網路上,而如何發送到網路上,是依照作業系統的排序順序來決定;由接收端而言,當執行一個 receive() 呼叫時,是由接收緩衝器上讀取一份資料,但此時緩衝器不一定會有資料可讀取,因此也可能發生等待的現象,到底是否要等待也是由作業系統(或應用程式)來決定。 |
翻轉工作室:粘添壽
電腦網路與連結技術:
翻轉電子書系列:
|