官术网_书友最值得收藏!

1.1.3 HTTP協(xié)議

當瀏覽器尋找到Web服務器的地址之后,瀏覽器將幫助我們把對服務器的請求轉換為一系列參數(shù)發(fā)送給Web服務器。服務器收到瀏覽器發(fā)來的請求參數(shù)之后,將會分析這些數(shù)據(jù)并進行處理,然后向瀏覽器回應處理的結果,也就是一些新的數(shù)據(jù);這些數(shù)據(jù)通常是HTML網頁或者圖片。瀏覽器收到之后,解析這些數(shù)據(jù),將它們呈現(xiàn)在瀏覽器的窗口中,就是我們現(xiàn)在看到的網頁。

在瀏覽器與Web服務器的對話中,需要使用雙方都能夠理解的語法規(guī)范進行通信,這種程序之間進行通信的語法規(guī)范,我們稱之為協(xié)議。協(xié)議有許多種,根據(jù)國際標準化組織ISO的網絡參考模型,程序與程序之間的通信可以分為7層,從低級到高級依次為:物理層、數(shù)據(jù)鏈路層、網絡層、傳輸層、會話層、表示層、應用層。每層都有自己所對應的協(xié)議。比如,應用層之間的通信協(xié)議,我們稱為應用層協(xié)議。不同的應用程序可能有著不同的應用層協(xié)議。同一層的協(xié)議也有許多種。

瀏覽器與Web服務器之間的協(xié)議是應用層協(xié)議,當前,我們主要遵循的協(xié)議為HTTP/1.1http://www.w3.org/Protocols/rfc2616/rfc2616.html。HTTP協(xié)議是Web開發(fā)的基礎,這是一個無狀態(tài)的協(xié)議,客戶機與服務器之間通過請求和響應完成一次會話(Session)。每次會話中,通信雙方發(fā)送的數(shù)據(jù)稱為消息 (Message),消息分為兩種:請求消息和回應消息。

消息的格式如圖1-2所示。每個消息可能由三部分組成,第一部分為請求行或者回應的狀態(tài)行,第二部分為消息的頭部,第三部分為消息體部分。消息頭部分和消息體部分使用一個空行進行分隔。

圖1-2 消息的格式

通常情況下,我們在客戶端使用瀏覽器來訪問服務器,瀏覽器軟件幫助我們構造所有的請求消息。使用Fiddlerhttp://www.fiddler2.com/fiddler2軟件,可以幫助我們檢測到瀏覽器與服務器之間的通信內容,如圖1-3所示。

圖1-3 用Fiddler檢測瀏覽器與服務器之間的通信內容

圖1-3右上部為瀏覽器請求的內容,可以看到,第一行為請求行,請求行的內容為:

GET http://www.microsoft.com/HTTP/1.1

下面的連續(xù)7行為請求頭部分,然后是一個空行,由于是GET請求,所以沒有請求體部分。

圖1-3右下部為服務器回應的內容,第一行為回應的狀態(tài)行,HTTP/1.1 302 Found表示請求的內容可以找到,但是需要到另外的地址去獲取。下面的連續(xù)10行為回應的頭部,其中Location:/en/us/default.aspx用來說明轉到的地址;Content-Length:142說明回應體中包含142個字節(jié)的內容。一個空行分隔了回應的頭部和回應體部分,回應體中為一個簡單的HTML網頁。

HTTP協(xié)議定義了內容的格式,這是一個應用層的協(xié)議,應用層協(xié)議的內容需要通過傳輸層在瀏覽器和服務器之間傳送,TCP/IPhttp://tools.ietf.org/html/rfc1180協(xié)議是ISO網絡參考模型的一種實現(xiàn)。在TCP/IP協(xié)議中,與網絡程序員相關的主要有兩個層:傳輸層和應用層。

傳輸層協(xié)議負責解決數(shù)據(jù)的傳輸問題,包括數(shù)據(jù)通信的可靠性問題。傳輸層依賴更低層的網絡層完成實際的數(shù)據(jù)傳輸,在TCP/IP網絡協(xié)議中,負責可靠通信的傳輸層協(xié)議為TCP協(xié)議。而網絡層一般由網絡驅動來實現(xiàn),普通的程序員不會涉及;在TCP/IP協(xié)議中,網絡層的協(xié)議為IP協(xié)議。

應用層用于在特定的應用程序之間傳輸數(shù)據(jù)。HTTP協(xié)議就是TCP/IP協(xié)議中專門用于瀏覽器與Web服務器之間通信的應用層協(xié)議。應用層協(xié)議依賴于傳輸層協(xié)議完成數(shù)據(jù)傳輸,傳輸層協(xié)議依賴于網絡層協(xié)議完成數(shù)據(jù)傳輸,它們的關系如圖1-4所示。

圖1-4 瀏覽器與服務器之間網絡通信的傳輸過程

主站蜘蛛池模板: 大关县| 齐河县| 政和县| 宁德市| 犍为县| 泌阳县| 开原市| 东兰县| 五指山市| 开封县| 临江市| 北辰区| 吉隆县| 衡水市| 乐业县| 长治市| 仪陇县| 昌宁县| 托克逊县| 长沙市| 团风县| 民勤县| 得荣县| 平和县| 阳曲县| 丰城市| 襄樊市| 威海市| 姚安县| 太谷县| 花莲县| 道孚县| 楚雄市| 五家渠市| 财经| 周宁县| 宜黄县| 佳木斯市| 广州市| 金堂县| 天水市|