【HTTP學習】HTTP協議詳解

HTTP 簡介

HTTP協議是Hyper Text Transfer Protocol(超文本傳輸協議)的縮寫,是用於從萬維網(WWW:World Wide Web )服務器傳輸超文本到本地瀏覽器的傳送協議。。

HTTP是一個基於TCP/IP通信協議來傳遞數據(HTML 文件, 圖片文件, 查詢結果等)。


HTTP 工作原理

HTTP協議工作於客戶端-服務端架構上。瀏覽器作爲HTTP客戶端通過URL向HTTP服務端即WEB服務器發送所有請求。

Web服務器有:Apache服務器,IIS服務器(Internet Information Services)等。

Web服務器根據接收到的請求後,向客戶端發送響應信息。

HTTP默認端口號爲80,但是你也可以改爲8080或者其他端口。

HTTP三點注意事項:

  • HTTP是無連接:無連接的含義是限制每次連接只處理一個請求。服務器處理完客戶的請求,並收到客戶的應答後,即斷開連接。採用這種方式可以節省傳輸時間。
  • HTTP是媒體獨立的:這意味着,只要客戶端和服務器知道如何處理的數據內容,任何類型的數據都可以通過HTTP發送。客戶端以及服務器指定使用適合的MIME-type內容類型。
  • HTTP是無狀態:HTTP協議是無狀態協議。無狀態是指協議對於事務處理沒有記憶能力。缺少狀態意味着如果後續處理需要前面的信息,則它必須重傳,這樣可能導致每次連接傳送的數據量增大。另一方面,在服務器不需要先前信息時它的應答就較快。

 

一、HTTP協議詳解之URL篇

 http(超文本傳輸協議)是一個基於請求與響應模式的、無狀態的、應用層的協議,常基於TCP的連接方式,HTTP1.1版本中給出一種持續連接的機制,絕大多數的Web開發,都是構建在HTTP協議之上的Web應用。

HTTP URL的格式如下:http://host[":"port][abs_path]
                                    http 表示要通過HTTP協議來定位網絡資源;
                                    host 表示合法的Internet主機域名或者IP地址;
                                    port 指定一個端口號,爲空則使用缺省端口80;
                                    abs_path 指定請求資源的URI;

注:如果URL中沒有給出abs_path,那麼當它作爲請求URI時,必須以“/”的形式給出,通常這個工作瀏覽器自動幫我們完成。eg: 輸入:www.baidu.com 瀏覽器自動轉換成:http://www.baidu.com/

二、HTTP協議詳解之請求篇

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

1、請求行格式如下:Method Request-URI HTTP-Version CRLF  
                                    Method 表示請求方法【詳見:HTTP請求方法】
                                    Request-URI 是一個統一資源標識符;
                                    HTTP-Version 表示請求的HTTP協議版本;
                                    CRLF 表示回車和換行(除了作爲結尾的CRLF外,不允許出現單獨的CR或LF字符)。

2、請求報頭後述
3、請求正文(略) 

三、HTTP協議詳解之響應篇

在接收和解釋請求消息後,服務器返回一個HTTP響應消息,http響應由三個部分組成,分別是:狀態行、消息報頭、響應正文

1、狀態行格式如下:HTTP-Version Status-Code Reason-Phrase CRLF
                                    HTTP-Version  表示服務器HTTP協議的版本;
                                    Status-Code 表示服務器發回的響應狀態代碼【詳見:HTTP協議狀態碼詳解(HTTP Status Code)】
                                    Reason-Phrase 表示狀態代碼的文本描述。

2、響應報頭後述
3、響應正文(略) 

四、HTTP協議詳解之消息報頭篇  

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

HTTP消息報頭包括普通報頭、請求報頭、響應報頭、實體報頭【詳見:HTTP Header 詳解】
每一個報頭域都是由名字+“:”+空格+值 組成,消息報頭域的名字是大小寫無關的。

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

2、請求報頭:請求報頭允許客戶端向服務器端傳遞請求的附加信息以及客戶端自身的信息。

3、響應報頭:響應報頭允許服務器傳遞不能放在狀態行中的附加響應信息,以及關於服務器的信息和對Request-URI所標識的資源進行下一步訪問的信息。

4、實體報頭:請求和響應消息都可以傳送一個實體。一個實體由實體報頭域和實體正文組成,但並不是說實體報頭域和實體正文要在一起發送,可以只發送實體報頭域。實體報頭定義了關於實體正文(eg:有無實體正文)和請求所標識的資源的元信息。
常用的實體報頭

HTTP1.1的客戶端和緩存必須將其他非法的日期格式(包括0)看作已經過期。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章