輸入url到頁面返回的全過程
1. 我們輸入一個域名:www.baidu.com,然後點擊確認;
2. 瀏覽器查找域名的IP地址。查找過程如下:
首先是瀏覽器緩存,瀏覽器會緩存DNS記錄一段時間;
如果在瀏覽器緩存裏沒有找到需要的記錄,瀏覽器會做一個系統調用,獲取系統緩存中的記錄;
然後是路由器緩存,路由器一般會有自己的緩存;
如果前者都沒有找到,就需要從本地域名服務器開始進行DNS查詢了。詳細的DNS查詢過程我在DNS工作原理及過程中講到過。
3. 現在瀏覽器找到了域名的IP地址,則需要向Web服務器建立TCP連接,然後發送HTTP請求了。TCP連接過程我在TCP中講到過,具體的請求過程我在HTTP中講到過。
好吧,我們結合DNS、TCP和HTTP來詳細地說一下輸入url到頁面返回的全過程吧。
1. 我們輸入一個域名:www.baidu.com
2. 瀏覽器查找瀏覽器緩存,如果有域名的IP地址則返回,如果沒有繼續查找;
3. 系統查找系統緩存,如果有域名的IP地址則返回,如果沒有繼續查找;
4. 路由器查找路由器緩存,如果有域名的IP地址則返回,如果沒有繼續查找;
5. 本地域名服務器采用叠代查詢,它先向一個根域名服務器查詢;
6. 根域名服務器告訴本地域名服務器,下一次應查詢的頂級域名服務器dns.com的IP地址;
7. 本地域名服務器向頂級域名服務器dns.com進行查詢;
8. 頂級域名服務器dns.com告訴本地域名服務器,下一次應查詢的權限域名服務器dns.baidu.com的IP地址;
9. 本地域名服務器向權限域名服務器dns.baidu.com進行查詢;
10. 權限域名服務器dns.baidu.com告訴本地域名服務器,所查詢的主機www.baidu.com的IP地址;
11. 本地域名服務器最後把查詢結果告訴主機;
12. 主機瀏覽器獲取到Web服務器的IP地址後,與服務器建立TCP連接;
13. 瀏覽器所在的客戶機向服務器發出連接請求報文;
14. 服務器接收報文後,同意建立連接,向客戶機發出確認報文;
15. 客戶機接收到確認報文後,再次向服務器發出報文,確認已接收到確認報文;
16. 此處客戶機與服務器之間的TCP連接建立完成,開始通信;
17. 瀏覽器發出取文件命令:GET;
18. 服務器給出響應,將指定文件發送給瀏覽器;
19. 瀏覽器釋放TCP連接;
20. 瀏覽器所在主機向服務器發出連接釋放報文,然後停止發送數據;
21. 服務器接收到釋放報文後發出確認報文,然後將服務器上未傳送完的數據發送完;
22. 服務器數據傳輸完畢後,向客戶機發送連接釋放報文;
23. 客戶機接收到報文後,發出確認,然後等待一段時間後,釋放TCP連接;
24. 瀏覽器顯示頁面中所有文本。
輸入url到頁面返回的全過程