http協議知識點整理


看到身邊有那么多的大佬還在不懈的學習,心里就會愧疚一波,真是越厲害的人越努力啊。

整理下http協議以及相關知識點,方便以后復習。

1.什么是HTTP協議

HTTP超文本傳輸協議就是指在瀏覽器發送和服務器接收請求以及返回響應的時候接受要遵守的一套規則,就像汽車在路上行駛也要根據交通規則來進行啊,不然就亂套了。

http超文本傳輸協議是基於TCP/IP通信協議來傳遞數據的,在OSI七層中的應用層。

2.HTTP協議的特點

①通信速度比較快,因為HTTP協議簡單,客戶端每次向服務器發出請求的時候只需要傳遞請求方法和路徑就可以了。

②比較靈活,因為HTTP協議允許傳輸任意類型的數據對象。正在傳輸的類型由Content-Type標記。

③比較節省傳輸時間,因為http是無連接的(無連接的意思是每次連接只會處理一個請求(相對的也會有一個響應))。當服務器處理完客戶的請求以后,客戶端也拿到了服務器發出的響應,隨后斷開連接。采用這種方式節省傳輸時間,ps:更第一個特點也差不多了。。。。

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

3.啥叫無連接無狀態呢?

就是說這一次請求和上一次請求是沒有任何關系的,互不認識的,沒有關聯的,打個比喻吧,快遞員A經常魚送快遞,但魚沒有記憶,A經常給魚送快遞,但魚不認識快遞員咋辦?看下個問題哦

4.怎么解決http的無狀態無連接呢?

額,就是給魚兒增加記憶功能,也就是讓http協議加上cookie,session,tonken(加上后服務器就知道你登錄后屬於哪個用戶,知道你比較喜歡什么,知道你曾經在網站上做了哪些操作),這樣魚就知道是這個快遞員喜歡給我送東西。

 5.那什么是cookie,session,tonken 呢?

首先接着用例子說:

快遞員A要給魚兒送快遞得進去小區啊,然后小區管理員(服務器),會給A一個cookie,證明A是快遞員,這個cookie里面還有一個暗藏的session_id(也是服務器發的),證明A到小區都干啥了,有個記錄。以后A到小區后,小區管理員知道A的在小區內所有的軌跡和操作。。。。。

如果不懂例子就看下文::

cookie是什么:是一個驗證身份的東東,存儲在瀏覽器內,如果不設置過期時間,則表示這個cookie生命周期為瀏覽器會話期間,只要關閉瀏覽器窗口,cookie就消失了,如果設置過期時間,那么過期時間到了cookie才會過期。

session是什么:Session是用來鑒權的,Session將數據存儲在服務器中,服務器會為每一個用戶創建一條session_id並存入到cookie,用戶訪問服務器 的時候需要拿着sessionid去表明自己的身份。 Session的實現是基於Cookie, Session需要借助於Cookie來存儲sessionID。

token是什么:token也是用來鑒權的,鑒定訪問的接口是否正常,是否是非法訪問,繞過前端訪問(每個頁面都會有個token,如果你繞過前端直接訪問某個頁面,token就會鑒定你是繞過前端訪問就會拒絕你的請求)

Cookie的原理

(1)客戶端第一次請求時,發送數據到服務器。

(2)服務器返回響應信息的同時,還會傳回一個cookie(cookie S-001)

(3)客戶端接收服務器的響應之后,瀏覽器會將cookie存放在一個統一的位置。

(4)客戶端再次向服務器發送請求的時候,會把Cookie 帶給服務器。

(5)這樣服務器就知道是哪個用戶了。

session的原理:

(1)服務器在處理客戶端請求過程中會創建session,並且為該session生存唯一的session ID。(這個session ID在隨后的請求中會被用來重新獲得已經創建的session。在session被創建后,就可以調用session相關的方法向session中新增內容,這些內容只會保存在服務器中) 

(2)服務器將session ID發送到客戶端

(3)當客戶端再次請求時,就會帶上這個session ID

(4)服務器接收到請求之后就會依據Session ID 找到相應的Session ,完成請求

##########################放兩個圖更容易知道哦#####################

 

 

 

Cookie和session有啥區別里?

①.Cookie相當於授權

②.Session相當於鑒權

③.cookie放在客戶端的瀏覽器上,session放服務器上。

④ Session生成的Session id是在cookie里保存的,cookie被禁止后可以通過URL重寫來繼續使用session

⑤.cookie不是安全,存放在本地的COOKIE可能被獲取並進行COOKIE欺騙。

⑥.session會給服務器帶來壓力,考慮到服務器性能,應當使用COOKIE。

⑦.cookie只能保存字符串類型,以文本的方式。session通過類似與Hashtable的數據結構來保存,能支持任何類型的對象(session中可含有多個對象)

⑧.單個cookie保存的數據不能超過4K,很多瀏覽器都限制一個站點最多保存20個cookie, Session大小沒限制。

 6.OSI七層協議

互聯網的本質就是一系列的網絡協議,這個協議就叫OSI協議(一系列協議),按照功能不同,分工不同,有的分為七層,四層

