HTTP協議

1、URL
URL,統一資源定位符,它是一種特殊類型的URI,包含了用於查找某個資源的足夠的信息。
URL格式:

http://host[":"port][abs_path]

http表示通過http協議來定位網絡資源,host表示合法的主機域名或IP地址。port指定一個端口號,爲空則使用缺省端口80,abs_path指定請求資源的路徑,如果URL中沒有給出abs_path,那麼瀏覽器會自動會加上“/”,表示web根目錄。

例:

https://www.baidu.com

經過瀏覽器之後就會變成

https://www.baidu.com/

上面介紹的URL都是不帶參的,下面看一看帶參的URL:

https://www.baidu.com/?wd=100&rsv_spt=1

其中”?”表示參數的開始,每個參數都是name=value的形式,每個參數之間以”&”分隔。

2、http請求
http請求是由請求行、消息報頭、空行、請求正文組成。
這裏寫圖片描述

method:表示請求方法

請求方法(method):
GET 請求獲取Request-URl所標識的資源。
POST 在Request-URl所標識的資源後附加新的數據。
HEAD 請求獲取由Request-URl所標識的資源的響應消息報頭
PUT 請求獲取由Request-URl所標識的資源的響應消息報頭
DELETE 請求服務器刪除Request-URl作爲其標識
TRACE 請求服務器或回送收到的請求信息,用於測試或診斷。
CONNECT 保留將來使用
OPTIONS 請求查詢服務器的性能,或者查詢與資源相關的選項和需求

path:表示請求資源的路徑,如果是GET方法的話,可以帶有參數。它的值也就是URL中的abs_path。如果是post的方法的話,它的參數在消息正文中。

爲什麼要有空行??
空行實際上也是一種避免粘包的策略,因爲我們知道,第一行是請求行,從第二行開始一直到空行就是消息報頭了。

3、http響應
http響應是由狀態行、消息報頭、空行、響應正文:
這裏寫圖片描述

狀態碼:

狀態碼由三位數字組成,總共分爲5類:
1xx:指示信息 表示請求已接受,繼續處理
2xx:成功 表示請求被成功接收、理解、接受
3xx:重定向 要完成請求必須進行更進一步的操作
4xx:客戶端錯誤 請求語法有錯誤,或請求無法實現
5xx:服務器端錯誤 服務器未能實現合法的請求

常見狀態碼:
200 OK //客戶端請求成功
403 Forbidden //服務器收到請求,但是拒絕提供服務
404 Nto Found //請求資源不存在,也就是輸入了錯誤的URL
500 Internal Server Error //服務器發生不可預期的錯誤
503 Server Unavailable //服務器當前不能處理客戶端的請

例:
響應報文的格式如下:

這裏寫圖片描述

4、HTTP的特點如下:

支持客戶/服務器模式(c/s 或 b/s)

簡單快速:客戶向服務器請求服務的時候,只需傳送請求方法和路徑。請求方法常用的有GET、HEAD、POST。每種方法規定了客戶與服務器聯繫的類型不同。由於HTTP服務器程序規模小,因而通信速度很快。

靈活:HTTP允許傳輸任意類型的數據對象。正在傳輸的類型由Content-Type加以標記。

無連接:無連接的含義是限制每次連接只處理一個請求。服務器處理完客戶的請求,並收到客戶的應答之後即斷開連接。採用這種方式可以減少傳輸時間。

無狀態:HTTP協議是無狀態協議。無狀態是指協議對事物處理沒有記憶能力。缺少狀態的話意味着如果後續處理需要前面的信息,則它必須重傳,這樣可能導致每次鏈接傳送的數據量增大。另一方面,服務器不需要先前信息時它應答就比較快。

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