網絡核心設備並不在應用層上起作用,而僅在較低層起作用,特別是位於網絡層及下面層次。這種基本設計,也即將應用軟件限制在端系統的方法,促進了大量的網絡應用程序的迅速研發和部署。
一、網絡應用程序的體系結構
- 客戶 - 服務器體系架構 (client-server architecture)
有一個總是打開的主機稱為服務器,服務來自其他許多稱為客戶的主機的請求;客戶相互之間不直接通信。
常常會出現一台單獨的服務器主機跟不上所有客戶請求的情況。為此,配備大量主機的數據中心常被用於創建強大的虛擬服務器。 - P2P體系結構 (P2P architecture)
對位於數據中心的專用服務器有最小的(或着沒有)依賴。應用的程序在間斷連接的主機對之間使用直接通信,這些主機被稱為對等方。
目前許多流行的、流量密集型的應用都是P2P體系結構的。包括文件共享、因特網電話、IPTV。
某些應用具有混合的體系結構。對於許多即時訊息應用而言,服務器被用於跟蹤用戶的IP地址,但用戶到用戶的報文在用戶主機之間直接發送。
P2P應用具有自擴展性 (self-scalability),也是成本有效的。但未來P2P應用面臨三個挑戰:
- ISP友好。ISP受制於“非對稱”帶寬應用,下載要比上載多得多。
- 安全性。 P2P是高度開放和分布的。
- 激勵。 需要說服用戶自願向應用提供帶寬、存儲和計算資源。
- ISP友好。ISP受制於“非對稱”帶寬應用,下載要比上載多得多。
二、進程通信
在操作系統術語中,進行通信實際上是進程 (process)。
- 客戶和服務器進程
網絡應用程序由成對的進程組成,這些進程通過網絡互相發送報文。 - 進程和計算機網絡之間的接口
進程通過一個稱為套接字 (socket) 的軟件接口向網絡發送報文和從網絡接收報文。

套接字是同一台主機內應用層與運輸層之間的接口。由於套接字是建立網絡應用程序的可編程接口,因此套接字也被稱為應用程序和網絡之間的應用程序編程接口。
應用程序開發者可以控制套接字在網絡層的一切,但對該套接字的運輸層端幾乎沒有控制權。 - 進程尋址
為了標識進程的地址,需要兩個信息:
- 主機的地址,即IP地址
- 主機中進程的標識符,即端口號
- 主機的地址,即IP地址
三、運輸層服務
可以從四個方面來考察運輸層協議對應用層程序提供的服務。
- 可靠數據傳輸
如果一個協議提供了確保數據交付服務,就認為提供了可靠數據傳輸 (reliable data transfer)。
當一個運輸層協議不提供可靠數據傳輸時,由發送進程發送的某些數據可能不能夠到達接收進程。這可能能被容忍丟失的應用 (loss-tolerant application) 所接受,最值得注意的是多媒體應用。 - 吞吐量
可用吞吐量就是發送進程能夠向接收進程交付比特的速率,該可用吞吐量將隨時間波動。這導致另一種自然的服務,即運輸層協議能夠以某種特定的速率提供確保的可用吞吐量,該協議能夠確保可用吞吐量總是至少r比特/秒。
具有吞吐量要求的應用程序被稱為帶寬敏感的應用 (bandwidth-sensitive application),許多當前的多媒體應用是帶寬敏感度。
彈性應用 (elastic application) 能夠根據情況或多或少地利用可供使用的吞吐量。電子郵件、文件傳輸以及Web傳送都屬於彈性應用。 - 定時
一個保證的例子如:發送方注入進套接字中的每個比特到達接收方的套接字不遲於100ms。這些服務對交互式實時應用程序有吸引力。
因特網電話中,較長的時延會導致會話出現不自然的停頓;在游戲中,較長的時延使得它失去真實感。 安全性
運輸協議可以提供一種或多種安全性服務。SSL不是與TCP和UDP在相同層次上的第三種因特網運輸協議,它是對TCP的加強,這種強化是在**應用層**上實現的。