標籤:網路通訊協定
應用程式體繫結構application architecture,一般網路應用程式有兩種結構,客戶機/伺服器體繫結構和對等體繫結構(P2P)。
在客戶機/伺服器體繫結構client-server architecture中,有一個總是開啟的主機稱為伺服器,它為來自客戶機的請求提供服務。客戶機之間不進行直接通訊。伺服器擁有固定的周知的地址,稱為IP地址,且總是處於開啟狀態。常會出現一台伺服器主機跟不上其所有客戶機請求的情況。常使用主機群集a cluster of hosts或者稱為伺服器陣列server farm,建立強大的虛擬伺服器。基於客戶機伺服器體繫結構的應用服務通常是基礎設施密集的infrastrucuture intensive,因為要購買,安裝和維護伺服器陣列。
在P2P體繫結構中,對總是開啟的基礎設施伺服器有最小或者沒有依賴。任意時間串連的主機對稱為對等方peers,直接通訊。p2p中,最突出的特性是它的自擴充性self-scalability。
進行通訊的實際是進程process,而不是程式。不同端系統的進程通過跨越電腦網路交換報文而相互連信。分為客戶機進程和伺服器處理序。在給定的一對進程之間的通訊會話中,發起通訊的進程為客戶機進程,而等待聯絡的進程為伺服器處理序。
進程通過一個稱為通訊端socket的軟體介面在網路上發送和接收報文,通訊端是應用程式與網路之間的APIAPI。
可以根據可靠資料轉送,輸送量,定時和安全性對應用程式服務進行分類。
可靠資料轉送:可靠資料轉送reliable data transfer,運輸層進行可靠的資料轉送,當運輸層使用這種服務時,就可以相信該資料無差錯的到達接收進程。當一個運輸層協議不提供可靠資料轉送時,對於容忍丟失的應用loss-tolerant application,如多媒體應用,一定程度的資料丟失是可以接受的。
輸送量throughput:具有輸送量要求的程式稱為頻寬敏感應用bandwidth-sensitive application,大多多媒體應用都是頻寬敏感的。而彈性應用elastic appliction能夠根據需要充分利用可供使用的輸送量。
定時timing:運輸層協議也提供定時保證,如同保證輸送量一樣。不同的應用程式對時間限制不同。
安全性security:運輸層協議能夠為應用程式提供一種或多種安全性服務。
網際網路或者可以說是TCP/IP網路上的應用使用兩個運輸層協議:UDP和TCP。
TCP服務:包括連線導向服務和可靠Data Transmission Service。當應用程式層程式調用tcp協議作為它的運輸層協議時,該應用程式就獲得了這兩種服務。
連線導向服務 connection-oriented service:在報文開始流動前,客戶機程式和伺服器程式之間交換運輸層控制資訊,即握手過程 handshaking。握手過程提示客戶機和伺服器做好了傳輸分組的準備。握手後,在兩個進程的通訊端sockets之間建立了一個TCP串連TCP connection。
可靠Data Transmission Servicereliable data transfer service:進行通訊的進程,無差錯,按順序交付發送的資料。
UDP服務是不需連線的,沒有握手過程。udp不能保證報文能夠正確被接收。且沒有擁塞控制機制。
進程定址addressing processes:需要主機的名稱或地址和用來指定目的主機上接收進程的標誌。主機是用IP地址來進行標識的。進程由 目的地連接埠號碼port number來指定。
在一個主機上可能同時有多個進程都要使用同一個連接埠,如多個瀏覽器都用80連接埠來瀏覽網頁,但是作業系統規定了一個時間只能有一個進程在使用連接埠和監聽連接埠,即當你讓一個進程獲得焦點時,就是它在使用連接埠,而其他進程無法使用連接埠。
應用程式層協議定義了:
交換的報文類型,如請求報文和響應報文。
各種報文的syntax文法,如報文中每個欄位及其詳細描述。
欄位的語義,即包含在欄位中的資訊的含義。
進程何時以及如何發送報文,以及對報文進行響應的規則。
應用程式層協議是網路應用的一部分。
Web應用和HTTP協議:
web的應用程式層協議為 超文字傳輸通訊協定 (HTTP)HyperText Transfer Protocol HTTP。HTTP由兩部分程式實現,一個客戶機程式,一個伺服器程式。
Web頁面Web page是由對象組成的,對象object就是檔案,html檔案,圖片檔案,視頻檔案等。檔案通過url地址定址。web一般包含一個基本的HTML檔案和幾個引用對象。
HTTP使用TCP作為運輸層協議。HTTP不儲存關於客戶機的任何資訊,是一個無狀態協議stateless protocol。
非持久串連non-persistent connection:每個請求/響應經一個單獨的TCP串連發送。
持久串連persistent connection:所有的請求經由相同的TCP串連發送。HTTP預設使用持久串連。
對於非持久串連,當一個網頁有多個引用時,每一次對引用檔案的載入都需要建立一個新的串連來傳輸資料。往返時間Round-Trip Time RTT,為一個分組從客戶機到伺服器再回到客戶機的時間。而每個TCP串連都有三向交握的過程。
HTTP報文:
請求報文Response Message:請求報文的第一行叫做請求行require line,其後繼的行叫做首部行header line,剩下的行為實體主體entity body。請求行有三個欄位field:方法欄位,URL欄位和HTTP版本。方法欄位的取值為GET,POST,HEAD,PUT,DELETE。
通訊端編程。
待續。
電腦網路 2.應用程式層