在浏览器中输入网址后的流程
? ? ? ?在廣域網中是基于IP地址進行通信的。但通??蛻粼L問的是一個網址,為此需要先得到網址對應的IP地址,這就需要域名服務系統將域名轉換成IP地址。在客戶端瀏覽器中輸入網址時,瀏覽器會根據本地客戶端DNS服務器配置,向DNS服務器獲取域名對應的IP地址。
? ? ? ?域名解析服務器是基于UDP協議實現的一個應用程序,通常通過監聽53端口來獲取客戶端的域名解析請求。
? ? ? ?DNS查找過程為:
? ? ? ?瀏覽器緩存->系統緩存->路由器緩存->ISP DNS緩存->遞歸搜索
? ? ? ?遞歸搜索過程為:從根域名服務器到頂級域名服務器到所查詢的域名服務器。
2、域名服務器向客戶端返回查詢結果域名,從而完成域名到IP地址的轉換。
3、客戶端向web服務器發送HTTP請求
? ? ? ?得到了域名對應的IP地址后客戶端便可向真正的web服務器發生HTTP請求。通常一個HTTP請求格式如下:
? ? ? ?如果瀏覽器存儲了該域名下的cookie,那么cookie也會放入http請求中 ? ? ? ??
? ? ? ?HTTP請求是一個基于TCP協議之上的應用層協議——超文本傳輸協議。瀏覽器通過DNS獲取到web服務器真的IP地址后,便向Web服務器發起TCP連接請求,通過TCP三次握手建立好連接后,瀏覽器便可以將HTTP請求數據通過發送給服務器了。
? ? ? TCP三次握手連接:
? ? ? 第一次握手:客戶端發送syn包(syn=j)到服務器,并進入SYN_SEND狀態,等待服務器確認;
? ? ? 第二次握手:服務器收到syn包,必須確認客戶的SYN(ack=j+1),同時自己也發送一個SYN包(syn=k),即SYN+ACK包,此時服務器進入SYN_RECV狀態;
? ? ? 第三次握手:客戶端收到服務器的SYN+ACK包,向服務器發送確認包ACK(ack=k+1),此包發送完畢,客戶端和服務器進入ESTABLISHED狀態,完成三次握手。
? ? ?握手過程中傳送的包里不包含數據,三次握手完畢后,客戶端與服務器才正式開始傳送數據。理想狀態下,TCP連接一旦建立,在通信雙方中的任何一方主動關閉連接之前,TCP 連接都將被一直保持下去。
?
4、服務器給瀏覽器進行一個301永久重定向響應。
? ? ? ?IP對應的服務器很可能是代理服務器,比如輸入“http://baidu.com”,而不是“http://www.baidu.com”,這兩個網址對應的是同一個網頁,因此通過代理服務器的方式進行重定向響應,讓這兩個網址訪問的同一個網頁。 瀏覽器根據重定向地址再次進行HTTP請求。
5、發送響應數據給客戶端
? ? ? Web服務器通常通過監聽80端口來獲取客戶端的HTTP請求。與客戶端建立好TCP連接后,Web服務器開始接受客戶端發來的數據,并通過HTTP解碼,從接受到的網絡數據中解析出請求的url信息以前其他諸如Accept-Encoding、Accept-Language等信息。
? ? ?Web服務器根據HTTP請求頭的信息,得到響應數據返回給客戶端。一個典型的HTTP響應頭數據報如下:
?
? ? ? ?至此,一個HTTP通信過程完成。web服務器會根據HTTP請求頭中的Connection字段值決定是否關閉TCP鏈接通道,當Connection字段值為keep-alive時,web服務器不會立即關閉此連接。
?
6、瀏覽器響應過程
? ? ? 瀏覽器收到響應內容之后,生成主頁框架,同時向服務端繼續發送請求,請求的內容是主頁里的一些資源,比如說圖片、視頻等。 對于靜態的頁面內容,瀏覽器通常進行緩存,對于動態的內容通常不緩存,緩存的時間也是有期限的。
? ? ?瀏覽器向服務器發送異步請求,因為有些頁面顯示完成之后客戶端仍需要與服務端保持聯系。
? ? ?整個過程結束之后,瀏覽器關閉TCP連接。
TCP四次揮手斷開連接
? ? ?假設Client端發起中斷連接請求,即發送FIN報文。Server端接到FIN報文后,意思是說"Client端沒有數據要發送了",但是如果Server端還有數據沒有發送完成,則不必急著關閉Socket,可以繼續發送數據。所以Server端先發送ACK,告訴Client端"請求已經收到,但是Server端還沒準備好,請繼續等待消息"。這個時候Client端進入FIN_WAIT狀態,繼續等待Server端的FIN報文。當Server端確定數據已發送完成,則向Client端發送FIN報文,告訴Client端"數據發送完成,準備好關閉連接"。Client端收到FIN報文后知道可以斷開連接,但是怕Server端不知道要關閉,所以發送ACK后進入TIME_WAIT狀態,如果Server端沒有收到ACK則可以重傳。Server端收到ACK后斷開連接。Client端等待了2MSL后依然沒有收到回復,則證明Server端已正常關閉,則自身關閉連接。
轉載于:https://www.cnblogs.com/csong7876/p/9084744.html
總結
以上是生活随笔為你收集整理的在浏览器中输入网址后的流程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【AR】Vuforia之unity3d
- 下一篇: 前端开发实习生的第一天