HTTP

HTTP,HyperText Transfer Protocol(超文本傳輸協(xié)議),嚴謹?shù)淖g名是(超文本轉(zhuǎn)移協(xié)議)。

http協(xié)議通俗來講就是我們在瀏覽器中瀏覽web網(wǎng)頁這一過程所遵循的規(guī)范,正是有了這個規(guī)范,我們可以共享文件,我們可以看到頁面上的圖片、文檔等信息。

一、網(wǎng)絡(luò)模型

為了理解http,我們先來回顧一下網(wǎng)絡(luò)通信參考模型,這里僅為簡單說明,以TCP/IP四層模型為例,由上而下分為:應(yīng)用層,傳輸層,網(wǎng)絡(luò)層,鏈路層。其中每一層都要遵守特定的規(guī)則才能完成通信,這些規(guī)則都被稱為協(xié)議。

1、應(yīng)用層:向用戶提供應(yīng)用服務(wù),F(xiàn)TP、DNS、HTTP都處于該層。

2、傳輸層:提供通信雙方的數(shù)據(jù)傳輸,這里有兩個不同的協(xié)議,TCP(面向連接 可靠)和UDP(無連接 不可靠)。

3、網(wǎng)絡(luò)層:主要完成路由的功能,也可以進行網(wǎng)絡(luò)互連,遵循IP協(xié)議。

4、鏈路層(or網(wǎng)絡(luò)接口層):連接網(wǎng)絡(luò)的硬件部分,設(shè)備、傳輸媒介等,也即網(wǎng)絡(luò)的物理可見部分。

以http為例的網(wǎng)絡(luò)通信如下圖所示:

http通信模型

發(fā)送端由上而下,接收端由下及上。

TCP協(xié)議負責把大塊數(shù)據(jù)分割成報文段,并將這些數(shù)據(jù)包進行可靠的傳輸和管理。為了準確傳送數(shù)據(jù),使用了三次握手策略(three-way handshaking)。

IP協(xié)議一個重要的作用是路由選擇,即如何在計算機、路由器等各種網(wǎng)絡(luò)設(shè)備中選擇合適的線路傳輸數(shù)據(jù)。

另外,傳輸數(shù)據(jù)我們肯定要知道接受端是誰,即它在網(wǎng)絡(luò)中的IP地址和MAC地址,這里涉及到另外兩個協(xié)議:DNS和ARP(Address Resolution Protocol)。它們分別提供域名到IP地址以及IP地址到MAC地址的映射。

這里簡單提到了http通信中涉及到的網(wǎng)絡(luò)模型和協(xié)議,有興趣的小伙伴可以查閱計算機網(wǎng)絡(luò)相關(guān)書籍深入了解。

二、HTTP通信

1)HTTP協(xié)議用于客戶端和服務(wù)器端的通信,是一種請求/響應(yīng)模型??蛻舳税l(fā)送請求,服務(wù)器接受請求并響應(yīng),是一種簡單的通信協(xié)議。接下來一起來看看http請求的過程。

HTTP請求過程

2)http請求方法:

HTTP協(xié)議中共定義了八種方法或者叫“動作”get,post,put, options,head,delete,trace,connect,來表明對Request-URI指定的資源的不同操作方式,具體介紹如下:

1、OPTIONS

返回服務(wù)器針對特定資源所支持的HTTP請求方法,也可以利用向web服務(wù)器發(fā)送“*”的請求來測試服務(wù)器的功能性

2、HEAD

向服務(wù)器索與GET請求相一致的響應(yīng),只不過響應(yīng)體將不會被返回。這一方法可以再不必傳輸整個響應(yīng)內(nèi)容的情況下,就可以獲取包含在響應(yīng)小消息頭中的元信息。

3、GET

向特定的資源發(fā)出請求。注意:GET方法不應(yīng)當被用于產(chǎn)生“副作用”的操作中,例如在Web Application中,其中一個原因是GET可能會被網(wǎng)絡(luò)蜘蛛等隨意訪問。Loadrunner中對應(yīng)get請求函數(shù):web_link和web_url

4、POST

向指定資源提交數(shù)據(jù)進行處理請求(例如提交表單或者上傳文件)。數(shù)據(jù)被包含在請求體中。POST請求可能會導(dǎo)致新的資源的建立和/或已有資源的修改。 Loadrunner中對應(yīng)POST請求函數(shù):web_submit_data,web_submit_form

5、PUT

向指定資源位置上傳其最新內(nèi)容

6、DELETE

請求服務(wù)器刪除Request-URL所標識的資源

7、TRACE

回顯服務(wù)器收到的請求,主要用于測試或診斷

8、CONNECT

HTTP/1.1協(xié)議中預(yù)留給能夠?qū)⑦B接改為管道方式的代理服務(wù)器。

注意:

1、方法名稱是區(qū)分大小寫的,當某個請求所針對的資源不支持對應(yīng)的請求方法的時候,服務(wù)器應(yīng)當返回狀態(tài)碼405(Mothod Not Allowed);當服務(wù)器不認識或者不支持對應(yīng)的請求方法時,應(yīng)返回狀態(tài)碼501(Not Implemented)。

2、HTTP服務(wù)器至少應(yīng)該實現(xiàn)GET和HEAD/POST方法,其他方法都是可選的,此外除上述方法,特定的HTTP服務(wù)器支持擴展自定義的方法。

下面重點來看Get請求和post請求

get請求

一般來講get請求是用來信息獲取的,它只會獲取資源,并不會對資源進行更改,不會影響資源的狀態(tài)。

