HTTP協議詳解

HTTP

1. 介紹
http協議是一種基於TCP/IP通信協議來傳輸數據的超文本傳輸協議,通俗點來說就是一種將你需要的信息從萬維網傳輸到本地瀏覽器的協議,它規定了信息應該怎樣傳輸。
一些常見的web服務有:
Nginx
Apache
lls 等,其中Nginx以自身高併發,輕量級的優勢在一些大型互聯網企業之中佔據較大市場份額,Aphache市場份額在逐年遞減,Nginx,Apache的服務與應用會在之後陸續更出。

2. 原理
HTTP協議工作於客戶端-服務端架構上。瀏覽器作爲HTTP客戶端通過URL向HTTP服務端即web服務器發送所有請
求。web服務器根據客戶端的請求向客戶端響應對應的信息。
3. 特點
* 無連接 ---- 即限制每次連接只處理一個請求。服務器處理完客戶的請求,並收到客戶的應答後,即斷開連接。採用這種方式可以節省傳輸時間
* 媒體獨立----只要客戶端和服務器知道如何處理的數據內容,任何類型的數據都可以通過HTTP發送。客戶端以及服務器指定使用適合的MIME-type內容類型。
* 無狀態----無狀態是指協議對於事務處理沒有記憶能力。缺少狀態意味着如果
後續處理需要前面的信息,則它必須重傳,這樣可能導致每次連接傳送的數據量增大。另一方面,在服務器不
需要先前信息時它的應答就較快。
4. 請求消息和迴應消息
請求消息----客戶端發送一個HTTP請求到服務器的請求消息包括以下格式:請求行(request line)、請求頭部(header)、空行和請求數據四個部分組成
迴應消息----HTTP響應也由四個部分組成,分別是:狀態行、消息報頭、空行和響應正文。
5. 請求方法

根據HTTP標準,HTTP請求可以使用多種請求方法。
http請求方法
重點方法
GET:單純獲取數據(獲取一個index.html頁面)
POST:上傳/創建文件(會產生新的數據)
PUT:保存數據(覆蓋/更新文件、圖片等,不會產生新的數據)
DELETE:刪除
下面是一些請求信息實例:

Connected to www.testpm.cn (47.244.247.240) port 80 (#0)
> GET /hello.txt HTTP/1.1 # 請求方式與版本協議。
> User-Agent: curl/7.29.0 #用什麼客戶端訪問
> Host: www.testpm.cn #主機名,域名。主機和端口號,
> Accept: */* #匹配什麼文件類型,“*” 是通用匹配。匹配所有類型

6. 響應頭
在這裏插入圖片描述
下面是服務器響應信息示例:

< HTTP/1.1 200 OK #請求返回的狀態碼
< Server: nginx/1.16.0 #請求的服務和版本號
< Date: Thu, 04 Jul 2019 08:19:40 GMT
< Content-Type: text/plain #文本類型,有html,plain:普通文本
< Content-Length: 12
< Last-Modified: Thu, 04 Jul 2019 08:13:25 GMT
< Connection: keep-alive #是否支持長連接
< ETag: "5d1db525-c" #標識,每次訪問如果與最開始的一樣返回304否則校驗不一致返回200
< Accept-Ranges: bytes

7. 一些常見的狀態碼
200 - 請求成功
301 - 資源(網頁等)被永久轉移到其它URL
404 - 請求的資源(網頁等)不存在
403 - 服務器理解請求客戶端的請求,但是拒絕執行此請求
500 - 內部服務器錯誤

注:收集整理不易,轉載請註明出處,謝謝。

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