「網絡應用是計算機網絡存在的理由,若是咱們不能構想出任何有用的應用,也就沒有任何須要去設計支持它們的網絡協議了。「服務器
應用層位於因特網協議棧的最頂層,是網絡應用程序以及它們的應用層協議存留的地方。應用層包含了許多協議,好比HTTP(超文本傳輸協議)、SMTP(簡單郵件傳輸協議)、FTP(文件傳輸協議)、DNS(域名系統)等等。應用層協議分佈在多個端系統上,一個端系統中的應用系統使用協議與另一個端系統中的應用程序交換信息分組(packet)——這種位於應用層的信息分組,咱們稱之爲報文(message)。網絡
在應用層的學習中,咱們須要對現代網絡應用程序中所使用的主流體系結構,以及對運行在多個端系統上的程序是如何互相通訊的有一個基本瞭解。學習
咱們熟悉的不少應用程序就是創建在應用層協議等多種協議的基礎之上。研究網絡應用程序的核心就是寫出可以運行在不一樣的端系統上、並經過網絡彼此通訊的程序。應用程序體系結構由應用程序開發者設計、規定了如何在各類端系統上組織該應用程序。計算機網絡
主要的應用程序體系結構有如下兩種:1.客戶 — 服務器體系結構 2. P2P體系結構scala
1.服務器——老是活躍的主機,具備固定、周知的地址(IP地址),服務於許多稱爲客戶的主機的請求。設計
2.客戶——客戶經過向服務器IP地址發送分組來與其聯繫,客戶相互之間不直接通訊。視頻
服務器接收到某客戶對某對象的請求(request)時,它對該客戶發送所請求的對象做爲響應(response)。server
這種體系結構中應用程序包括FTP、Telnet和電子郵件等。對象
在一個客戶 — 服務器應用中,經常會出現一臺單獨的服務器主機沒法知足全部客戶請求的狀況。爲此,配備大量主機的數據中心(data center)常被用來建立強大的虛擬服務器(virtual server)。數據中心可能有不少臺服務器,須要維護,以及足夠的帶寬來知足數據傳輸的需求 。進程
在一個P2P體系結構中,對位於數據中心中的專用服務器依賴很小或者沒有依賴,應用程序進程在間斷鏈接的主機對間直接通訊,這些主機對被稱爲對等方(peers)。這種對等方通訊沒必要經過專門的服務器。
許多流行的、流量密集型應用都是P2P體系結構的,包括文件共享(好比BitTorrent)、下載協助器(好比迅雷)、因特網電話和視頻協議(好比Skype)等。
這種體系結構最主要的優勢是自擴展性(self-scalability),並且不須要龐大的服務器基礎設施和服務器帶寬。