日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > 物聯(lián)網 > 網絡協(xié)議
[導讀] HTTP 是一種允許瀏覽器向服務器獲取資源的協(xié)議,是 Web 的基礎,通常由瀏覽器發(fā)起請求,用來獲取不同類型的文件, 例如 HTML 文件、CSS 文件、JavaScript 文件、圖片、視頻等

HTTP 是一種允許瀏覽器向服務器獲取資源的協(xié)議,是 Web 的基礎,通常由瀏覽器發(fā)起請求,用來獲取不同類型的文件, 例如 HTML 文件、CSS 文件、JavaScript 文件、圖片、視頻等。此外,HTTP 也是瀏覽器使用最廣的協(xié)議。

預備知識

OSI體系結構TCP/IP相關協(xié)議結構應用層HTTP,Telnet,F(xiàn)TP等表示層會話層傳輸層TCP,UDP網絡層IP數(shù)據鏈路層物理層

了解到HTTP協(xié)議是建立在TCP連接基礎之上的。HTTP 是一種允許瀏覽器向服務器獲取資源的協(xié)議,是 Web 的基礎,通常由瀏覽器發(fā)起請求,用來獲取不同類型的文件, 例如 HTML 文件、CSS 文件、JavaScript 文件、圖片、視頻等。此外,HTTP 也是瀏覽器使用最廣的協(xié)議。

我們對HTTP不太了解的話都會存在這樣的疑惑,為什么再次訪問同一站點會比第一次快,登錄過一次后的網站再次訪問就處于登錄狀態(tài)等,我們 通過對HTTP請求過程的剖析來解開這些謎團。

瀏覽器端發(fā)起 HTTP 請求流程

瀏覽器輸入網址:http://time.geekbang.org/index.html,之后會完成什么步驟呢?

1、構建請求

首先,瀏覽器構建請求行信息,構建好后,瀏覽器準備發(fā)起網絡請求。

GET /index.html HTTP1.1

2、查找緩存

在真正發(fā)起網絡請求之前,瀏覽器會先在瀏覽器緩存中查詢是否有要請求的文件。其中,瀏覽器緩存是一種在本地保存資源副本,以供下次請求時直接使用的技術。

當瀏覽器發(fā)現(xiàn)請求資源已經存在瀏覽器緩存中存有副本,則會攔截請求并返回該資源副本結束請求。如果查找緩存失敗,則會進入網絡請求。所以會有利于:

緩解服務器端壓力,提升性能

對于網站來說,緩存是實現(xiàn)快速資源加載的重要組成部分,減少了獲取資源的時間。

3、準備IP地址和端口

我們通過開頭預備知識和前文也大概了解到了HTTP和TCP的關系。瀏覽器使用 HTTP 協(xié)議作為應用層協(xié)議,用來封裝請求的文本信息;并使用 TCP/IP 作傳輸層協(xié)議將它發(fā)到網絡上,所以在 HTTP 工作開始之前,瀏覽器需要通過 TCP 與服務器建立連接。也就是說 HTTP 的內容是通過 TCP 的傳輸數(shù)據階段來實現(xiàn)的。

TCP和HTTP的關系示意圖:

據此,我們可以知道建立HTTP網絡請求就是,通過URL地址來解析獲取IP和端口信息,建立服務器和TCP連接。我們通過前文《TCP協(xié)議》 說到了數(shù)據包都是通過IP地址傳輸給接收方的。而我們網站一般的地址都是域名,所以需要把域名和IP地址做映射關系,即解析IP地址的系統(tǒng)“域名系統(tǒng)(DNS)”解析出 IP地址,并獲取對應端口號獲得建立連接的前置條件。換句話說,即瀏覽器請求DNS返回域名對應的IP,而請求DNS時也會查詢DNS數(shù)據緩存服務,判斷是否域名已解析過, 如果解析過則查詢直接使用,拿到IP后則判斷URL是否指明端口號,沒有則HTTP協(xié)議默認時80端口。

4、等待TCP隊列

