008 Http協議詳解

2021-09-10 06:08:46 字數 3640 閱讀 9609

我覺得之前的內容跨度相對比較大,很多概念性東西對於剛入門的人來說雲裡霧裡,本篇內容為網路協議方面做一下補充,為後面的實戰再打一下基礎。

後面我們主要介紹http協議的url、http請求、http響應、htpp報頭以及通訊過程等。

http 是乙個屬於應用層的物件導向的協議,由於其簡捷、快速的方式,適用於分布式超**資訊系統。

http 協議的主要特點可概括如下:

http(超文字傳輸協議)是乙個基於請求與響應模式的、無狀態的、應用層的協議,常基於 tcp 的連線方式。

http url (url 是一種特殊型別的 uri,包含了用於查詢某個資源的足夠的資訊)的格式如下:

http://host[":"port][abs_path]
http 表示要通過 http 協議來定位網路資源;host 表示合法的 internet 主機網域名稱或者 ip 位址 ;

port 指定乙個埠號,為空則使用預設埠 80;

abs_path 指定請求資源的 uri;如果 url 中沒有給出 abs_path,那麼當它作為請求 uri 時,必須以「/」的形式給出,通常這個工作瀏覽器自動幫我們完成。

http 請求由三部分組成,分別是:請求行、訊息報頭、請求正文。

1、請求行

他以乙個方法符號開頭,以空格分開,後面跟著請求的 uri 和協議的版本,格式如下:method request-uri http-version crlf

請求方法(所有方法全為大寫)有多種,各個方法的解釋如下:

get請求獲取 request-uri 所標識的資源

post在 request-uri 所標識的資源後附加新的資料

head請求獲取由 request-uri 所標識的資源的響應訊息報頭

put請求伺服器儲存乙個資源,並用 request-uri 作為其標識

delete請求伺服器刪除request-uri 所標識的資源

trace請求伺服器回送收到的請求資訊,主要用於測試或診斷

connect保留將來使用

options請求查詢伺服器的效能,或者查詢與資源相關的選項和需求

2、訊息報頭

http訊息報頭包括普通報頭、請求報頭、響應報頭、實體報頭。

3、請求正文

請求頭和請求正文之間是乙個空行,這個行非常重要,它表示請求頭已經結束,接下來的是請求正文。請求正文中可以包含客戶提交的查詢字串資訊:

username=jinqiao&password=1234
在以上的例子的http請求中,請求的正文只有一行內容。當然,在實際應用中,http請求正文可以包含更多的內容。

在接收和解釋請求訊息後,伺服器返回乙個 http 響應訊息。

http 響應由三個部分組成,分別是:狀態行、訊息報頭、響應正文。

1、狀態行格式如下:

2、響應報頭後述

3、響應正文就是伺服器返回的資源的內容

http 訊息由客戶端到伺服器的請求和伺服器到客戶端的響應組成。請求訊息和響應訊息都是由開始行(對於請求訊息,開始行就是請求行,對於響應訊息,開始行就是狀態行),訊息報頭(可選),空行(只有 crlf 的行),訊息正文(可選)組成。

http 訊息報頭包括普通報頭、請求報頭、響應報頭、實體報頭。每乙個報頭域都是由名字+「:」+空格+值 組成,訊息報頭域的名字是大小寫無關的。

1、普通報頭

在普通報頭中,有少數報頭域用於所有的請求和響應訊息,但並不用於被傳輸的實體,只用於傳輸的訊息。

響應時的快取指令包括:public、private、no-cache、no-store、no-transform、

must-revalidate、proxy-revalidate、max-age、s-maxage.

為了指示 ie 瀏覽器(客戶端)不要快取頁面,伺服器端的 jsp 程式可以編寫如下:

response.sehheader("cache-control","no-cache");

"pragma","no-cache");

作用相當於上述**,通常兩者//合用

2、請求報頭

請求報頭允許客戶端向伺服器端傳遞請求的附加資訊以及客戶端自身的資訊。

常用的請求報頭

3、響應報頭

location 響應報頭域用於重定向接受者到乙個新的位置。location 響應報頭域常用在更換網域名稱的時候。

server 響應報頭域包含了伺服器用來處理請求的軟體資訊。與 user-agent 請求報頭域是相對應的。下面是server

響應報頭域的乙個例子: server:apache-coyote/1.1

www-authenticate 響應報頭域必須被包含在 401(未授權的)響應訊息中,客戶端收到 401 響應訊息時候,並傳送

authorization 報頭域請求伺服器對其進行驗證時,服務端響應報頭就包含該報頭域。

www-authenticate:basic realm=「basic auth test!」

//可以看出伺服器對請求資源採用的是基本驗證機制。

4、實體報頭

請求和響應訊息都可以傳送乙個實體。乙個實體由實體報頭域和實體正文組成,但並不是說實體報頭域和實體正文要在一起傳送,可以只傳送實體報頭域。實體報頭定義了關於實體正文和請求所標識的資源的元資訊。

常用的實體報頭

高層協議有:檔案傳輸協議 ftp、電子郵件傳輸協議 smtp、網域名稱系統服務 dns、網路新聞傳輸協議nntp 和 http 協議等

**(proxy):乙個中間程式,它可以充當乙個伺服器,也可以充當乙個客戶機,為其它客戶機建立請求。請求是通過可能的翻譯在內部或經過傳遞到其它的 伺服器中。乙個**在傳送請求資訊之前,必須解釋並且如果可能重寫它。**經常作為通過防火牆的客戶機端的門戶,**還可以作為乙個幫助應用來通過協議處 理沒有被使用者**完成的請求。

閘道器(gateway):乙個作為其它伺服器中間媒介的伺服器。與**不同的是,閘道器接受請求就好象對被請求的資源來說它就是源伺服器;發出請求的客戶機並沒有意識到它在同閘道器打交道。

閘道器經常作為通過防火牆的伺服器端的門戶,閘道器還可以作為乙個協議翻譯器以便訪問那些儲存在非http 系統中的資源。

通道(tunnel):是作為兩個連線中繼的中介程式。一旦啟用,通道便被認為不屬於 http 通訊,儘管通道可能是被乙個http請求初始化的。當被中繼 的連線兩端關閉時,通道便消失。當乙個門戶(portal)

必須存在或中介(intermediary)不能解釋中繼的通訊時通道被經常使用

the end

q.q暫時就補充到這裡吧= =

008 HTTP請求訊息 請求行

請求行 格式 請求方式 請求url 請求協議 版本 請求方式 http協議有7中請求方式,常用的有2種 get 1.請求引數在請求行中,也可以理解在url後。我們將login.html 修改為get方式,測試發現請求行如下 2.請求的url長度有限制的 3.不太安全,因為請求引數就在瀏覽器位址列中顯...

Http協議詳解 Http請求詳解

http是hypertext transfer protocol 超文字傳輸協議 的簡寫,它是tcp ip協議的乙個應用層協議,用於定義web瀏覽器與web伺服器之間交換資料的過程。客戶端連上web伺服器後,若想獲得web伺服器中的某個web資源,需遵守一定的通訊格式,http協議用於定義客戶端與w...

Http協議詳解

http協議是乙個基於tcp ip 的協議,使用的是一種請求 響應模型 目前的版本為1。1,但有一些 仍然使用1。0的版本,在待會的實驗中,我們可以看到,網易的主頁163.com仍舊使用的1.0的標準。1 何為請求 響應機制 在這一種機制中,總是客戶端請求伺服器,伺服器接受響應後根據請求端的請求資訊...