七層划分為:應用層、表示層、會話層、傳輸層、網絡層、數據鏈路層、物理層。

四層划分為:應用層、傳輸層、網絡層、網絡接口層。

7.什么是tcp/ip協議

HTTP協議也屬於TCP/IP協議,TCP/IP協議是一個協議的集合,里面包含很多協議的,因為TCP、IP協議是兩個很重要的協議,就用他兩命名了。

TCP/IP協議也就是OSI協議的四層:包括應用層,傳輸層,網絡層,網絡訪問層。

TCP/IP是面向連接的協議,建立連接需要三次握手,斷開連接需要四次揮手。

8.三次握手四次揮手

先聊聊三次握手:

①.發送端首先發送一個帶有SYN(synchronize)標志地數據包給接收方。

②.接收方接收后,回傳一個帶有SYN/ACK標志的數據包傳遞確認信息,表示我收到了。

③.最后,發送方再回傳一個帶有ACK標志的數據包,代表我知道了,表示’握手‘結束。

就像A和B打電話,A說是我,聽到我聲音了嗎,B說,我聽到了,你能聽到我說話嗎,A說我能聽到啊,咱們開始打電話吧。

三次握手完畢后,客戶端與服務器才正式開始傳送數據。理想狀態下,TCP連接一旦建立,在通信雙方中的任何一方主動關閉連 接之前,TCP 連接都將被一直保持下去。斷開連接時服務器和客戶端均可以主動發起斷開TCP連接的請求,斷開過程需要經過“四次握手”

 

再聊聊四次握手:

①在數據傳輸完畢之后,客戶端會向服務端發出一個FIN終止信號。

②服務端在收到這個信號之后會向客戶端發出一個ACK確認信號。

③如果服務端此后也沒有數據發給客戶端時服務端會向客戶端發送一個FIN終止信號。

④客戶端在收到這個信號之后會回復一個確認信號,在服務端接收到這個信號之后,服務端與客戶端的通道也就關閉

通俗的說法

①.Client:我所有東西都說完了

②.Server:我已經全部聽到了,但是等等我,我還沒說完

③.Server:好了,我已經說完了

④.Client:好的,那我們的通信結束

9.HTTP常見狀態碼

一般分為五大類:

1xx:還在請求中

2xx:代表成功

3xx:代表重定向

4xx:代表請求有錯誤

5xx:服務器端有錯誤

常見狀態碼以及說名如下:

200:表示一切正常,到了服務器,服務器也正常響應請求。

301是永久重定向,常用的場景是使用域名跳轉(發送請求之后,就會返回301狀態碼,然后返回一個location,提示新的地址,瀏覽器就會拿着這個新的地址去訪問。)

302(臨時重定向):指出文件已經被臨時已到別處,是臨時重定向,用來做臨時跳轉。接着上面的例子,重定向到 https://www.zhihu.com 的請求又會通過302重定向到 https://www.zhihu.com/signup?next=%2F

304(未修改):表示客戶機緩存的版本是最新的,客戶機應該繼續使用它,比如前端的js,css圖片等(不然再從服務器下載這些就容易造成緩慢)

403(禁止):服務器理解客戶端請求,但拒絕處理它,通常由於服務器上文件或目錄權限設置所致

404(找不到):服務器上不存在客戶端所請求的資源

500(內部服務器錯誤):服務端程序發生錯誤

504:超時

10.HTTP協議請求方法

最基本的方法有五種:post,get ,put,head,delete、

http中的put(增加),dellete(刪除),post(修改),get(查詢)剛好對應常用的增刪改查的4個操作,最常用的還是post和get

get 一般用於獲取查詢資源信息,

post 一般用於更新資源信息

head 類似於get請求,只不過返回的響應中沒有具體的內容,用於獲取報頭

put 從客戶端向服務器發送的數據取代指定文檔的內容

delete 請求服務器刪除指定頁面

最常用的方法是get和post方法。

get方法:常用於像服務器查詢某些信息和獲取資源

11 HTTP協議和HTTPS協議區別

http 是超文本傳輸協議,信息是明文傳輸,https 則是具有安全性的 ssl 加 密傳輸協議。SSL協議可以對數據進行加密以及進行身份認證(HTTPS在進行連接的時候也要進行握手和揮手認證,不過握手時要進行身份驗證,身份驗證通過后傳輸數據都是加密的數據),所以https對比http更安全

http 和 https 使用的是不同的連接方式,用的默認端口也不一樣,前者是 80, 后者是 443。 (這個只是默認端口不一樣,實際上端口是可以改的) 

http是免費的,https是收費的,百度了下價格到幾百到幾萬不等吧。

12 HTTP請求報文和HTTP響應報文構成

HTTP請求報文由四部分組成

1.請求行:由請求方法,請求地址(url),http協議版本

2.請求頭:由各類屬性組成

3.空行

4.請求體(body):如果是post方法,會把數據以key value形式發送請求

 

HTTP響應報文由四部分組成

1.響應行:由報文協議版本,狀態碼組成
2.響應頭:由各類屬性組成

3.空行

4.響應體:是服務器返回給客戶端的文本信息。

如果沒有空行,請求頭有多行,區分不開請求頭和請求體

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM