Http協議詳解

2021-04-13 06:29:42 字數 2729 閱讀 6681

http協議是乙個基於tcp/ip 的協議,使用的是一種請求/響應模型

目前的版本為1。1,但有一些**仍然使用1。0的版本,在待會的實驗中,我們可以看到,網易的主頁163.com仍舊使用的1.0的標準。

1:何為請求/響應機制:在這一種機制中,總是客戶端請求伺服器,伺服器接受響應後根據請求端的請求資訊,請求實體的許可權,進行響應。常用的請求方式主要有get,head,post,

下面是對這三種方法的詳細解釋:

首先說說什麼是get請求: get方法就是以實體方式得到由請求uri所指定資源的資訊。如果請求uri只是乙個資料產生過程,那麼最終要在回應實體中返回的是由該處理過程的結果所指向的資源,而不是返回該處理過程的描述文字,除非那段文字恰好是處理的輸出。 如果請求訊息包含if-modified-since標題域,get方法的語法就變成「條件get」,即「(conditional get)」。 條件get方法可以對指定資源進行判斷,如果它在if-modified-since標題域(見10.9節)中的指定日期後發生了更新,才啟動傳輸,否則不傳輸。這種條件get允許被快取的實體在不必經過多次請求或不必要的資料傳輸就能進行重新整理,從而有助於降低網路負載。

然後再來說說head請求吧: head方法與get幾乎一樣,區別在於,head方法不讓伺服器在回應中返回任何實體。對head請求的回應部分來說,它的http標題中包含的元資訊與通過get請求所得到的是相同的。通過使用這種方法,不必傳輸整個實體主體,就可以得到請求uri所指定資源的元資訊。該方法通常用來測試超連結的合法性、可訪問性及最近更新。 與條件get不同,不存在所謂的「條件head」,即"conditional head"。即使在head請求中指定if-modified-since標題域,它也會被忽略。

最後是post請求: post方法用來向目的伺服器發出請求,要求它接受被附在請求後的實體,並把它當作請求佇列(request-line)中請求uri所指定資源的附加新子項。post被設計成用統一的方法實現下列功能:

a. 對現有資源的注釋(annotation of existing resources);

b. 向電子公告欄、新聞組,郵件列表或類似討論組傳送訊息;

c. 提交資料塊,如將**(form [3])的結果提交給資料處理過程;

d. 通過附加操作來擴充套件資料庫。

下面以具體的例子來說明一次請求過程,以期待有乙個良好的感性認識,順便介紹一下如何利作windows自帶的工具進行請求。

在請求時,我們使用的是telnet命令。開啟windows命令提示框(開始---執行----輸入cmd-----回車)然後開啟遠端終端,其命令提示為telnet,如下圖所示: 

使用head命令請求163.com伺服器下面的index.htm頁面。如圖所示,可以看見已經成功請求到了這乙個頁面。關於返回的頁面頭的詳細資訊,會在以後的內容做更加詳細的講解。還是先將上乙個內容討論完整,即請求命令。

2:請求/響應模型中的請求訊息。

在請求命令中,必須指明請求的型別,請示的uri,請求的http協議的版本號,及伺服器和埠號。如上例所示,其中,head是主求的型別,/index.html是請求的uri,http/1.1是http協議的版本號。伺服器由第二行的資料指定,寫完命令後連續按兩個回車即可以看到內容。

請求資訊除了包含這些必須的資訊外,還可以包含更多的資訊,比如自身的一些資訊:作業系統,瀏覽器等內容。

用更加專業的話說,就是乙個請求訊息應包含乙個起始行,乙個或者多個頭域,乙個頭域結束符,即乙個空行,最後一部份是可選的訊息體。每個頭域由乙個網域名稱,冒號,域值組成。

請求頭域的網域名稱可以為以下幾種:

a:cache-control,用於指明是否快取頁面,對於一些安全性較好的頁面,往往不快取,而對於安全性,實時性不太好的頁面,則可以快取,比如天氣預報的服務等。

b:host,指寫請求internet的主機名和埠號,必須表示請求的uri的原始伺服器或缺省的閘道器位址。http/1.1必須包括host頭域。

c:referer,它允許客戶端指定請求uri 源資源的位址,還可以允許伺服器生成回退鏈,可用來登陸,優化等。他也允許錯誤或棄的鏈結由於維護的目的被追蹤。如果請求的uri沒有自己的uri位址,則這個域不會被傳送。

d:user-agent,這個頭域允許客戶瑞傳送自己的一些資訊,比如前面提到的作業系統。

3:請求/響應模型之響應訊息。

關於響應訊息,其實我們在前面已經有所了解了。比如最前面提到的請求網易主頁的那個頁面。

其資訊如下所示:

先從第一行講起:http/1.1 200 ok

很顯然,最開始描述了http的協議版本。200是乙個狀態值,而ok是對這個狀態值的簡單描述。

關於返回的狀態值,這裡做乙個簡單的介紹:

目前的狀態值其有近40個,一一記住有點困難,在使用的過程中我們可以參考資料,不過可以分類記憶,其規律如下

凡是以1開頭是資訊響應類,表示伺服器正在處理。

凡是以2開頭是成功響應類,表示請求的訊息被成功的理解,接受。

凡是以3開頭的是重定向響應類,為了完成指定的動作,必須接受進一步的處 理。

凡是以4開頭的是客戶端錯誤,表示客戶瑞包含語法錯誤,不能被正確的處理。

凡是以5開頭的表示服務端不能正確的執行乙個正確的響應。

第二行指明了響應的時間,在date網域名稱中指定。

第三行是由server網域名稱指定的伺服器的資訊。

第四行是指長度是位元組為單位定義。

第五行是指客房機可以生成生命週期不大於300秒的響應。

最後一行指定了文件型別 ,編碼方式。

除此之外,還有很多網域名稱,這裡不一一詳細說大,可以參考w3c的文件。

如有時間,會進一步完善這一文章。

Http協議詳解 Http請求詳解

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

HTTP協議詳解

head to inde x.html not supported.invalid method in request head htp 1.1 apache 1.3.12 server at www.fudan.edu.cn port 80 關於實體頭部的內容還可以有 last modified ...

http協議詳解

http由兩部分組成 請求和響應。當你在web瀏覽器中輸入乙個url時,瀏覽器 將根據你的要求建立並傳送請求,該請求包含所輸入的url以及一些與瀏覽器本身相關 的資訊。當伺服器收到這個請求時將返回乙個響應,該響應包括與該請求相關的資訊以 及位於指定url 如果有的話 的資料。直到瀏覽器解析該響應並顯...