關於開發網絡應用程序時,傳輸層協議的選擇

1 相關介紹

應用程序開發者可以控制套接字在應用層端的一切,但是對該套接字的傳輸層端幾乎沒有控制權。應用程序開發者對於傳輸層的控制僅限於:選擇傳輸層協議、也許能設定幾個傳輸層參數,如最大緩存和最大報文段長度。一旦應用程序開發者選擇了一個傳輸層協議,則應用程序就建立在由該協議提供的傳輸層服務之上。

2 問題描述

套接字是應用程序集成與傳輸層協議之間的接口。在發送端的應用程序將報文推進該套接字,在該套接字的另一側,傳輸層協議負責使該報文進入接收進程的套接字。
包括因特網在內的很多網絡提供了不止一種傳輸層協議,當開發一個新的網絡應用程序時,如何選擇其傳輸層協議了(TCP/UDP)?

3 解決辦法

通過研究可用的傳輸層協議所提供的服務,選擇一個最能爲你的應用需求提供恰當服務的協議。大體上能夠從四個方面對應用程序服務要求進行分類:可靠數據傳輸、吞吐量、定時、安全性。

3.1 可靠數據傳輸

傳輸層協議能夠潛在地嚮應用程序提供一個重要服務是進程到進程的可靠數據傳輸,當傳輸層協議提供這種服務時,發送進程只要將其數據傳遞進套接字,就可以確定該數據可無差錯地到達接收進程。電子郵件、文件傳輸、遠程主機訪問、Web文檔傳輸以及金融應用等,數據丟失可能造成災難性後果,對可靠數據傳輸需求較大;多媒體應用,如音頻、視頻流,可承受一定量的數據丟失,對可靠數據傳輸需求不大。

3.2 吞吐量

傳輸層協議能夠以某種特定的速率提供確保的可用吞吐量(至少爲r比特/秒)。具有吞吐量要求的應用程序被稱爲帶寬敏感的應用,許多當前的多媒體應用是帶寬敏感的,儘管某些多媒體應用程序可能採用自適應編碼技術對數字語音或視頻以與當前可用帶寬相匹配的速率進行編碼。
而彈性應用,能夠根據情況或多或少地利用可供使用的吞吐量。電子郵件、文件傳輸以及Web傳送都屬於彈性應用。

3.3 定時

傳輸層協議也能提供定時保證。例如:發送方注入進套接字中的每個比特到達接收方的套接字不少於100ms。這種服務對交互式實時應用程序很有吸引力,如因特網電話、虛擬環境、電話會議和多方遊戲。

3.4 安全性

傳輸協議能夠爲應用程序提供一種或多種安全性服務。在發送主機中,傳輸協議能夠加密由發送進程傳輸的所有數據,在接收主機中,傳輸層協議能夠在將數據交付給接收進程之間解密這些數據。傳輸協議除了能提供機密性安全服務外,還能提供完整性和端點鑑別。

4 某些應用程序服務要求

這裏寫圖片描述

5 TCP/UDP提供服務對比

5.1 TCP

TCP服務模型包括面向連接服務和可靠數據傳輸服務。
面向連接服務。在應用層數據報文開始流動之前,客戶端和服務端建立一個全雙工的TCP連接(連接雙方的進程可以在此連接上同時進行報文收發),當應用程序結束報文發送時,必須拆除該連接。
可靠的數據傳送服務。通信進程能夠依靠TCP,無差錯、按適當順序交付所有發送的數據,當應用程序一端將字節流傳進套接字時,它能夠依靠TCP將相同的字節流交付給接收方的套接字,而沒有字節的丟失和冗餘。
TCP協議還具有擁塞控制機制。當發送方和接收方之間的網絡出現擁塞時,TCP的擁塞控制機制會抑制發送進程。

5.2 UDP

UDP是一種不提供不必要服務的輕量級傳輸協議,它僅提供最小服務。(無連接、不可靠數據傳送)(當進程將一個報文發送進UDP套接字時,UDP協議不保證該報文將到達接收進程,且到達接收進程的報文也可能是亂序的)。
UDP也無擁塞控制機制。

5.3 關於TCP與UDP的安全性

TCP與UDP均沒有提供任何加密機制,也即均採用明文傳輸。(如果某發送進程以明文方式發送一個口令進入它的套接字,該明文口令將經過發送方和接收方之間的所有鏈路,這就可能在任何中間鏈路被嗅探和發現。)
SSL是基於TCP的安全版傳輸層協議,它不僅能夠完成傳統TCP所能完成的,還能提供關鍵的進程到進程的安全型服務,包括加密、數據完整性和端點鑑別。SSL是一種對TCP的加強,這種強化是在應用層上實現的。(如果一個應用程序需要使用SSL服務,它需要在該應用程序的客戶端和服務器端包括SSL代碼)(SSL有它自己的套接字API,當一個應用使用SSL時,發送進程向SSL套接字傳遞明文數據,發送主機中的SSL則加密該數據並將加密的數據傳遞給TCP套接字)。

5.4 關於TCP與UDP的定時與帶寬

儘管今天的因特網通常能夠爲時間敏感應用提供滿意的服務,但TCP與UDP不能提供任何定時或帶寬保證,它們被設計成盡最大可能對付這種保證的缺乏。

6 一些網絡應用程序使用的傳輸層協議

這裏寫圖片描述

7 參考資料

參考《計算機網絡-自頂向下方法》,可從此鏈接下載本書。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章