大家都知道,當(dāng)我們在瀏覽器地址欄中輸入baidu.com訪問后會自動跳轉(zhuǎn)到百度首頁展現(xiàn)頁面始绍,那么瞳购,在整個過程中都發(fā)生了什么呢?
1疆虚、在瀏覽器輸入URL
1.1 URL是什么
URL: 統(tǒng)一資源定位符苛败,用于定位互聯(lián)網(wǎng)上的資源
把URL可以分割成幾個部分:協(xié)議满葛、網(wǎng)絡(luò)地址、資源路徑罢屈。
其中網(wǎng)絡(luò)地址指示該連接網(wǎng)絡(luò)上哪一臺計算機嘀韧,可以是域名或者IP地址,可以包括端口號缠捌;協(xié)議是從該計算機獲取資源的方式锄贷,常見的是HTTP、FTP曼月,不同協(xié)議有不同的通訊內(nèi)容格式谊却;資源路徑指示從服務(wù)器上獲取哪一項資源。
例如:https://baike.baidu.com/item/url
協(xié)議部分:http 網(wǎng)絡(luò)地址:baike.baidu.com資源路徑:/item/url
2. 域名解析
對于http://baidu.com的URL哑芹,瀏覽器實際上不知道 baidu.com到底是什么東西炎辨,需要查找baidu.com網(wǎng)站所在服務(wù)器的IP地址,才能找到目標(biāo)
那么問題來了聪姿,為什么我們要使用域名而不是直接訪問IP地址呢碴萧?
答案很簡單:不好記- - 。
2.1 域名是什么
對于https://www.baidu.com/ , baidu.com就是域名
2.2 IP地址是什么
IP地址是指互聯(lián)網(wǎng)協(xié)議地址末购,每個處于互聯(lián)網(wǎng)中的設(shè)備都有IP 地址破喻,形如 192.168.0.1
局域網(wǎng) IP 和公網(wǎng) IP 是有差別的。
公有地址(Public address)由Inter NIC(Internet Network Information Center 因特網(wǎng)信息中心)負(fù)責(zé)盟榴,這些IP地址分配給注冊并向Inter NIC提出申請的組織機構(gòu)曹质,通過它直接訪問因特網(wǎng);私有地址(Private address)屬于非注冊地址擎场,專門為組織機構(gòu)內(nèi)部使用羽德。
127.0.0.1代表本機的 IP。
2.3 域名解析的流程
Internet上的計算機是通過IP地址來定位的顶籽,給出一個IP地址玩般,就可以找到Internet上的某臺主機。而因為IP地址難于記憶礼饱,又發(fā)明了域名來代替IP地址坏为。但通過域名并不能直接找到要訪問的主機,中間要加一個從域名查找IP地址的過程镊绪,這個過程就是域名解析匀伏。
域名解析的大概流程如下:
瀏覽器緩存 – 瀏覽器會緩存DNS記錄一段時間。
系統(tǒng)緩存 - 從 Hosts 文件查找是否有該域名和對應(yīng) IP蝴韭。
路由器緩存 – 一般路由器也會緩存域名信息够颠。
ISP DNS 緩存 – 比如到電信的 DNS 上查找緩存。
如果都沒有找到榄鉴,則向根域名服務(wù)器查找域名對應(yīng) IP履磨,根域名服務(wù)器把請求轉(zhuǎn)發(fā)到下一級蛉抓,直到找到域名對應(yīng) IP地址。
3. 服務(wù)器處理
3.1 服務(wù)器是什么
服務(wù)器是一臺安裝系統(tǒng)的機器剃诅,常見的系統(tǒng)如Linux巷送、windows server 2012
系統(tǒng)里安裝的處理請求的應(yīng)用叫 Web server
3.2 WEB服務(wù)器
常見的 web服務(wù)器有 Apache、Nginx矛辕、IIS笑跛、Lighttpd
web服務(wù)器接收用戶的Request 交給網(wǎng)站代碼,或者接受請求反向代理到其他 web服務(wù)器
4. 網(wǎng)站處理流程
MVC 模型(model)-視圖(view)-控制器(controller)
5. 瀏覽器處理并繪制網(wǎng)頁
HTML字符串被瀏覽器接受后被一句句讀取解析
- 解析到link 標(biāo)簽后重新發(fā)送請求獲取css
- 解析到 script標(biāo)簽后發(fā)送請求獲取 js聊品,并執(zhí)行代碼
- 解析到img 標(biāo)簽后發(fā)送請求獲取圖片資源
瀏覽器根據(jù) HTML 和 CSS 計算得到渲染樹飞蹂,繪制到屏幕上,js 會被執(zhí)行翻屈。