HTTP協議 - 初次見面 ,慢慢來(一)

一、什麼是HTTP?

Hyper Text Transfer Protocol 超文本傳輸協議

二、如何看到HTTP 中傳輸的內容是什麼呢?

我們用火狐瀏覽器,打開一個網頁www.baidu.com爲例:
按F12—-網絡,可以看到:
圖1
我們點開一個其中的+get,我們可以看到:
圖2
這裏面的頭信息,緩存,cookies都是http協議的內容;

2.1請求頭信息中的Referer是什麼?

你的這個請求是從哪個地方跳轉過來的;
例子:
從搜狗(打開搜狗的網站)—輸入百度(www.baidu.com),這時候看這個referer,那麼就是搜狗的地址【從搜狗跳轉過來的】。
場景:
實際中有什麼應用場景呢?—–防盜鏈(搜索引擎經常會爬取我的一些東西,我不想讓他爬,其中就可以用這個referer,看來源是不是來自本允許的網站,如果不是,禁止訪問。)
比如:
我的網站是搜狗,然後有人訪問我,這時候就會帶有一個referer,然後我發現這個referer是來自百度的,不是我的網站,然後我就不讓他訪問;

2.2請求頭信息中的Accept-Encoding gzip, deflate是什麼?

說明:
指定客戶端瀏覽器可以支持的web服務器返回內容壓縮編碼類型。表示允許服務器在將輸出內容發送到客戶端以前進行壓縮,以節約帶寬。而這裏設置的就是客戶端瀏覽器所能夠支持的返回壓縮格式。
accept-encoding 關係到的是網絡前端性能;
解釋:
當網頁傳遞過來的信息,如果沒有壓縮,就傳遞給客戶端了,那麼會影響你的客戶端的前端的性能,數據量會很大,在網絡傳輸過程中就會耗時更長,前端性能就會變差,所以默認網頁在傳輸內容的時候,都會使用gzip編碼格式做傳輸的,這樣可以減少傳輸的數據的大小,不影響性能。

2.3請求頭信息中的User-Agent(UA) 是什麼?

學名: 用戶代理
例如:
User-Agent Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0
翻譯一下:火狐瀏覽器 / 5.0版本(windows操作系統。。。。。。)。。。。。。
用途場景:
可以通過user-agent來知道訪問我網站的用戶都是用什麼瀏覽器來訪問的——-瀏覽器的兼容性測試;

3.1響應頭信息中的Content-Length是什麼?

指傳輸的數據的長度。

3.2響應頭信息中的Connection keep-alive是什麼?

訪問服務器時的連接情況:
當訪問服務器時選擇的連接方式是keep-alive的話,服務器不會立刻釋放這個連接,會在一定時間內保存這個連接,這樣等下一次請求的時候不用再新建連接,就不用再進行三次握手連接,這樣就提升了請求效率;
說明:
【TCP/IP在進行通訊傳輸的時候,要進行三次握手連接,是要通過網絡進行傳輸的;
如果所有的請求都是要新建立連接,通過網絡傳輸完成三次握手,再響應,然後返回傳輸數據的話,就會很耗時;
但是如果選擇 keep-alive 的連接方式的話,那麼在一定時間裏再次訪問這個連接的時候,就不用新建連接,三次握手,而是通過直接複用原有的連接來進行傳輸數據,這樣就會減少新的連接的建立,從而節省了傳輸時間;】

三、對HTTP協議本身的一些瞭解(Hyper Text Transfer Protocol)——- 一種可靠的數據傳輸協議

哪裏可以用HTTP協議呢?
後臺數據的傳輸(接口請求) VS 顯示網頁
HTTP協議位於 OSI 七層模型中的網絡應用層,下一層是傳輸層(TCP/IP 、 UDP);
其中傳輸層的TCP/IP協議和UDP的區別是什麼呢?
TCP/IP傳輸速率較UDP慢,但是他穩定,安全,不會丟包,會控制傳輸數據的順序,不會錯亂;
UDP傳輸速率較TCP/IP快,但是不穩定,會發生丟包的現象;
HTTP協議是基於傳輸層的上一層協議,很穩定,可靠,在傳輸數據的時候,要麼成功,要麼失敗,絕對不會只傳回來一部分包,另外的部分包丟失了。
另:
計算機的底層都是端口到端口之間的傳輸(中間可能經過無數的網關,路由,代理等等),那麼如此混沌、複雜的傳輸怎麼保證不出錯呢?就要通過一種協議(TCP/IP),可以把它看成一種規範,要麼失敗了就重新傳遞,或怎樣處理好了以後再往下一步進行傳輸這樣就保證了傳輸的可靠性和數據的完整性;而恰恰HTTP是基於TCP協議的上層協議,所以是非常可靠和穩定的。

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