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...