計算機網絡中應用層之HTTP協議

HTTP協議是超文本傳輸協議,是一個應用層的協議,是客戶端和服務器端之間進行通信的一個協議, 一種典型的“請求-響應”式工作模式,即:客戶端發起請求,服務器端回送響應。

HTTP協議工作流程:

1.首先客戶端與服務器端需要加建立連接(常用的是建立TCP連接,還有“三次握手”的內容在後面介紹)。只要單機超鏈接,HTTP便開始工作。

2.建立連接後,客戶端發送一個請求給服務器。 (請求的報文格式在後面介紹)。

3.服務器接收到請求後,給予相應的響應信息。(響應的報文格式在後面介紹)。

4.客戶端接收服務器所返回的信息通過瀏覽器顯示在用戶的顯示屏上,然後客戶端和服務器端斷開連接。

這裏寫圖片描述

HTTP報文格式:

1>HTTP的請求報文格式:

打開 chrome瀏覽器,進入開發者模式,輸入一個新浪網站的地址,打開Network,找到Request Headers,點開view source,就可以查看到瀏覽器發給新浪服務器的請求:
這裏寫圖片描述

總結HTTP請求的報文格式:
這裏寫圖片描述

下面,給出一個真正的HTTP請求報文,如下:

GET /xxx/page.html HTTP/1.1        方法字段可以取值GET、POST,GET僅請求資源,POST會附帶用戶數據
Host: www.xxx.com                  區分瀏覽器請求的哪個網站
Connection: close                  服務器發送完被請求的對象之後關閉鏈接
User-agent:Mozilla/4.0
Accept-language: fr

2>HTTP的響應報文格式:
在Network中繼續往下找到Response Headers,點擊view source,顯示服務器返回的原始響應數據:

這裏寫圖片描述

總結HTTP響應的報文格式:

這裏寫圖片描述

下面,給出一個真正的HTTP請求報文,如下:

HTTP/1.1 200 OK         200表示一個成功的響應,OK是說明
Connection: close       服務器發送完被請求的對象之後關閉鏈接  
Data: Thu, 03, Jul, 2013 00:00:00 GMT
Server: Apache/1.3.0 (Unix)
Last-Modified: Sun, 6, May 2007 09:23:24 GMT
Content-Type: text/html     表示HTML網頁;瀏覽器就是依靠Content-Type來判斷響應的內容是網頁還是圖片,是視頻還是音樂。瀏覽器並不靠URL來判斷響應的內容,所以,即使URL是http://example.com/abc.jpg,它也不一定就是圖片。

(data ... data ...)

常見的響應狀態碼:
200 表示一個成功的響應

404 Not Found:網頁不存在

500 Internal Server Error:服務器內部出錯

TCP鏈接和“三次握手”

在此簡單說一下,後面的博客會詳細介紹:

HTTP是基於傳輸層的TCP協議,而TCP是一個端到端的面向連接的協議。所謂的端到端可以理解爲進程到進程之間的通信。所以HTTP在開始傳輸之前,首先需要建立TCP連接,而TCP連接的過程需要所謂的“三次握手”。下圖所示TCP連接的三次握手。
在TCP三次握手之後,建立了TCP連接,此時HTTP就可以進行傳輸了。一個重要的概念是面向連接,既HTTP在傳輸完成之間並不斷開TCP連接。在HTTP1.1中(通過Connection頭設置)這是默認行爲。

這裏寫圖片描述

備註:

未來是HTTP2.0的時代,從今年6月份起蘋果公司要求開發者提交到APP store的產品必須兼容面向硬件識別和網絡路由的最新互聯網協議IPV6-only,就是基於對HTTP2.0的支持,這樣會有更快更安全的進行網絡傳輸。 蘋果棄用NSURLConnection,轉向支持最新的NSURLSession,在今後的代碼中最好是用NSURLSession,因爲它兼容IPV6-only,在最新的AFNetworking中也停止了對NSURLConnection的封裝,只封裝使用NSURLSession。但是經過檢測在iOS9系統上NSURLConnection仍然還是兼容IPV6-only,但是趨勢終究還是NSURLSession。

發佈了38 篇原創文章 · 獲贊 15 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章