我們在瀏覽器輸入http://www.baidu.com想要進入百度首頁,但是這是個域名,沒法准確定位到服務器的位置,所以需要通過域名解析,把域名解析成對應的ip地址,然后通過ip地址查找目的主機。整個訪問過程可以概括為:
- 域名解析
- 發起TCP三次握手建立連接
- 建立連接后發起http請求
- 服務器響應請求,瀏覽器獲取html源碼
- 瀏覽器解析html代碼,並請求相關css,js和圖片資源
- 瀏覽器渲染頁面
一、域名解析過程
在瀏覽器輸入一串域名要訪問某網站的時候,瀏覽器幫我們做了如下事情(以Chrome瀏覽器和windows系統為例):
- Chrome瀏覽器首先檢查自己本地是緩存是否有對應的域名,有則直接使用。【查看Chrome瀏覽器dns緩存地址:chrome://net-internals/#dns】
- 如果瀏覽器緩存中沒有,則查詢系統DNS緩存中的域名表,有則直接使用。【windows查看域名表的命令:ipconfig /displaydns】
- 系統緩存中還是沒有,則檢查hosts文件中的映射表。【windows中hosts文件路徑:C:\Windows\System32\drivers\etc】
- 本地實在找不到,則向DNS域名服務器發起請求查詢。【DNS服務器IP是本地配置的首選服務器,一般常用的有114.114.114.114(電信運營商提供)和8.8.8.8(Google提供)】
-
-
- DNS服務器首先查找自身的緩存,有對應的域名ip則返回結果
- 如果緩存中查找不到,DNS服務器則發起迭代DNS請求,首先向根域服務器發起請求查詢,假如本次請求的是www.baidu.com,根域服務器發現這是一個com的頂級域名,就把com域的ip地址返回給DNS服務器
- DNS服務器向com域ip地址發起請求,查詢該域名的ip,此時該服務器返回了baidu.com的DNS地址。
- 最后DNS服務器又向baidu.com的DNS地址發起查詢請求,最后找到了完整的ip路徑返回給DNS服務器,DNS再把ip信息返回給windows內核,內核再返回給瀏覽器,於是瀏覽器就知道該域名對應的ip地址了,可以開始進一步請求了。
-
--------------------------------------------------------------------------------------------------------------------------
DNS請求原理:
每個域名用小數點分隔開變成多級,從右到左等級逐級遞減,所以最右邊的等級最高,每個域都有用一個域名服務器,管理則下屬域名,分布如下圖:
所以DNS發送查詢請求的時候,先從根服務器獲對應頂級域名的ip,然后再逐級從定義域名ip向下查找各個下屬域服務的,找到完整的域名ip。這是一個迭代查詢的過程。
--------------------------------------------------------------------------------------------------------------------------
總的來說:域名解析的過程就是一個由近及遠的過程,采取就近原則,再自頂向下搜索。
【如果連DNS服務器也沒解析成功,那么進行如下步驟:】
⑤ 操作系統就會查找NetBIOS name Cache(NetBIOS名稱緩存,就存在客戶端電腦中的),那這個緩存有什么東西呢?凡是最近一段時間內和我成功通訊的計算機的計算機名和Ip地址,就都會存在這個緩存里面。什么情況下該步能解析成功呢?就是該名稱正好是幾分鍾前和我成功通信過,那么這一步就可以成功解析。
⑥ 如果第⑤步也沒有成功,那會查詢WINS 服務器(是NETBIOS名稱和IP地址對應的服務器)
⑦ 如果第⑥步也沒有查詢成功,那么客戶端就要進行廣播查找
⑧ 如果第⑦步也沒有成功,那么客戶端就讀取LMHOSTS文件(和HOSTS文件同一個目錄下,寫法也一樣)
如果第八步還沒有解析成功,那么就宣告這次解析失敗,那就無法跟目標計算機進行通信。只要這八步中有一步可以解析成功,那就可以成功和目標計算機進行通信。
二、建立TCP連接
第一次握手:客戶端向服務器發送SYN報文,並發送客戶端初始序列號Seq=X;等待服務器確認,
第二次握手:服務器接收客戶端的SYN報文,然后向客戶端返回一個包SYN+ACK響應報文,並發送初始序列號Seq=Y
第三次握手:客戶端接受SYN+ACK報文,並向服務器發送一個ACK確認報文,至此連接建立
【建立連接的最重要目是讓連接的雙方交換初始序號(ISN, Initial Sequence Number),所以再響應的ACK報文中會包含序列號遞增序列】
三、http請求和瀏覽器渲染過程
請參考:http://www.cnblogs.com/caijh/p/7661402.html