天天看點

http協定初識

HTTP–Hyper Text Transfer Protocol,超文本傳輸協定,是一種建立在TCP上的無狀态連接配接。

基本工作流程:

1.用戶端發送一個HTTP請求,說明用戶端想要通路的資源和請求的動作

2.服務端收到請求之後,服務端開始處理請求,并根據請求做出相應的動作通路伺服器資源

3.最後通過發送HTTP響應把結果傳回給用戶端。

其中一個請求的開始到一個響應的結束稱為事務,當一個事物結束後還會在服務端添加一條日志條目。

1.TCP/IP 通信傳輸流

http協定初識

發送端在層與層之間傳輸資料時,每經過一層時必定會被打上一個該層所屬的首部資訊。反之,接收端在層與層傳輸資料時,每經過一層時會把對應的首部消去。

這種把資料資訊包裝起來的做法稱為封裝(encapsulate)。

2.HTTP 協定用于用戶端和伺服器端之間的通信

3.通過請求和響應的交換達成通信

http協定初識

3.1http請求

HTTP請求是用戶端往服務端發送請求動作,告知伺服器自己的要求。

HTTP請求由狀态行、請求頭、請求正文三部分組成:

狀态行:包括請求方式Method、資源路徑URL、協定版本Version;

請求頭:包括一些通路的域名、使用者代理、Cookie等資訊;

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

備注:請求方式Method一般有GET、POST、PUT、DELETE,含義分别是擷取、修改、上傳、删除,其中GET方式僅僅為擷取伺服器資源,方式較為簡單,是以在請求方式為GET的HTTP請求資料中,請求正文部分可以省略,直接将想要擷取的資源添加到URL中。

下圖所示就是GET的請求,沒有請求正文。

http協定初識

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

http協定初識

3.2http響應

響應資料格式

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

HTTP響應由三部分組成:狀态行、響應頭、響應正文;

狀态行:包括協定版本Version、狀态碼Status Code、回應短語;

響應頭:包括搭建伺服器的軟體,發送響應的時間,回應資料的格式等資訊;

響應正文:就是響應的具體資料。

備注:我們主要關心并且能夠在用戶端浏覽器看得到的是三位數的狀态碼,不同的狀态碼代表不同的含義,其中

http協定初識

常見狀态碼的含義

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

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

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

        304---/請求被重定向到用戶端本地緩存

        400---/用戶端請求存在文法錯誤

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

        403---/用戶端的請求被伺服器拒絕,一般為用戶端沒有通路權限

        404---/用戶端請求的URL在服務端不存在

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

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

HTTP響應模型

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

        單程序I/O模型

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

        多程序I/O模型

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

        複用I/O模型

服務端開啟一個程序,但是呢,同時開啟多個線程,一個線程響應一個請求,同樣可以達到同時處理多個請求,線程間并發執行;

        複用多線程I/O模型

服務端并行開啟多個程序,同時每個程序開啟多個線程,這樣服務端可以同時處理程序數M*每個程序的線程數N個請求。
           

4.HTTP封包格式

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

http協定初識

4.1請求封包

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

其中<Method>字段有不同的值:

            GET   --- 通路伺服器的資源

            POST  --- 向伺服器發送要修改的資料

            HEAD  --- 擷取伺服器文檔的首部

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

            DELETE--- 删除伺服器的資源

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

    <Version>字段表示使用的http協定版本

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

            Accept     指定用戶端能夠接收的内容格式類型

            Accept-Language 指定用戶端能夠接受的語言類型

            Accept-Ecoding  指定用戶端能夠接受的編碼類型

            User-Agent      使用者代理,向伺服器說明自己的作業系統、浏覽器等資訊

            Connection      是否開啟持久連接配接(keepalive)

            Host            伺服器域名

            ...

    主體部分就是封包的具體資料。  
           

4.2相應封包

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

<Status-Code> 上邊已經說明; 

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

            Server    伺服器軟體名,Apache/Nginx

            Date      伺服器發出響應封包的時間

            Last-Modified   請求資源的最後的修改時間

            ...

    主體部分是響應封包的具體資料。
           

5.HTTP 是不儲存狀态的協定

使用 HTTP 協定,每當有新的請求發送時,就會有對應的新響應産生。協定本身并不保留之前一切的請求或響應封包的資訊。這是為了更快地處理大量事務,確定協定的可伸縮性,而特意把 HTTP 協定設計成如此簡單的

6.使用方法下達指令

http協定初識

7.網站通路量

IP IP通路量
           

相同的公網IP計算一次,就是同一個區域網路内的所有使用者通路一個網站,但是他們都是借助一個公網IP去通路那個網站的(NAT),是以這也隻能算作一個IP通路量。換一次公網IP則會加1。

PV 網頁通路量
           

使用者通路的頁面數就是PV通路量,同一個區域網路的不同使用者,而且就算是同一個使用者,隻要重新整理一次網站頁面,PV通路量就加1,三個通路量的值往往數PV的值最大。

UV 訪客通路量
           

這裡的訪客不是使用者,而是電腦,一台電腦算一個訪客,即使是同一台電腦的不同使用者,通路同一個網站UV也隻能加1,隻有更換電腦才會使UV加1,因為服務端會記錄用戶端電腦的資訊。

web