在瀏覽器輸入URL到頁面展示發生了什么?

輸入URL后

  • 查詢緩存
  • DNS服務器
  • TCP三次握手
  • HTTP協議包
  • 瀏覽器處理HTML文檔
  • TCP 和 UDP 的區別
  • 寫在最后

很多前端伙伴問題有沒有體系的面試題?
今天為大家推薦一款刷題神奇哦 點擊鏈接訪問牛客網
各大互聯網大廠面試真題。從基礎到入階乃至原理刨析類面試題 應有盡有,趕快來裝備自己吧!助你面試穩操勝券,solo全場面試官

查詢緩存

其實從填寫上url按下回車后,我們就進入了第一步就是 DNS 解析過程,首先需要找到這個 url 域名的服務器 ip,為了尋找這個 ip,瀏覽器首先會尋找緩存,查看緩存中是否有記錄緩存的查找記錄為:瀏覽器緩存=》系統緩存=》路由 器緩存緩存中沒有則查找系統的 hosts 文件中是否有記錄,

DNS服務器

如果沒有緩存則查詢 DNS 服務器,得到服務器的 ip 地址后,瀏覽器根據這個 ip 以及相應的端口號發送連接請求;當然如果DNS服務器中沒有解析成功,他會向上一步獲得的頂級DNS服務器發送解析請求。

在這里插入圖片描述

TCP三次握手

客戶端和服務端都需要直到各自可收發,因此需要三次握手。

在這里插入圖片描述

從圖片可以得到三次握手可以簡化為:

1、瀏覽器發送連接請求;
2、服務器允許連接后并發送ACK報文給瀏覽器;
2、瀏覽器接受ACK后并向后端發送一個ACK,TCP連接建立成功

HTTP協議包

構造一個 http 請求,這個請求報文會包括這次請求的信息,主要是請求方法,請求說明和請求附帶的數據,并將這個 http 請求封裝在一個 tcp 包中;這個 tcp 包也就是會依次經過傳輸層,網絡層, 數據鏈路層,物理層到達服務器,服務器解析這個請求來作出響應;返回相應的 html 給瀏覽器;

瀏覽器處理HTML文檔

因為 html 是一個樹形結構,瀏覽器根據這個 html 來構建 DOM 樹,在 dom 樹的構建過程中如果遇到 JS 腳本和外部 JS 連接,則會停止構建 DOM 樹來執行和下載相應的代碼,這會造成阻塞,這就是為什么推薦 JS 代碼應該放在 html 代碼的后面

在這里插入圖片描述

渲染樹
之后根據外部樣式,內部樣式,內聯樣式構建一個 CSS 對象模型樹 CSSOM 樹,構建完成后和 DOM 樹合并為渲染樹,在排除非視覺節點,比如 script,meta 標簽和排除 display 為 none 的節點,之后進行布局,布局主要是確定各個元素的位置和尺寸,之后是渲染頁面,因為 html 文件中會含有圖片,視頻,音頻等資源,在解析 DOM 的過 程中,遇到這些都會進行并行下載,瀏覽器對每個域的并行下載數量有一定的限制,一 般是 4-6 個,當然在這些所有的請求中我們還需要關注的就是緩存,緩存一般通過 Cache-Control、Last-Modify、Expires 等首部字段控制。

Cache-Control 和 Expires 的區別
在于 Cache-Control 使用相對時間,Expires 使用的是基于服務器 端的絕對時間,因為存 在時差問題,一般采用 Cache-Control,在請求這些有設置了緩存的數據時,會先 查看 是否過期,如果沒有過期則直接使用本地緩存,過期則請求并在服務器校驗文件是否修 改,如果上一次 響應設置了 ETag 值會在這次請求的時候作為 If-None-Match 的值交給 服務器校驗,如果一致,繼續校驗 Last-Modified,沒有設置 ETag 則直接驗證 Last-Modified,再決定是否返回 304

到這里就結束了么?其實按照標題所說的到渲染頁面我們確實到此就說明完了,但是嚴格意義上其實我們后面還會有TCP的四次揮手斷開連接,這個我們就放到后面單獨出一篇為大家介紹吧!

TCP 和 UDP 的區別

1、TCP 是面向連接的,udp 是無連接的即發送數據前不需要先建立鏈接。
2、TCP 提供可靠的服務。也就是說,通過 TCP 連接傳送的數據,無差錯,不丟失, 不重復,且按序到達;UDP 盡最大努力交付,即不保證可靠交付。 并且因為 tcp 可靠, 面向連接,不會丟失數據因此適合大數據量的交換。
3、TCP 是面向字節流,UDP 面向報文,并且網絡出現擁塞不會使得發送速率降低(因 此會出現丟包,對實時的應用比如 IP 電話和視頻會議等)。
4、TCP 只能是 1 對 1 的,UDP 支持 1 對 1,1 對多。
5、TCP 的首部較大為 20 字節,而 UDP 只有 8 字節。
6、TCP 是面向連接的可靠性傳輸,而 UDP 是不可靠的。

