你錯過的夜,曾有過,怎樣皎潔的月
應用層協議原理
網路應用程式體系結構
在編寫軟體之前,我們需要對應用程式有一個寬泛的體系結構計劃。對於目前來說,一般會使用一種主流的體系結構:客戶-伺服器體系結構或對等(P2P)體系結構。
在客戶-伺服器體系結構中,有一個總是開啟的主機稱為伺服器,它有一個固定的,周知的地址,稱為IP地址,它的功能是伺服器於來自許多其他稱為客戶的主機的請求。值得注意的是,在客戶-伺服器體系結構中,客戶之間無法直接通訊。
在P2P體系結構中,應用程式的通訊對資料中心的伺服器的依賴很小(或者沒有依賴),應用程式可以直接進行通訊,這些主機被稱為對等方。這個體系的特性之一就是具有自擴充套件性。例如在一個檔案共享的應用中,雖然每個對等方請求檔案會產生工作量,但每個對等方向其他對等方傳送檔案為整個系統增加了服務能力。
但是,某些應用具有混合的體系結構,他們結合了兩種體系結構中的一些元素。例如很多的即時通訊的軟體,伺服器被用於跟蹤使用者的IP地址,但是使用者和使用者之間的通訊可以直接進行。
程序通訊
在構建應用程式之前,我們需要對應用程式之間是如何通訊的有一定的瞭解。
其實進行通訊的是程序,而不是程式。
一個程序可以被認為是執行在端系統中的一個程式,當程序執行在相同的端系統時,它們使用程序間通訊機制相互通訊。
而對於不同端系統上的程序,通過跨越計算機網路交換報文而相互通訊。傳送程序生成並向網路中傳送報文;接收程序接受這些報文並響應。
客戶和伺服器程序
在網路應用程式中,程序總是成對的出。例如在web應用程式中,瀏覽器程序與一臺web伺服器程序交換報文;在一個P2P的檔案共享系統中,兩個對等方程序相互交換檔案。對於每隊通訊程序,通常將其中之一標識為客戶,而另一個程序標識為伺服器
程序與計算機網路之間的介面
多數應用程式是由通訊程序對組成的,每對中的兩個程序互相傳送報文。從一個程序向另一個程序傳送的報文是通過一個叫做套接字(socket)的介面進行的。我們可以考慮這樣的類比:程序就像一座房子,套接字就是它的門。當一個程序想向位於另外一臺主機上的程序傳送報文時,它把報文推出該門(套接字)。當報文到達接受程序的門口時,通過接受程序的門(套接字)傳遞進去。
如圖所示,套接字是同一臺主機內應用層與運輸層之間的介面。
程序定址
在一臺主機上的程序為了向另一臺主機上執行的程序傳送分組,接受程序需要有一個地址。為了標識一個程序,需要定義兩種資訊:1.主機的地址;2.主機中接收程序的標誌符。
主機的由IP地址標識,大家應該對這個很熟悉。
接收程序的地址由埠號標識。