一、前言
對于打開一個網址,瀏覽器輸出內容這個過程發生了什么早就很好奇,今天聽了若愚老師的講解加上自己查閱資料,下面就簡單描述一下這個過程。
二、基本原理
1、URL的輸入
首先我們要在瀏覽器上輸入一個URL,URL是統一資源定位符(Uniform Resource Locator)的意思,其功能是用來定位互聯網的資源。
把URL分割成幾個部分:協議、網絡地址、資源路徑。其中網絡地址指示該連接網絡上哪一臺計算機,可以是域名或者IP地址,可以包括端口號;協議是從該計算機獲取資源的方式,常見的是http、http、sftp、file,不同協議有不同的通訊內容格式;資源路徑指示從服務器上獲取哪一項資源。
2、域名解析
對于http://jirengu.com的URL,瀏覽器實際上不知道jirengu.com到底是什么東西,需要查找jirengu.com網站所在服務器的IP地址,才能找到目標。其實jirengu.com就被稱作域名,通過域名查找IP,而不是直接在網頁上輸入IP查找,是因為域名方便人記憶,IP都是一長串數字,很難記住是哪一個網站的。
如果地址不是一個IP地址,通過DNS(域名系統)將該地址解析成IP地址。這個過程里,你的電腦直接詢問的DNS服務器可能沒有對應的IP,就會向它的上級服務器詢問,上級服務器同樣可能沒有,就依此一層層向上找,最高可達根節點,找到或者全部找不到為止。IP地址對應著網絡上一臺計算機,DNS服務器本身也有IP,你的網絡設置包含DNS服務器的IP。
另外,如果URL地址不包含端口號,根據協議的默認端口號確定一個。
3、服務器處理
服務器是一臺安裝系統的機器,常見的系統如Linux、windows server 2012。常見的 web服務器有 Apache、Nginx、IIS、Lighttpd
根據某個協議要求,組織一個請求的數據包,里面包含大量請求信息,包括請求的資源路徑、你的IP地址等,系統里安裝的處理請求的應用叫 Web server。web服務器接收用戶的Request 交給網站代碼,或者接受請求反向代理到其他 web服務器。然后服務器響應請求,將數據返回給瀏覽器。數據可能是根據HTML協議組織的網頁,里面包含頁面的布局、文字。數據也可能是圖片、腳本程序等。現在你可以用瀏覽器的“查看源代碼”功能,感受一下服務器返回的是什么東東。如果資源路徑指示的資源不存在,服務器就會返回著名的404錯誤。例如URL
4、渲染
開始根據資源的類型,將資源組織成屏幕上顯示的圖像,這個過程叫渲染,網頁渲染是瀏覽器最復雜、最核心的功能。HTML字符串被瀏覽器接受后被一句句讀取解析,解析到link 標簽后重新發送請求獲取css,解析到 script標簽后發送請求獲取 js,并執行代碼,解析到img 標簽后發送請求獲取圖片資源。將渲染好的頁面圖像顯示出來,并開始響應用戶的操作。
到此,從網址的輸入,到瀏覽器上內容的輸出這個過程算是完成了。
下圖是一個簡單/users打開過程
二、結語
以上只是最基本的步驟,實際不可能就這么簡單,即使基本步驟本身也有很復雜的子步驟。對于基本原理的理解就到這,想更加深入的了解,還需自己多查閱相關資料。