Chrome 有個機制,同一個域名同時最多只能建立 6 個 TCP 連接,如果在同一個域名下同時有 10 個請求發(fā)生,那么其中 4 個請求會進入排隊等待狀態(tài),直至進行中的請求完成。當然,如果當前請求數(shù)量少于 6,會直接進入下一步,建立 TCP 連接。

5、建立TCP連接

隊列等待結束后,TCP和服務器實現(xiàn)“三次握手”(前文TCP協(xié)議有描述),即客戶端和服務器發(fā)送三個數(shù)據包以確認連接,實現(xiàn)瀏覽器和服務的連接。

6、發(fā)送HTTP請求

一旦建立了 TCP 連接,瀏覽器就可以和服務器進行通信了。而 HTTP 中的數(shù)據正是在這個通信過程中傳輸?shù)摹?/p>

HTTP請求數(shù)據格式:

首先瀏覽器會向服務器發(fā)送請求行,它包括了請求方法、請求 URI(Uniform Resource IdenTIfier)和 HTTP 版本協(xié)議。

其中請求方式有GET,POST,PUT,Delete等,其中常用的POST會用于發(fā)送一些數(shù)據給服務器,比如登錄網站把用戶信息發(fā)送給服務器,一般 這些數(shù)據會通過請求體發(fā)送。

在瀏覽器發(fā)送請求行命令之后,還要以請求頭形式發(fā)送其他一些信息,把瀏覽器的一些基礎信息告訴服務器。比如包含了瀏覽器所使用的操作系統(tǒng)、瀏覽器內核等信息,以及當前請求的域名信息、Cookie等。

服務器端處理 HTTP 請求流程

1、返回請求

curl -i https://TIme.geekbang.org/

通過curl工具(或network面板)我們可以了解到服務器返回的數(shù)據格式:

首先服務器會返回響應行,包括協(xié)議版本和狀態(tài)碼。

如果出現(xiàn)錯誤,服務器會通過請求行的狀態(tài)碼來返回對應的處理結果,例如:

最常用的狀態(tài)碼是 200,表示處理成功;

404,表示沒有找到頁面

500,表示服務器錯誤

正如瀏覽器會隨同請求發(fā)送請求頭一樣,服務器也會隨同響應向瀏覽器發(fā)送響應頭。響應頭包含了服務器自身的一些信息, 比如服務器生成返回數(shù)據的時間、返回的數(shù)據類型(JSON、HTML、流媒體等類型),以及服務器要在客戶端保存的 Cookie 等信息。

響應頭之后,服務器會發(fā)送響應體數(shù)據,通常包含了HTML的實際內容。以上為服務器響應瀏覽器的過程。

2、斷開連接

一旦服務器向客戶端返回了請求數(shù)據,它就要關閉 TCP 連接。不過如果瀏覽器或者服務器在其頭信息中加入了:

ConnecTIon:Keep-Alive

則TCP 連接在發(fā)送后將仍然保持打開狀態(tài),這樣瀏覽器就可以繼續(xù)通過同一個 TCP 連接發(fā)送請求。保持 TCP 連接可以省去下次請求時需要建立連接的時間,提升資源加載速度。 如果一個頁面內嵌的圖片都來自同一web站點,則初始化一個持久連接則可復用減少TCP的連接。

3、重定向

重定向返回響應行和響應頭:

狀態(tài) 301 就是告訴瀏覽器,我需要重定向到另外一個網址,而需要重定向的網址正是包含在響應頭的 LocaTIon 字段中,接下來,瀏覽器獲取 Location 字段中的地址,并使用該地址重新導航,這就是一個完整重定向的執(zhí)行流程。

總結

通過http請求的完整過程,我們就知道,請求過程中DNS緩緩和頁面資源緩存會被瀏覽器緩存起來,以減少向服務器請求的資源,所以會再次請求站點時速度會快。

瀏覽器資源緩存處理過程:

