大家都知道,當我們在瀏覽器地址欄中輸入baidu.com訪問后會自動跳轉到百度首頁展現頁面,那么,在整個過程中都發生了什么呢?
1、在瀏覽器輸入URL
1.1 URL是什么
URL: 統一資源定位符,用于定位互聯網上的資源
把URL可以分割成幾個部分:協議、網絡地址、資源路徑。
其中網絡地址指示該連接網絡上哪一臺計算機,可以是域名或者IP地址,可以包括端口號;協議是從該計算機獲取資源的方式,常見的是HTTP、FTP,不同協議有不同的通訊內容格式;資源路徑指示從服務器上獲取哪一項資源。
例如:https://baike.baidu.com/item/url
協議部分:http 網絡地址:baike.baidu.com資源路徑:/item/url
2. 域名解析
對于http://baidu.com的URL,瀏覽器實際上不知道 baidu.com到底是什么東西,需要查找baidu.com網站所在服務器的IP地址,才能找到目標
那么問題來了,為什么我們要使用域名而不是直接訪問IP地址呢?
答案很簡單:不好記- - 。
2.1 域名是什么
對于https://www.baidu.com/ , baidu.com就是域名
2.2 IP地址是什么
IP地址是指互聯網協議地址,每個處于互聯網中的設備都有IP 地址,形如 192.168.0.1
局域網 IP 和公網 IP 是有差別的。
公有地址(Public address)由Inter NIC(Internet Network Information Center 因特網信息中心)負責,這些IP地址分配給注冊并向Inter NIC提出申請的組織機構,通過它直接訪問因特網;私有地址(Private address)屬于非注冊地址,專門為組織機構內部使用。
127.0.0.1代表本機的 IP。
2.3 域名解析的流程
Internet上的計算機是通過IP地址來定位的,給出一個IP地址,就可以找到Internet上的某臺主機。而因為IP地址難于記憶,又發明了域名來代替IP地址。但通過域名并不能直接找到要訪問的主機,中間要加一個從域名查找IP地址的過程,這個過程就是域名解析。
域名解析的大概流程如下:
瀏覽器緩存 – 瀏覽器會緩存DNS記錄一段時間。
系統緩存 - 從 Hosts 文件查找是否有該域名和對應 IP。
路由器緩存 – 一般路由器也會緩存域名信息。
ISP DNS 緩存 – 比如到電信的 DNS 上查找緩存。
如果都沒有找到,則向根域名服務器查找域名對應 IP,根域名服務器把請求轉發到下一級,直到找到域名對應 IP地址。
3. 服務器處理
3.1 服務器是什么
服務器是一臺安裝系統的機器,常見的系統如Linux、windows server 2012
系統里安裝的處理請求的應用叫 Web server
3.2 WEB服務器
常見的 web服務器有 Apache、Nginx、IIS、Lighttpd
web服務器接收用戶的Request 交給網站代碼,或者接受請求反向代理到其他 web服務器
4. 網站處理流程
MVC 模型(model)-視圖(view)-控制器(controller)
5. 瀏覽器處理并繪制網頁
HTML字符串被瀏覽器接受后被一句句讀取解析
- 解析到link 標簽后重新發送請求獲取css
- 解析到 script標簽后發送請求獲取 js,并執行代碼
- 解析到img 標簽后發送請求獲取圖片資源
瀏覽器根據 HTML 和 CSS 計算得到渲染樹,繪制到屏幕上,js 會被執行。