在瀏覽器地址欄輸入一個URL後回車,背後會進行哪些技術步驟

參考知乎的回答https://www.zhihu.com/question/34873227/answer/518086565,以及簡書https://www.jianshu.com/p/4fc2464db684和CSDN博客https://blog.csdn.net/wuhenliushui/article/details/20038819/

這是一個很經典的問題,通過查找資料進行了一點總結,大概過程如下:

  • 瀏覽器對網址進行初步格式化檢查,默認https協議,比如輸入url爲baidu.com,瀏覽器會自動補全爲https://www.baidu.com/

  • DNS對網址進行地址解析,首先查找DNS Cache(內存緩存)和host(硬盤中的)文件,如果有,解析完成返回IP;如果都沒有,需要查找DNS服務器(8.8.8.8)

    • DNS通過IP將網址發送到DNS服務器,IP先查詢了路由,找到網關的MAC地址(ARP查詢),然後再通過Internet找到DNS服務器

    • DNS服務器在接受到網址後,先查找本地緩存,如果沒有的話再查詢根域名服務器(全球一共13臺),最後可以得到網址對應的IP地址,並將IP地址返回給DNS

  • DNS得到IP地址後,將結果返回給瀏覽器,再通過TCP/IP三次握手建立連接通道。瀏覽器將http請求消息打包後發送給TCP,再通過IP送給服務器。

    • 在瀏覽器進程和操作系統提供的TCP服務程序之間,有一個很重要的東西叫做套接字(Socket),如果把一臺主機比作一座房子,把進程比作房子裏面的房間,Socket相當於房間的門。TCP套接字是由一個四元組(源IP地址、源端口號、目的IP地址和目的端口號)來標識的,套接字的作用是實現傳輸層的多路複用和多路分解

    • TCP連接創建成功的標誌是:客戶機和服務器都創建了一個由源IP地址、源端口號、目的IP地址和目的端口號標誌的Socket

  • 服務器獲取到請求,解析請求報文,然後處理並返回一個響應

    • web服務器軟件(像IIS和阿帕奇)接收到HTTP請求,然後確定執行什麼請求處理來處理它。請求處理就是一個能夠讀懂請求並且能生成HTML來進行響應的程序(像ASP.NET,PHP,RUBY…)。
    • 請求處理閱讀請求及它的參數和cookies。它會讀取也可能更新一些數據,並講數據存儲在服務器上。然後,需求處理會生成一個HTML響應。
  • 客戶端解析HTTP響應報文,瀏覽器開始顯示HTML

  • 瀏覽器發送AJAX請求,即使更新頁面

    • “AJAX”-- “異步JavaScript 和 XML”,Facebook聊天功能提供了關於AJAX一個有意思的問題案例:把數據從服務器端推送到客戶端。因爲HTTP是一個請求-響應協議,所以聊天服務器不能把新消息發給客戶。取而代之的是客戶端不得不隔幾秒就輪詢下服務器端看自己有沒有新消息。
發佈了87 篇原創文章 · 獲贊 32 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章