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代理服務器)。