很多前端伙伴問題有沒有體系的面試題?
今天為大家推薦一款刷題神奇哦 點擊鏈接訪問牛客網
各大互聯網大廠面試真題。從基礎到入階乃至原理刨析類面試題 應有盡有,趕快來裝備自己吧!助你面試穩操勝券,solo全場面試官

寫在最后

? 改變能改變的,接受不能改變的!\textcolor{pink}{ 改變能改變的,接受不能改變的!}

👍 點贊,你的認可是我創作的動力!\textcolor{green}{點贊,你的認可是我創作的動力!}

?? 收藏,你的青睞是我努力的方向!\textcolor{green}{收藏,你的青睞是我努力的方向!}

?? 評論,你的意見是我進步的財富!\textcolor{green}{評論,你的意見是我進步的財富!}

本期圖書推薦
數學知識點經過系統梳理,能讓讀者快速入門并掌握實際應用。全書分為兩部分,第一部分從機器學習數學基礎的幾大體系入手,系統講解機器學習的相關數學知識,同時穿插了19個基于Python編程的“小試牛刀”實例,以及20個“專家點撥”的知識;第二部分安排了8個大型的基于Python編程的機器學習應用案例,包括數學建模和工業應用方面的典型案例。
在這里插入圖片描述
本書是一本系統介紹機器學習所涉及的數學知識和相關Python編程的實例工具書,同時還介紹了非常經典的綜合案例,除了編寫機器學習的代碼,還編寫了深度學習的代碼。本書一共分為兩部分。
第一部分為數學基礎知識部分,包含 8個章節,介紹了微積分、線性代數、概率統計、信息論、模糊數學、隨機過程、凸優化和圖論的系統知識體系及幾個數學知識點對應的Python編程實例。通過這些實例,讀者能夠了解Scikit-learn、Scikit-fuzzy、Theano、SymPy、NetworkX和CVXPY中相應的庫函數的應用。
第二部分為案例部分,包含4個章節,介紹了微積分、線性代數和概率統計問題的建模方法、求解流程和編程實現,以及工業生產領域的Python實戰,包含了機器學習算法和深度學習PyTorch框架的應用。
在學習本書內容前,建議讀者先掌握基本的Python編程知識和數學基礎,然后將本書通讀一遍,了解本書的大概內容,最后再跟著實例進行操作。
本書既注重數學理論,又偏重編程實踐,實用性強,適用于對編程有一定基礎,對系統的數學知識非常渴望,想從事人工智能、大數據等方向研究的讀者。同時也適合作為廣大職業院校相關專業的教材或參考用書。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/248460.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/248460.shtml
英文地址,請注明出處:http://en.pswp.cn/news/248460.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

iOS 高級去水印,涂鴉去水印

目前在研究一下圖像的處理,看了一下相關的軟件,比如:《去水印大師》,究竟去水印是怎么處理的呢?看圖分析。 一共是三個功能:快速去水印、高級去水印、涂鴉去水印 快速去水印:暫時沒找到好的處理…

Failed to execute goal maven-gpg-plugin 1.5 Sign

問題描述&#xff1a; 解決辦法&#xff1a;跳過maven-gpg-plugin <build> <pluginManagement><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-gpg-plugin</artifactId><configuration&g…

打造硬核敲門磚——簡歷

文章目錄 前言打造簡歷篇幅模板個人信息專業技能工作經歷項目經歷教育經歷個人總結簡歷格式寫在最后前言 作為高校的學生,你是否已經開始設想你以后的工作?作為職場的員工,你是否已經準備更換下一份工作了?不論你現在是什么身份、處于什么階段,這篇文章都能夠幫到你,只要…

Robot Framework 內置變量

Robot Framework 內置變量 轉自&#xff1a;https://blog.csdn.net/qq_26886929/article/details/53907755 Robot Framework 內部提供了一下直接可用的內置變量 1. 操作系統相關變量 內置的操作系統相關的變量&#xff0c;減少了測試數據對操作系統之間的差異性的關注 RF 中可用…

一文搞懂this指向

前言 那你說一下 js 中的 this 指向吧&#xff01;這句話已經成為面試官口中的高頻面試題&#xff0c;作為前端開發的我們&#xff0c;你真的搞懂了 this 指向了嗎&#xff1f;快來跟我一起來查漏補缺吧&#xff01;通過幾個小案例讓大家更能直白的理解 this 指向。 很多前端伙…

難怪大家丟掉了postman而選擇 Apifox

前言 當下采用前后端分離模式開發Web應用已經成為氣候&#xff0c;在開發階段有一個不成文的規定則是 項目開發后端先行 但是作為前端開發工程師的我們&#xff0c;難道在搭建完頁面后只能等待后端的接口么&#xff1f;這樣的話我們則完全被后端開發限制住了。在前面跟大家介紹…

mvc 模式和mtc 模式的區別

首先說說Web服務器開發領域里著名的MVC模式&#xff0c;所謂MVC就是把Web應用分為模型(M)&#xff0c;控制器(C)和視圖(V)三層&#xff0c;他們之間以一種插件式的、松耦合的方式連接在一起&#xff0c;模型負責業務對象與數據庫的映射(ORM)&#xff0c;視圖負責與用戶的交互(頁…

