我們想要進入乙個指定的**,通常需要輸入**,一般來講我們所說的**指的就是url——統一資源定位符。乙個完整的url包括有協議、網域名稱、埠號、路徑和檔名,有時候會包括有引數。
常用的協議有http、https、file、ftp等。其中file協議用於定位本地資源,比如file:///f:/study/index.html定位的就是本機f盤study資料夾下的index.html檔案。http和https協議都是用來定位網路資源的,不同的是http中資料是明文傳輸而https加密了,換言之,https協議下我們的資料傳輸是安全的。ftp協議用於internet控制檔案的雙向傳輸。
網域名稱是乙個**的標識,我們輸入url之後瀏覽器通過對網域名稱的解析得到你要訪問的主機ip位址從而進行定位。網域名稱解析按照以下順序進行:
瀏覽器快取 - 一段時間內訪問過該**的話瀏覽器上會儲存dns(domain name system,網域名稱系統)快取;
系統快取 - hosts檔案中同樣存了網域名稱與ip位址的對應,因此會在hosts檔案中進行查詢;
路由器快取 - 一般路由器也會快取網域名稱資訊;
isp dns快取 - 在網際網路服務提供商處查詢快取,比如到電信的dns上查詢快取;
如果上述方法都沒有找到,則向根網域名稱伺服器查詢網域名稱對應ip,根網域名稱伺服器會將請求**到下一級直到找到ip。
乙個**打不開的話是因為上邊的環節出錯導致瀏覽器沒能找到對應的ip位址,由此如果說電腦連上了無線但還是上不了網可以直接修改dns為8.8.8.8(google伺服器預設ip)或者是114.114.114.114(國內的乙個dns提供商),這樣省去了查詢環節直接進入**。
網域名稱解析為ip之後提交給伺服器處理。伺服器是一台安裝了系統的機器,同樣也是一台電腦,常見的系統如linux、windows server 2012等,系統中會安裝處理請求的應用如web server 來接收並響應請求。常見的web伺服器有apache、nginx、iis、lighttpd等。
web伺服器接收使用者的請求之後將其提交給****,或者反向**到其它伺服器。****對使用者請求進行處理。
使用者請求傳送到****之後,對於常見的mvc框架,通常是後台語言如python之類的進行路由匹配,然後將使用者請求提交到控制器(controller),controller控制model,model在database中取出資料,然後再傳給controller,controller通過view將其展現給使用者。
model是對資料庫操作的抽象,通過model對資料庫進行操作。view是html模板,使用者請求結果的最終展示。
html字串被瀏覽器解析之後會被一句句讀取解析,然後有需要請求資源src的時候會繼續向伺服器傳送請求。比如img標籤會傳送請求獲取資源,script標籤會傳送請求獲取js並執行**…所以js檔案引用最好是放在body標籤的後邊,css在head標籤裡邊引用。先把樣式新增進去讓瀏覽器完成渲染,在頁面載入完成後再新增互動效果。
從url輸入到頁面展現到底發生了什麼
開啟瀏覽器從輸入 到網頁呈現在大家面前,背後到底發生了什麼?經歷怎麼樣的乙個過程?先給大家來張總體流程圖,具體步驟請看下文分解!本文首發位址為github部落格 總體來說分為以下幾個過程 url uniform resource locator 統一資源定位符,用於定位網際網路上資源,俗稱 比如 遵...
從輸入url到頁面顯示內容的過程發生了什麼
瀏覽器通過輸入的url來解析要請求的是什麼協議,構建請求報文,這裡要構建的就是http請求報文。http請求報文包括報文首部和報文主體,對請求報文來說,報文首部包括請求行和各種首部字段 而對響應報文來說,報文首部包括狀態行和各種首部字段。請求行 get http 1.1 請求方法和相應的協議 狀態行...
從使用者輸入url到頁面最後呈現 發生了些什麼?
一 瀏覽器獲取資源的過程 1 輸入url 2 瀏覽器解析url,獲得主機名 3 將主機名轉換成伺服器ip位址 查詢本地dns快取列表,如果沒有則向預設的dns伺服器傳送查詢請求 4 瀏覽器建立一條與伺服器的tcp連線 三次握手 5 瀏覽器向伺服器傳送http請求 6 伺服器向瀏覽器返回請求響應 7 ...