HTTP協議入門基礎

2022-04-03 00:23:37 字數 4257 閱讀 7379

http--hyper text transfer protocol超文字傳輸協議,是一種建立在tcp上的無狀態連線。

整個基本的工作流程是 :客戶端傳送乙個http請求,說明客戶端想要訪問的資源和請求的動作,服務端收到請求之後,服務端開始處理請求,並根據請求做出相應的動作訪問伺服器資源,最後通過傳送http響應把結果返回給客戶端。

其中乙個請求的開始到乙個響應的結束稱為:事務,當乙個事物結束後還會在服務端新增一條日誌條目。

目錄一、http請求

http請求是客戶端往服務端傳送請求動作,告知伺服器自己的要求。

http請求由請求行請求頭請求正文三部分組成:

狀態行:包括請求方式method、資源路徑url、協議版本version;

請求頭:包括一些訪問的網域名稱、使用者**、cookie等資訊;

請求正文:就是http請求的資料。

備註:請求方式method一般有get、post、put、delete,含義分別是獲取、修改、上傳、刪除,其中get方式僅僅為獲取伺服器資源,方式較為簡單,因此在請求方式為get的http請求資料中,請求正文部分可以省略,直接將想要獲取的資源新增到url中。下圖所示就是get的請求,沒有請求正文。詳細的說明在下邊。

現在大多數協議版本為http/1.1

下圖所示為post請求的格式,有狀態行、請求頭、請求正文三部分。

二、http響應

2.1響應資料格式

伺服器收到了客戶端發來的http請求後,根據http請求中的動作要求,服務端做出具體的動作,將結果回應給客戶端,稱為http響應。

http響應由三部分組成:狀態碼,不同的狀態碼代表不同的含義,其中

1xx表示http請求已經接受,繼續處理請求

2xx表示http請求已經處理完成

3xx表示把請求訪問的url重定向到其他目錄

4xx表示客戶端出現錯誤

5xx表示服務端出現錯誤

具體http響應例項如下圖:

2.2常見狀態碼的含義

200---ok/請求已經正常處理完畢

301---/請求永久重定向

302---/請求臨時重定向

304---/請求被重定向到客戶端本地快取

400---/客戶端請求存在語法錯誤

401---/客戶端請求沒有經過授權

403---/客戶端的請求被伺服器拒絕,一般為客戶端沒有訪問許可權

404---/客戶端請求的url在服務端不存在

500---/服務端永久錯誤

503---/服務端發生臨時錯誤

2.3http響應模型

伺服器收到http請求之後,會有多種方法響應這個請求,下面是http響應的四種模型:

單程序i/o模型

服務端開啟乙個程序,乙個程序僅能處理乙個請求,並且對請求順序處理;

多程序i/o模型

服務端並行開啟多個程序,同樣的乙個程序只能處理乙個請求,這樣服務端就可以同時處理多個請求;

復用i/o模型

服務端開啟乙個程序,但是呢,同時開啟多個執行緒,乙個執行緒響應乙個請求,同樣可以達到同時處理多個請求,執行緒間程序數m*每個程序的執行緒數n個請求。

三、http報文格式

http報文是http應用程式之間傳輸的資料塊,http報文分為http請求報文和http響應報文,但是無論哪種報文,他的整體格式是類似的,大致都是由起始、首部、主體三部分組成,起始說明報文的動作,首部說明報文的屬性,主體則是報文的資料。接下來具體說明。

3.1http請求報文

請求報文的起始由請求行構成(有些資料稱為狀態行,名字不一樣而已,都是指的乙個東西),用來說明該請求想要做什麼,由、、三個字段組成,注意每個字段之間都有乙個空格。

其中欄位有不同的值:

get   --- 訪問伺服器的資源

post  --- 向伺服器傳送要修改的資料

head  --- 獲取伺服器文件的首部

put   --- 向伺服器上傳資源

delete--- 刪除伺服器的資源

字段表示伺服器的資源目錄定位

字段表示使用的http協議版本

首部部分由多個請求頭(也叫首部行)構成,那些首部欄位名有如下,不全:

accept     指定客戶端能夠接收的內容格式型別

accept-language 指定客戶端能夠接受的語言型別

accept-ecoding  指定客戶端能夠接受的編碼型別

user-agent      使用者**,向伺服器說明自己的作業系統、瀏覽器等資訊

connection      是否開啟持久連線(keepalive)

host           伺服器網域名稱

主體部分就是報文的具體資料。                     

3.2http響應報文

響應報文的起始由狀態行構成,用來說明伺服器做了什麼,由、、三個字段組成,同樣的每個字段之間留有空格;

上邊已經說明; 

首部由多個響應頭(也叫首部行)組成, 首部欄位名如下,不全:

server    伺服器軟體名,apache/nginx

date      伺服器發出響應報文的時間

last-modified   請求資源的最後的修改時間

主體部分是響應報文的具體資料。

四、http協議版本更替

http協議的最初版本,功能簡陋,僅能請求訪問html格式的資源。

在0.9版本上做了進步,mime多用途網際網路郵件擴充套件,例如text/html、image/jpeg等;同時也個tcp連線可以允許多個http請求; 加入了管道機制,新增了請求方式put、patch、delete等。

但是還存在一些問題,服務端是按佇列順序處理請求的,假如乙個請求處理時間很長,則會導致後邊的請求無法處理,這樣就造成了都需要新增重複的字段,降低了頻寬的利用率。

為了解決1.1版本利用率不高的問題,提出了http/2.0版本。增加索引號來表示資訊字段,這樣就避免了1.0舊版本的重複繁瑣的字段,並以伺服器推送的功能,即不經請求服務端主動向客戶端傳送資料。

當前主流的協議版本還是http/1.1版本。

五、**訪問量

ip ip訪問量

相同的公網ip計算一次,就是同乙個區域網內的所有使用者訪問乙個**,但是他們都是借助乙個公網ip去訪問那個**的(nat),因此這也只能算作乙個ip訪問量。換一次公網ip則會加1。

pv 網頁訪問量

使用者訪問的頁面數就是pv訪問量,同乙個區域網的不同使用者,而且就算是同乙個使用者,只要重新整理一次**頁面,pv訪問量就加1,三個訪問量的值往往數pv的值最大。

uv 訪客訪問量

這裡的訪客不是使用者,而是電腦,一台電腦算乙個訪客,即使是同一臺電腦的不同使用者,訪問同乙個**uv也只能加1,只有更換電腦才會使uv加1,因為服務端會記錄客戶端電腦的資訊。

HTTP協議入門基礎

一 http協議 中文名超文字傳輸協議。根據這個名稱,我們就知道這個是傳輸文字的。用於伺服器之間的交流的一種協議。二 我們什麼時候能用到http協議呢?如果我們想深入一些大的專案,或者想實現一些好的功能,我們可能用到這個比較底層的。很多應用是建立在http協議之上的。就像作者主要從事的php開發,都...

http協議入門

1 http協議是什麼?有什麼作用?http協議 超文字傳輸協議 http,hypertext transfer protocol 是網際網路上應用最為廣泛的一種網路協議以www開頭的,必定遵守http協議 有以下三種特性 超文字 超文字效果,超文字內容 傳輸 雙向的傳輸 請求 響應 一問一答機制 ...

HTTP協議入門

http協議是hypertext transfer protocol超文字傳輸協議的縮寫。http協議屬於應用層協議,它構建在tcp和ip協議之上,處於tcp ip體系架構中的頂端,使用tcp ip協議來傳輸資料。這樣一來它就不必處理下層協議間諸如丟包補發 握手及資料的分段和重新組裝等。靈活 htt...