浏览器上请求URL的全部过程
分為六步
1. 域名解析
??瀏覽器首先要做去獲得想訪問網頁的IP地址,瀏覽器會發送一個UDP的包給DNS域名解析服務器。DNS就會返回給我們百度的IP地址,通常來說瀏覽器會把訪問過的網站的IP保存下來,這樣下次訪問的時候就會快很多,能夠節省很多時間。
??通常來說在解析域名的時候,瀏覽器就會先看看自己本地的host文件,來看看里邊有沒有和域名對應的IP地址,如果有就直接使用,如果沒有的話瀏覽器就會發送一個請求到本地的DNS服務器,本地的DNS服務器一般來說都是由網絡接入商提供的,比如中國電信等。當本地的DNS服務器收到請求之后會,DNS也會先查詢自己的緩存,這個過程是遞歸查詢的,如果緩存中存在就會直接返回,如果這時候還是沒有找到對應的IP本地的DNS服務器就向根DNS服務器發送請求進行查詢。根DNS服務器上是沒有記錄哪個域名和IP的對應關系的,他會告訴本地的DNS服務器。你可以到域服務器上進行查詢,并且告訴他這個域服務器的地址,這個過程是迭代查詢的。這時候本地的DNS服務器會向域服務器發送請求,這里我們請求的是www.baidu.com也就是.com的域名服務器,當.com域服務器收到請求之后,并不會直接返回域名和IP的關系,而是會告訴你的域名的解析服務器的地址,最后本地的DNS服務器向域名的解析服務器發送請求,這時候就能收到一個域名和IP的對應關系,本地的DNS服務器不僅吧這個返回給用戶和電腦而且還會自己保存下來,這樣下次再訪問的時候就能直接返回
??遞歸查詢方式:當局部的DNS服務器不能回答請求的時候,他就需要向其他DNS服務器發送請求
??局部服務器DNS自己向其他服務器進行查詢,一般來說先向該域名的根域服務器進行查詢,然后再由根域名服務器向下進行查詢,最后得到結果之后返回給局部服務器,然后再由局部服務器返回給我們的客戶端。
迭代查詢的方式
??迭代查詢的方式就是,局部的DNS服務器并不會自己向其他服務器進行查詢,而是把能夠解析該域名的服務器IP地址返回給客戶端,客戶端會不斷的向這些服務器進行查詢,直到查詢到了位置,迭代的話只會幫你找到相關的服務器,然后說我現在比較忙,你自己去找吧。
??DNS還有負載均衡的作用,現在很多網站都有多個服務器,當一個網站訪問量過大的時候,如果所有請求都請求在同一個服務器上,可能服務器就會崩掉,這時候就用到了DNS負載均衡技術,當一個網站有多個服務器地址時,在應答DNS查詢的時候,DNS服務器會對每個查詢返回不同的解析結果,也就是返回不同的IP地址,從而把訪問引導到不同的服務器上去,來達到負載均衡的目的。例如可以根據每臺機器的負載量,或者該機器距離用戶的地理位置距離等等條件。
??之后就可以建立HTTP協議鏈接,但是HTTP鏈接是必須建立在TCP鏈接上邊的,建立TCP鏈接需要四個東西:本機IP,服務器IP,本機端口,服務器端口?,F在已經有本機IP和服務器IP了,本機端口會由操作系統隨機給瀏覽器分配一個,而服務器端口用的是一個眾所周知的端口,HTTP的默認端口就是80,這時候我們就具備了進行TCP鏈接的條件。
2.創建TCP鏈接
??進行三次握手創建TCP鏈接…,三次握手成功的時候TCP鏈接成功創建,這時候就可以發送HTTP請求。
3. 處理HTTP請求,當HTTP協議經過多個路由器成功到達了服務器之后,這時候服務器就要去處理瀏覽器發來的請求。
??服務器在處理請求的時候主要有三種方式:
??第一種是用一個線程來處理所有的請求,并且同時只能處理一個請求,但是這樣的話性能是非常的低的;
??第二種是每一個請求都給他分配一個線程但是當鏈接和請求比較多的時候就會導致服務器的cpu不堪重負;
??第三種就是采用復用I/O的方式來處理例如通過epoll方式監視所有鏈接,當鏈接狀態發生改變的時候才去分配空間進行處理
;
4.處理完請求之后向瀏覽器返回網頁的html
??當服務器把文件數據發送給瀏覽器之后,能夠直接關閉TCP嗎?如果你是使用的是HTTP1.1,這個版本下默認的方式是keep-alive,這時候TCP是不關閉的,如果在1.0版本下有keep-alive關鍵字也是不能進行關閉的。
5.解析HTML
??當瀏覽器收到HTML之后會對其進行解析,在這個過程中可能這個HTML頁面引用了大量的js、css、圖片等文件,這些資源可能在剛剛的服務器上也可能在其他的服務器上,這時候瀏覽器就會和上邊步驟一樣去請求這些資源,如果需要下載的資源太多,瀏覽器會同時創建多個TCP鏈接去獲取資源,但是同一時間對同一域名下請求數量也不能過多,不然服務器訪問量過大,難以承受負載,這時候瀏覽器就要對其進行控制,例如在chrome瀏覽器HTTP1.1版本下同時允許最多創建六個TCP鏈接,在服務器發送這些js、css文件的時候通常會告訴瀏覽器他什么時候會過期,瀏覽器就可以把這些文件緩存到本地,在這些文件還沒有過期之前就可以直接從緩存中進行訪問。
6.斷開TCP連接
??當我們數據傳輸結束的時候,我們就可以斷開TCP連接。四次握手
這時候我們的網頁就完整的展現在我們的瀏覽器上了。
總結
以上是生活随笔為你收集整理的浏览器上请求URL的全部过程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ocp认证考试报名_2019年OCP认证
- 下一篇: html用变量存储颜色信息,我如何使用间