HP LaserJet MFP M227_M231雙面打印

雙面打印設置 轉載于:https://www.cnblogs.com/xiexiaokui/p/9261577.html

萬木成林,我種了“Vue技能樹”

初衷 作為Vue技能樹的構建者&#xff0c;一直拖延到現在才來寫這篇文章&#xff0c;主要還是心里沒有底&#xff0c;前面殊不知這顆“樹”是否促進了大家學習的熱情&#xff0c;也不知它給大家帶來了多少收獲。說到我們的Vue技能樹&#xff0c;我作為尤大大的忠實粉絲自就業后…

我看面向對象

已經面向對象編程多年了&#xff0c;漸漸地對面向對象有了越來越深的體會&#xff0c;下面談談我對面向對象的拙見&#xff1a;&#xff09; 面向對象三大特性&#xff1a;封裝、繼承、多態。 首先是封裝&#xff0c;我覺得封裝是面向對象的基礎&#xff0c;封裝讓各種相關的數…

poj 3525

多邊形內最大半徑圓。 哇沒有枉費了我自閉了這么些天&#xff0c;大概五天前我看到這種題可能毫無思路抓耳撓腮舉手投降什么的&#xff0c;現在已經能1A了哇。 還是先玩一會計算幾何&#xff0c;刷個幾百道 嗯這個半平面交二分就闊以解決。雖然隊友說他施展三分套三分***** 想象…

尤雨溪對 2022 Web前端生態趨勢是這樣看的

文章目錄前言開發范式&底層框架方面趨勢基于依賴追蹤范式基于依賴追蹤范式—共同點基于編譯的響應式系統統一模型的優勢和代價基于編譯的運行是優化Vue Vapor Mode&#xff08;input&#xff09;工具鏈原生語言在前端工具鏈中的使用工具鏈的抽象層次基于 Vite 的上層框架上…

bzoj4919 [Lydsy1706月賽]大根堆

Description 給定一棵n個節點的有根樹&#xff0c;編號依次為1到n&#xff0c;其中1號點為根節點。每個點有一個權值v_i。你需要將這棵樹轉化成一個大根堆。確切地說&#xff0c;你需要選擇盡可能多的節點&#xff0c;滿足大根堆的性質&#xff1a;對于任意兩個點i,j&#xff0…

眾多mock工具,這一次我選對了

文章目錄寫在前面Mock介紹Mock能解決什么問題?傳統Mock解決方案Postman接口測試工具Mock js第三方庫Eolink解決方案全局Mock高級Mock返回結果Mock智能內置Mock智能自定義Mock約束條件MockEolink的Mock解決方案的優勢:寫在最后寫在前面 交戰之前&#xff0c;戰士必先利其兵器&…

高并發的理解和使用場景-----特意區別和多線程的關系

一&#xff0c;高并發的理解 1.概念&#xff1a;就是短時間內遇到大量操作請求&#xff0c;導致站點服務器/db服務器資源被占滿甚至嚴重時直接導致宕 2.影響&#xff1a;沒有做高并發預處理的系統會給用戶很差的體驗感&#xff1b; 3.系統好壞的衡量&#xff1a;衡量一個系統的…

async 和 await 原來這么簡單

前言 前端同學們可能都知道 async 和 await 的使用&#xff0c;當被面試官問到 async 和 await 的是什么&#xff1f;或者說一說你對 async、await 的理解&#xff1f;如果我們還是僅僅去闡述我是如何使用的就顯得格外的蒼白無力。今天博主就來帶大家進一步認識我們的 async 和…

研一寒假02-指針_new分配內存_使用new來創建動態數組_使用動態數組_使用delete來釋放new分配的內存...

#---------------------------------指針-----------------------------------# #include <iostream> int main(){ using namespace std; /* 指針引入 */ int updates 6; //聲明一個變量 int* p_updates; //聲明一個指針p_updates,該指針指向一個地址 p_updates&upd…

利用Windows內置工具winsat測試硬盤速度(SSD機械盤對比)

利用Windows內置工具winsat測試硬盤速度&#xff08;SSD&機械盤對比&#xff09; 以下是紅色內容是在命令行運行&#xff1a; C:\Users\Administrator>winsat diskWindows 系統評估工具> 正在運行: 功能枚舉 > 運行時間 00:00:00.00> 正在運行: 存儲評估 -seq …

我為何在 CSDN 樂在其中

文章目錄寫在前面成為博主究竟能得到什么&#xff1f;內在提升耀眼名片豐富眼界提升知名度博客》變現寫在最后寫在前面 各位伙伴大家好&#xff0c;我是幾何心涼&#xff0c;一位不是很大的也不是很小的博主&#xff0c;今天想要跟大家去聊一些比較實在的內容&#xff1b;大家能…

EFLinq查詢

1、無參數查詢var model db.Database.SqlQuery<UserInfo>("select* from UserInfoes ").ToList(); 2、有參查詢var model db.Database.SqlQuery<UserInfo>("select* from UserInfoes where idID ",new SqlParameter("ID",id)).ToL…