get請求一般是以查詢字符串的形式附在URL里,如果數(shù)據(jù)是英文字母/數(shù)字,原樣發(fā)送,如果是空格,轉(zhuǎn)換為+,如果是中文/其他字符,則直接把字符串用BASE64加密,得出如:%E4%BD%A0%E5%A5%BD,其中%XX中的XX為該符號以16進制表示的ASCII。因此,存在一定的安全隱患

get提交的數(shù)據(jù)有大小限制,因為GET是通過URL提交數(shù)據(jù),那么GET可提交的數(shù)據(jù)量就跟URL的長度有直接關(guān)系了。而實際上,URL不存在參數(shù)上限的問題,HTTP協(xié)議規(guī)范沒有對URL長度進行限制。這個限制是特定的瀏覽器及服務(wù)器對它的限制。IE對URL長度的限制是2083字節(jié)(2K+35)。對于其他瀏覽器,如Netscape、FireFox等,理論上沒有長度限制,其限制取決于操作系統(tǒng)的支持。(這一點相信很多人都一直以為是2k的限制,其實并不是啊)

post請求

根據(jù)HTTP規(guī)范,POST表示可能修改變服務(wù)器上的資源的請求。

Post是將表單中的數(shù)據(jù)放在form的數(shù)據(jù)體中,表單中的參數(shù)值對是通過request body發(fā)送給服務(wù)器,Post的所有操作對用戶來說都是不可見的。

理論上POST沒有限制,可傳較大量的數(shù)據(jù)

二者區(qū)別

1. get提交,數(shù)據(jù)放在url里面,所以數(shù)據(jù)是在瀏覽器可見的,不安全,而post提交是放在請求頭中,用戶不可見,所以比較安全;

2. 請求數(shù)據(jù)的大小,get有一定限制,而post可發(fā)送的數(shù)據(jù)沒有限制

3. get一般用來請求數(shù)據(jù),不會對數(shù)據(jù)進行更改,而post用于發(fā)送數(shù)據(jù),會對數(shù)據(jù)進行修改


3)HTTP是一種十分簡單卻應(yīng)用廣泛的網(wǎng)絡(luò)協(xié)議。它有以下顯著特點:

1、HTTP是一種無狀態(tài)協(xié)議。即一次請求對應(yīng)一次響應(yīng),并不能保存之前發(fā)送的請求或響應(yīng)。然而卻無法滿足我們的持續(xù)登錄狀態(tài),為此引入Cookie技術(shù)了??蛻舳吮4鍯ookie信息,下一次請求會攜帶cookie使服務(wù)器端能夠識別登錄狀態(tài)。

2、HTTP的持久連接。在HTTP初始版本中,每一次HTTP通信對應(yīng)一次新的TCP連接,這顯然不能滿足現(xiàn)在的需求。如果一個頁面中有很多圖片,每接收完一個圖片就要斷開TCP連接,則會大大延長頁面加載時間和服務(wù)器負載。于是HTTP新版本中引入了“持久連接”,只要任意一端未請求斷開,則會一直保持TCP連接狀態(tài)。

三、響應(yīng)狀態(tài)碼

當瀏覽器向服務(wù)器端發(fā)送請求,服務(wù)器為了描述請求結(jié)果,需借助狀態(tài)碼標示成功或失敗信息。

狀態(tài)碼一般由3位數(shù)字和原因短語構(gòu)成。數(shù)字第一位指定響應(yīng)類別,有以下5種:

狀態(tài)碼分類

下面主要介紹我們經(jīng)常遇到的幾種狀態(tài)碼:

1、200 OK

表示請求發(fā)送至服務(wù)器端,而且被正確處理了。

2、304 Not Modified

表示客戶端發(fā)送附帶條件的請求時,服務(wù)器端資源未改變,可直接使用客戶端未過期的緩存。

3、400 Bad Request

表示請求中存在錯誤,需要修改請求再次發(fā)送。

4、403 Forbidden

表示服務(wù)器拒絕了請求資源的訪問,可能是訪問權(quán)限出現(xiàn)了問題。

5、404 Not found

表示服務(wù)器上找不到請求的資源。

6、405 Method not allowed

表示該請求的方法被禁用或不支持,需要換一種方法再次請求。

7、500 Internal Server Error

表示服務(wù)器內(nèi)部發(fā)生錯誤,無法完成請求。

8、503 Service Unavailable

目前無法使用服務(wù)器,無法處理請求(由于超載或進行停機維護)

版權(quán)印為您的作品印上版權(quán)59156334

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一、概念(載錄于:http://www.cnblogs.com/EricaMIN1987_IT/p/3837436...
    yuantao123434閱讀 8,743評論 6 152
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,618評論 19 139
  • Http協(xié)議詳解 標簽(空格分隔): Linux 聲明:本片文章非原創(chuàng),內(nèi)容來源于博客園作者MIN飛翔的HTTP協(xié)...
    Sivin閱讀 5,345評論 3 82
  • HTTP概述 超文本傳輸協(xié)議(HTTP,HyperText Transfer Protocol) 是互聯(lián)網(wǎng)上應(yīng)用最...
    曹淵說創(chuàng)業(yè)閱讀 3,954評論 2 61
  • 深入淺出HTTP協(xié)議(WEB開發(fā)和面試必備) 1.基礎(chǔ)概念篇 a.簡介 HTTP是Hyper Text Trans...
    半世韶華憶闌珊閱讀 1,344評論 0 7

友情鏈接更多精彩內(nèi)容