簡述HTTP協議

2022-05-13 02:44:47 字數 3398 閱讀 9985

引言http協議是hyper text transfer protocol(超文字傳輸協議)的縮寫,是用於從全球資訊網伺服器傳輸超文字到本地瀏覽器的傳送協議。http 是基於 tcp/ip 協議通訊協議來傳遞資料(html 檔案、檔案、查詢結果等)。它不涉及資料報(packet)傳輸,主要規定了客戶端和伺服器之間的通訊格式,預設使用80埠。

一、http的特點

2、靈活:http允許傳輸任意型別的資料物件。

3、無連線:無連線的含義是限制每次連線只處理乙個請求。伺服器處理完客戶的請求,並收到客戶的應答後,即斷開連線。採用這種方式可以節省傳輸時間。

二、http報文

http報文包括請求報文和響應報文兩大部分,其中請求報文由請求行(request line)、請求頭(header)、空行和請求體四個部分組成。而響應報文由狀態行、響應頭部、空行和響應體四個部分組成。接下來我們詳細介紹下請求報文的各個部分及其作用。

1、請求行

用來說明請求型別、要訪問的資源以及所使用的http版本。

post  /chapter17/user.html http/1.1
以上**中post代表請求方法,/chapter17/user.html表示uri,http/1.1代表協議和協議的版本。現在比較流行的是http1.1版本

2、請求頭

由關鍵字/值對組成,每行一對,關鍵字和值用英文冒號「:」分隔。

請求頭部通知伺服器有關於客戶端請求的資訊。它包含許多有關的客戶端環境和請求正文的有用資訊。其中比如

host:表示主機名,虛擬主機。

connection:http/1.1增加的,使用keepalive,即持久連線,乙個連線可以發多個請求。

user-agent:請求發出者,相容性以及定製化需求。

3、空行

最後乙個請求頭之後是乙個空行,這個行非常重要,它表示請求頭已經結束,接下來的是請求正文。

4、請求體

可以承載多個請求引數的資料。

name=tom&password=1234&realname=tomson
上面**,承載著name、password、realname三個請求引數。

三、http請求方法

四、get與post區別

五、http狀態碼

狀態**有三位數字組成,第乙個數字定義了響應的類別,共分五種類別:

比如我們平時常見兩種出錯的狀態碼:

403 forbidden   //

對被請求頁面的訪問被禁止

404 not found //

請求資源不存在,比如:輸入了錯誤的url

六、持久連線

1、為什麼需要持久連線

http協議的初始版本中,每進行一次http通訊就要斷開一次tcp連線。以當年的通訊情況來說,因為都是些容量很小的文字傳輸,所以即使這樣也沒有多大問題。可隨著 http 的 普及,文件中包含大量的情況多了起來。比如,使用瀏覽器瀏覽乙個包含多張的 html 頁面時,在傳送請求訪問 html 頁面資源的同時,也會請 求該 html 頁面裡包含的其他資源。因此,每次的請求都會造成無謂的 tcp 連線建立和斷開,增加通訊量的 開銷。

2、持久連線的特點

為解決上述 tcp 連線的問題,http/1.1

和一部分的http/1.0

想出了持久連線(http persistent connections,也稱為 http keep-alive 或 http connection reuse)的方法。持久連線的特點是,只要任意一端沒有明確提出斷開連線,則保持tcp連線狀態。

持久連線的好處在於減少了 tcp 連線的重複建立和斷開所造成的額外開銷,減輕了伺服器端的負載。另外, 減少開銷的那部分時間,使 http 請求和響應能夠更早地結束,這樣 web 頁面的顯示速度也就相應提高了。

http/1.1

中,所有的連線預設都是持久連線,但在http/1.0

內並未標準化。雖然有一部分伺服器通過非 標準的手段實現了持久連線,但伺服器端不一定能夠支援持久連線。毫無疑問,除了伺服器端,客戶端也需 要支援持久連線。

七、管線化

持久連線使得多數請求以管線化(pipelining)方式傳送成為可能。從前傳送請求後需等待並收到響應,才能 傳送下乙個請求。管線化技術出現後,不用等待響應亦可直接傳送下乙個請求。

這樣就能夠做到同時並行傳送多個請求,而不需要乙個接乙個地等待響應了。通俗地講,請求打包一次傳輸過去,響應打包一次傳遞回來。管線化的前提是在持久連線下。

假如當請求乙個包含 10 張的 html web 頁面,與挨個連線相比,用持久連線可以讓請求更快結束。 而管線化技術則比持久連線還要快。請求數越多,時間差就越明顯。客戶端需要請求這十個資源。以前的做法是,在同乙個tcp連線裡面,先傳送a請求,然後等待伺服器做出回應,收到後再發出b請求,以此類推,而管道機制則是允許瀏覽器同時發出這十個請求,但是伺服器還是按照順序,先回應a請求,完成後再回應b請求。

於是在使用持久連線的情況下,某個連線上訊息的傳遞類似於:

請求1 -> 響應1 -> 請求2 -> 響應2 -> 請求3 -> 響應3
管線化方式傳送變成了類似這樣:

請求1 -> 請求2 -> 請求3 -> 響應1 -> 響應2 -> 響應3

http協議 簡述

也就是說,http協議規定了超文字傳輸所要遵守的規則。那麼網頁在輸入url到載入,http究竟做了哪些工作呢?瀏覽器負責發起請求和最後的響應請求,伺服器接收請求後,處理請求。我們一步一步來看這個過程,http是如何設定步驟,設定規範的。2 找到伺服器的同時,會有http的請求傳送過來,告訴伺服器我求...

HTTP協議 簡述

http hyper text transfer protocol 全稱 超文字傳輸協議 http是乙個應用層協議,由請求和響應構成,是乙個標準的個客戶端和伺服器模型。1 客戶與伺服器建立連線 2 客戶向伺服器提出請求 3 伺服器接受請求,並根據請求返回相應的檔案作為應答 4 客戶與伺服器關閉連線。...

http請求簡述

請求和響應都分為三部分。請求 請求行 請求頭 空行 訊息體。響應 狀態行 響應頭 空行 訊息體。http使用的是tcp ip模型。tcp ip模型從上到下的層次結構是應用層 傳輸層 網際互連層 網路接入層。應用層中包括ftp協議 telnet協議 dns協議等 http協議 傳輸層定義了兩個主要協議...