從上圖的第一次請求可以看出,當服務器返回 HTTP 響應頭給瀏覽器時,瀏覽器是通過響應頭中的 Cache-Control 字段來設置是否緩存該資源。通常,我們還需要為這個資源設置一個緩存過期時長,而這個時長是通過 Cache-Control 中的 Max-age 參數(shù)來設置的。

因此在該緩存資源還未過期的情況下, 如果再次請求該資源,會直接返回緩存中的資源給瀏覽器。

如果緩存過期了,瀏覽器則會繼續(xù)發(fā)起網絡請求,并且在 HTTP 請求頭中帶上If-None-Match,服務器收到請求頭后,會根據 If-None-Match 的值來判斷請求的資源是否有更新。

如果沒有更新,就返回 304 狀態(tài)碼,相當于服務器告訴瀏覽器,這個緩存可以繼續(xù)使用。

如果資源有更新,服務器就直接返回最新資源給瀏覽器。

登錄網站,通過POST方式提交信息給服務器,服務器接收到瀏覽器提交的信息之后,查詢驗證信息正確則會生成表面用戶身份的字符串寫入響應頭的Set-Cookie字段里返回瀏覽器。

瀏覽器解析響應頭,如有Set-Cookie字段則保存在本地,當用戶再次訪問時,發(fā)起HTTP請求前瀏覽器會讀取Cookie數(shù)據并寫入請求頭發(fā)送到服務器,服務器再次判斷信息,如果 正確則展示用戶登錄狀態(tài)及用戶信息。

最后總結出瀏覽器中的HTTP請求從發(fā)起到結束一共經歷了八個階段:構建請求、查找緩存、準備 IP 和端口、等待 TCP 隊列、建立 TCP 連接、發(fā)起 HTTP 請求、服務器處理請求、服務器返回請求和斷開連接。

詳細HTTP請求流程:

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內容侵犯您的權益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關鍵字: 驅動電源

在工業(yè)自動化蓬勃發(fā)展的當下,工業(yè)電機作為核心動力設備,其驅動電源的性能直接關系到整個系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動勢抑制與過流保護是驅動電源設計中至關重要的兩個環(huán)節(jié),集成化方案的設計成為提升電機驅動性能的關鍵。

關鍵字: 工業(yè)電機 驅動電源

LED 驅動電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個照明設備的使用壽命。然而,在實際應用中,LED 驅動電源易損壞的問題卻十分常見,不僅增加了維護成本,還影響了用戶體驗。要解決這一問題,需從設計、生...

關鍵字: 驅動電源 照明系統(tǒng) 散熱

根據LED驅動電源的公式,電感內電流波動大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關鍵字: LED 設計 驅動電源

電動汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產業(yè)的重要發(fā)展方向。電動汽車的核心技術之一是電機驅動控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機驅動系統(tǒng)中的關鍵元件,其性能直接影響到電動汽車的動力性能和...

關鍵字: 電動汽車 新能源 驅動電源

在現(xiàn)代城市建設中,街道及停車場照明作為基礎設施的重要組成部分,其質量和效率直接關系到城市的公共安全、居民生活質量和能源利用效率。隨著科技的進步,高亮度白光發(fā)光二極管(LED)因其獨特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關鍵字: 發(fā)光二極管 驅動電源 LED

LED通用照明設計工程師會遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關鍵字: LED 驅動電源 功率因數(shù)校正

在LED照明技術日益普及的今天,LED驅動電源的電磁干擾(EMI)問題成為了一個不可忽視的挑戰(zhàn)。電磁干擾不僅會影響LED燈具的正常工作,還可能對周圍電子設備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關鍵字: LED照明技術 電磁干擾 驅動電源

開關電源具有效率高的特性,而且開關電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機重量也有所下降,所以,現(xiàn)在的LED驅動電源

關鍵字: LED 驅動電源 開關電源

LED驅動電源是把電源供應轉換為特定的電壓電流以驅動LED發(fā)光的電壓轉換器,通常情況下:LED驅動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關鍵字: LED 隧道燈 驅動電源
關閉