計算機網路2——網路應用、應用層(上)
一、網路應用的體系結構
網路應用與單機應用本質性不同,網路應用需要網路的基礎環境,一部分應用執行在自己的計算機,資料資訊等執行在網際網路的某個硬體伺服器,兩部分軟體互相互動。
1、客戶機/伺服器結構(Client-Server,C/S)
伺服器:7*24小時提供服務;永久性訪問的地址/域名;利用大量伺服器實現可擴充套件性(大量伺服器分散式,同時處理大量使用者的併發請求)。
客戶機:與伺服器通訊,使用伺服器提供的服務;間接性接入網路;可能使用動態IP地址;不會與其它客戶機直接通訊。
2、點對點結構(Peer-to-peer,P2P)
沒有永遠線上的伺服器;任意端系統/節點之間可以直接通訊;節點間歇性接入網路;節點可能改變IP地址。
高度可壓縮,但難於管理。
3、混合結構(Hybrid)
Napster:檔案傳輸使用P2P結構;檔案搜尋採用C/S結構(集中式),每個節點向中央伺服器登記自己的內容,每個節點向中央伺服器提交查詢請求,查詢感興趣的內容。
二、網路應用程序通訊
程序是指主機上執行的程式。同一主機上執行的程序之間通訊,作業系統提供程序間通訊機制;不同主機上執行的程序間通訊,訊息(報文)交換。客戶機程序是發起通訊的程序,伺服器程序是等待通訊請求的程序。
不同主機的程序間通訊利用套接字(Socket)機制傳送/接收訊息,socket是作業系統提供的一種抽象,把網路的硬體基礎設施及網路協議棧抽象。類似於寄信,傳送方將訊息送到門外郵箱,依賴門外的傳輸基礎設施將訊息傳到接收方門外,接收方從門外獲取訊息。
傳輸基礎設施向程序提供網路的API——socket,傳輸協議的選擇,引數的設定。
(1)定址程序
不同主機上的程序間通訊,那麼每個程序必須擁有識別符號。
通過IP地址定址主機,為主機上每個需要通訊的程序分配一個埠號Port number。已經約定的埠號,如HTTP Server 80、Mail Server 25。
程序的識別符號,IP地址+埠號。
(2)應用層協議
網路應用需遵循應用層協議。
公開協議,由RFC(Request For Comments)定義,允許互操作,HTTP, SMTP, ……。想要詳細研究協議需要看其RFC文件https://www.ietf.org/standards/rfcs/
私有協議,多數P2P檔案共享應用。
(3)應用層協議的內容
訊息的型別(type):請求訊息、響應訊息;
訊息的語法(syntax)/格式:訊息中有哪些欄位(field)、每個欄位如何描述;
欄位的語義(semantics):欄位中資訊的含義;
規則(rules):程序何時傳送/響應訊息、程序如何傳送/響應訊息。