本文作者:黃少存,叩丁狼高級講師富寿。原創(chuàng)文章见秽,轉載請注明出處。
HTTP通信機制是在一次完整的HTTP通信過程中桅打,Web 瀏覽器與 Web 服務器之間將完成下列幾個步驟:
1. 建立TCP連接
在 HTTP 工作開始之前是嗜,Web 瀏覽器首先要通過網(wǎng)絡與 Web 服務器建立連接,該連接是通過TCP來完成的挺尾,該協(xié)議與 IP 協(xié)議共同構建 Internet鹅搪,即著名的 TCP/IP 協(xié)議,因此 Internet 又被稱作是TCP/IP網(wǎng)絡遭铺。HTTP 是比 TCP 更高層次的應用層協(xié)議丽柿,根據(jù)規(guī)則恢准,只有低層協(xié)議建立之后才能進行更高層協(xié)議的連接,因此甫题,首先要建立 TCP 連接馁筐,一般TCP連接的端口號是80。建立TCP連接需要找到連接主機坠非,所以需要先解析域名得到 IP 再找到主機進行3 次握手建立TCP連接(兩臺電腦之間建立一個通信橋梁)
2. Web瀏覽器向Web服務器發(fā)送請求命令
一旦建立了 TCP 連接敏沉,Web 瀏覽器就會向 Web 服務器發(fā)送請求命令。例如:GET/hello/index.jsp HTTP/1.1炎码。瀏覽器發(fā)送其請求命令之后盟迟,還要以頭信息的形式向Web服務器發(fā)送一些別的信息(例:Accept ,User-Agent 等?),之后瀏覽器發(fā)送了一空白行來通知服務器潦闲,它已經(jīng)結束了該頭信息的發(fā)送攒菠。
3. Web服務器應答
客戶機向服務器發(fā)出請求后,服務器會客戶機進行應答矫钓,應答內容包括:協(xié)議的版本號和應答狀態(tài)碼 :HTTP/1.1 200 OK要尔,響應頭信息來記錄服務器自己的數(shù)據(jù),被請求的文檔內容新娜。最后發(fā)送一個空白行來表示頭信息的發(fā)送到此為結束赵辕,接著以Content-Type響應頭信息所描述的格式發(fā)送用戶所請求的實際數(shù)據(jù)。
4. Web服務器關閉TCP連接
一般情況下概龄,一旦 Web 服務器向瀏覽器發(fā)送了請求的數(shù)據(jù)还惠,它就要關閉 TCP 連接,但是如果瀏覽器或者服務器在其頭信息加入了這行代碼:Connection:keep-alive
TCP連接在發(fā)送后將仍然保持打開狀態(tài)私杜,于是蚕键,瀏覽器可以繼續(xù)通過相同的連接發(fā)送請求。保持連接節(jié)省了為每個請求建立新連接所需的時間衰粹,還節(jié)約了網(wǎng)絡帶寬锣光。
5. 瀏覽器接受到服務器響應的數(shù)據(jù)
瀏覽器接受服務器應答回來的 html 代碼和css,和js代碼再進行頁面的渲染或者接受到應答的文件進行保存等操作
總結流程
瀏覽器發(fā)起請求-> 解析域名得到ip進行TCP連接 ->瀏覽器發(fā)送HTTP請求和頭信息發(fā)送->服務器對瀏覽器進行應答铝耻,響應頭信息和瀏覽器所需的內容-> 關閉TCP連接或保持-> 瀏覽器得到數(shù)據(jù)數(shù)據(jù)進行操作
簡單圖文展現(xiàn)
想獲取更多技術干貨誊爹,請前往叩丁狼官網(wǎng):http://www.wolfcode.cn/all_article.html