一次完整的HTTP請(qǐng)求所經(jīng)歷的步驟

1. 建立TCP連接

在 HTTP 工作開始之前,Web 瀏覽器首先要通過網(wǎng)絡(luò)與 Web 服務(wù)器建立連接,該連接是通過TCP來完成的,該協(xié)議與 IP 協(xié)議共同構(gòu)建 Internet,即著名的 TCP/IP 協(xié)議,因此 Internet 又被稱作是TCP/IP網(wǎng)絡(luò)。HTTP 是比 TCP 更高層次的應(yīng)用層協(xié)議,根據(jù)規(guī)則,只有低層協(xié)議建立之后才能進(jìn)行更高層協(xié)議的連接,因此,首先要建立 TCP 連接,一般TCP連接的端口號(hào)是80。建立TCP連接需要找到連接主機(jī),所以需要先解析域名得到 IP 再找到主機(jī)進(jìn)行3 次握手建立TCP連接(兩臺(tái)電腦之間建立一個(gè)通信橋梁)


2. Web瀏覽器向Web服務(wù)器發(fā)送請(qǐng)求命令

一旦建立了 TCP 連接,Web 瀏覽器就會(huì)向 Web 服務(wù)器發(fā)送請(qǐng)求命令。例如:GET/hello/index.jsp HTTP/1.1。瀏覽器發(fā)送其請(qǐng)求命令之后,還要以頭信息的形式向Web服務(wù)器發(fā)送一些別的信息(例:Accept ,User-Agent 等?),之后瀏覽器發(fā)送了一空白行來通知服務(wù)器,它已經(jīng)結(jié)束了該頭信息的發(fā)送。

3. Web服務(wù)器應(yīng)答

客戶機(jī)向服務(wù)器發(fā)出請(qǐng)求后,服務(wù)器會(huì)客戶機(jī)進(jìn)行應(yīng)答,應(yīng)答內(nèi)容包括:協(xié)議的版本號(hào)和應(yīng)答狀態(tài)碼 :HTTP/1.1 200 OK,響應(yīng)頭信息來記錄服務(wù)器自己的數(shù)據(jù),被請(qǐng)求的文檔內(nèi)容。最后發(fā)送一個(gè)空白行來表示頭信息的發(fā)送到此為結(jié)束,接著以Content-Type響應(yīng)頭信息所描述的格式發(fā)送用戶所請(qǐng)求的實(shí)際數(shù)據(jù)。

4. Web服務(wù)器關(guān)閉TCP連接

一般情況下,一旦 Web 服務(wù)器向?yàn)g覽器發(fā)送了請(qǐng)求的數(shù)據(jù),它就要關(guān)閉 TCP 連接,但是如果瀏覽器或者服務(wù)器在其頭信息加入了這行代碼:Connection:keep-alive

TCP連接在發(fā)送后將仍然保持打開狀態(tài),于是,瀏覽器可以繼續(xù)通過相同的連接發(fā)送請(qǐng)求。保持連接節(jié)省了為每個(gè)請(qǐng)求建立新連接所需的時(shí)間,還節(jié)約了網(wǎng)絡(luò)帶寬。

5. 瀏覽器接受到服務(wù)器響應(yīng)的數(shù)據(jù)

瀏覽器接受服務(wù)器應(yīng)答回來的 html 代碼和css,和js代碼再進(jìn)行頁面的渲染或者接受到應(yīng)答的文件進(jìn)行保存等操作

總結(jié)流程

瀏覽器發(fā)起請(qǐng)求-> 解析域名得到ip進(jìn)行TCP連接 ->瀏覽器發(fā)送HTTP請(qǐng)求和頭信息發(fā)送->服務(wù)器對(duì)瀏覽器進(jìn)行應(yīng)答,響應(yīng)頭信息和瀏覽器所需的內(nèi)容-> 關(guān)閉TCP連接或保持-> 瀏覽器得到數(shù)據(jù)數(shù)據(jù)進(jìn)行操作


轉(zhuǎn)載http://www.itdecent.cn/p/ae62574f7a99

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容