HTTP協議基本原理
學號:201631062509
姓名:楊菓
HTTP:超文字傳輸協議(HyperText Transfer Protocol,HTTP)是一種用於分散式、協作式和超媒體資訊系統的應用層協議。HTTP是全球資訊網的資料通訊的基礎。WWW是以Internet作為傳輸媒介的一個應用系統,WWW網上最基本的傳輸單位是Web網頁。WWW的工作基於客戶機/伺服器計算模型,由Web 瀏覽器(客戶機)和Web伺服器(伺服器)構成,兩者之間採用超文字傳送協議(HTTP)進行通訊。HTTP協議是基於TCP/IP協議之上的協議,是Web瀏覽器和Web伺服器之間的應用層協議,是通用的、無狀態的、物件導向的協議。
HTTP協議的作用原理包括四個步驟:
(1) 連線:Web瀏覽器與Web伺服器建立連線,開啟一個稱為socket(套接字)的虛擬檔案,此檔案的建立標誌著連線建立成功。
(2) 請求:Web瀏覽器通過socket向Web伺服器提交請求。HTTP的請求一般是GET或POST命令(POST用於FORM引數的傳遞)。GET命令的格式為: GET 路徑/檔名 HTTP/1.0 檔名指出所訪問的檔案,HTTP/1.0指出Web瀏覽器使用的HTTP版本。
(3) 應答:Web瀏覽器提交請求後,通過HTTP協議傳送給Web伺服器。Web伺服器接到後,進行事務處理,處理結果又通過HTTP傳回給Web瀏覽器,從而在Web瀏覽器上顯示出所請求的頁面。
(4) 關閉連線:當應答結束後,Web瀏覽器與Web伺服器必須斷開,以保證其它Web瀏覽器能夠與Web伺服器建立連線。
HTTP協議通訊過程
當我們在瀏覽器的位址列輸入“www.baidu.com”然後按回車,這之後發生了什麼事,我們直接看到的是開啟了對應的網頁,那麼內部客戶端和服務端是如何通訊的呢?
1、URL自動解析
HTTP URL包含了用於查詢某個資源的足夠資訊,基本格式如下:HTTP://host[“:”port][abs_path],其中HTTP表示桶蓋HTTP協議來定位網路資源;host表示合法的主機域名或IP地址,port指定一個埠號,預設80;abs_path指定請求資源的URI;如果URL中沒有給出abs_path,那麼當它作為請求URI時,必須以“/”的形式給出,通常這個工作瀏覽器自動幫我們完成。
3、客戶端瀏覽器向伺服器發出HTTP請求
一旦建立了TCP連線,Web瀏覽器就會向Web伺服器傳送請求命令,接著以頭資訊的形式向Web伺服器傳送一些別的資訊,之後瀏覽器傳送了一空白行來通知伺服器,它已經結束了該頭資訊的傳送。
4、Web伺服器應答,並向瀏覽器傳送資料
客戶機向伺服器發出請求後,伺服器會客戶機回送應答,HTTP/1.1 200 OK,應答的第一部分是協議的版本號和應答狀態碼,正如客戶端會隨同請求傳送關於自身的資訊一樣,伺服器也會隨同應答向使用者傳送關於它自己的資料及被請求的文件。Web伺服器向瀏覽器傳送頭資訊後,它會傳送一個空白行來表示頭資訊的傳送到此為結束,接著,它就以Content-Type應答頭資訊所描述的格式傳送使用者所請求的實際資料
5、Web伺服器關閉TCP連線
一般情況下,一旦Web伺服器向瀏覽器傳送了請求資料,它就要關閉TCP連線,然後如果瀏覽器或者伺服器在其頭資訊加入了這行程式碼,Connection:keep-alive ,TCP連線在傳送後將仍然保持開啟狀態,於是,瀏覽器可以繼續通過相同的連線傳送請求。保持連線節省了為每個請求建立新連線所需的時間,還節約了網路頻寬。
HTTP/1.1協議中共八種請求方法:
-
GET
向指定的資源發出“顯示”請求。使用GET方法應該只用在讀取資料,而不應當被用於產生“副作用”的操作中,
例如在WebApplication中。其中一個原因是GET可能會被網路蜘蛛等隨意訪問。 -
HEAD
與GET方法一樣,都是向伺服器發出指定資源的請求。只不過伺服器將不傳回資源的本文部分。它
的好處在於,使用這個方法可以在不必傳輸全部內容的情況下,就可以獲取其中“關於該資源的資訊”。 -
POST
向指定資源提交資料,請求伺服器進行處理(例如提交表單或者上傳檔案)。資料被包含在請求本文中。
這個請求可能會建立新的資源或修改現有資源,或二者皆有。 -
PUT
向指定資源位置上傳其最新內容。
-
DELETE
請求伺服器刪除Request-URI所標識的資源。
-
TRACE
回顯伺服器收到的請求,主要用於測試或診斷。
-
OPTIONS
這個方法可使伺服器傳回該資源所支援的所有HTTP請求方法。用'*'來代替資源名稱,向Web伺服器發
送OPTIONS請求,可以測試伺服器功能是否正常運作。 -
CONNECT
HTTP/1.1協議中預留給能夠將連線改為管道方式的代理伺服器。通常用於SSL加密伺服器的連結
(經由非加密的HTTP代理伺服器)。