国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

從輸入URL到頁面展示這中間發(fā)生了什么

這篇具有很好參考價值的文章主要介紹了從輸入URL到頁面展示這中間發(fā)生了什么。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

從輸入URL到頁面展示這中間發(fā)生了什么

Chrome多進程瀏覽器架構

  • 瀏覽器進程主要負責用戶交互、子進程管理和文件儲存等功能。
  • 網(wǎng)絡進程是面向渲染進程和瀏覽器進程等提供網(wǎng)絡資源加載。
  • 渲染進程也稱為瀏覽器內核,JavaScript引擎V8都是運行在該進程中,默認會為每個標簽窗口頁面開辟一個獨立的進程,負責將網(wǎng)絡下載的HTML、JavaScript、CSS、圖片等資源轉化為交互的頁面。
  • GPU進程:用于3D繪制等

僅僅打開了1個頁面,為什么有4個進程?
因為打開1個頁面至少需要1個網(wǎng)絡進程、1個瀏覽器進程、1個GPU進程以及1個渲染進程,共4個

補充1:進程和線程

進程是一個程序運行的實例,操作系統(tǒng)會為進程創(chuàng)建獨立的內存,用來存放運行所需要的代碼和數(shù)據(jù)
線程是進程的組成部分,每個進程可以有多個線程其中至少一個主線程,這些線程由所屬的進程進行啟動和管理。

進程和線程之間關系的特點:

  1. 只要某個線程執(zhí)行出錯,將會導致整個進程崩潰
  2. 進程與進程之間相互隔離
  3. 線程之間可以共享所屬進程的數(shù)據(jù)
  4. 進程所占用的資源會在其關閉后由操作系統(tǒng)回收

整體的流程

1. 瀏覽器接收到輸入的URL后,先解析URL

判斷用戶輸入的是 URL 還是query

  • 如果是搜索內容,地址欄會使用瀏覽器默認的搜索引擎,來合成新的帶搜索關鍵字的URL。
  • 若符合URL規(guī)則,整合URL + 對應協(xié)議頭(http/https)形成完整的URL

URL結構:Protocol://Host:port/Path?Query#Fragment
瀏覽器接收到輸入的URL后,先對URL解析,把我們請求需要的協(xié)議、域名、端口、路徑這些信息解析提取出來并構造一個HTTP請求。

瀏覽器發(fā)送請求前,嘗試緩存命中
  1. 根據(jù)請求頭的expirescache-control:max-age 判斷資源是否命中,如果命中。直接從緩存中獲取資源,返回狀態(tài)碼為200的響應。
  2. 如果沒有命中,根據(jù)請求頭 If-modified-since: Last-Modified或者If-none-match:ETag發(fā)送一個get請求詢問服務器緩存是否修改,如果沒有修改返回304,從緩存中獲取資源。如果修改了返回狀態(tài)碼為200的請求資源結果。

這里的2已經(jīng)進入網(wǎng)絡請求的流程。協(xié)商緩存時在DNS之后發(fā)生的

2.建立URL請求

網(wǎng)絡進程會查找本地緩存是否緩存了該資源。如果有緩存資源,那么直接返回資源給瀏覽器進程;如果在緩存中沒有查找到資源,那么直接進入網(wǎng)絡請求流程。第一步是要進行DNS解析獲取IP地址。

DNS解析出IP地址

DNS(Domain Name System) 域名系統(tǒng),DNS解析的目的是將URL中的Host字段轉換成網(wǎng)絡中具體的IP地址。

DNS解析的過程:遞歸查詢+迭代查詢
從輸入URL到頁面展示這中間發(fā)生了什么
先在客戶端進行查詢有沒有解析過的記錄(DNS緩存),在這里任何一步找到就會結束查找流程。如果都沒有找到,開始迭代查詢。

1.先去DNS根域名(.)服務器查詢,屬于哪個頂級域名服務器(.com),然后返回頂級域名服務器IP
2.再根據(jù)返回的IP去頂級域名服務器查找,屬于哪個權限域名服務器(xxx.com),返回權限域名服務器IP
3.再根據(jù)返回的IP去權限域名服務器查找
4.找到了就返回目標地址的IP,沒有就報錯

優(yōu)化:DNS預解析

大型網(wǎng)站,有多個不同服務器資源的情況下,都可采取DNS預解析
rel="dns-prefetch",提前解析,減少頁面卡頓。

當網(wǎng)頁打開時,瀏覽器會在加載網(wǎng)頁時對網(wǎng)頁中的域名進行解析緩存,這樣在你單擊當前網(wǎng)頁中的連接時就無需進行DNS的解析,減少用戶等待時間,提高用戶體驗。
從輸入URL到頁面展示這中間發(fā)生了什么

使用IP地址建立TCP連接 三次握手

網(wǎng)絡進程拿到IP后,查看URL請求的端口號,如果有根據(jù)IP地址:端口號創(chuàng)建新的套接字發(fā)起TCP連接。

http 默認端口80, https 默認端口443
從輸入URL到頁面展示這中間發(fā)生了什么

第一次握手: 客戶端隨機初始化序列號,TCP報文序列號seq=x,SYN同步標志位為1,用來建立連接,然后把該報文發(fā)送給服務端,客戶端進入等待服務端確認的狀態(tài)。

第二次握手:服務器端收到客戶端發(fā)來的SYN同步標志位=1的數(shù)據(jù)包后,知道是在建立連接。服務器自己也生成初始序列號,TCP報文序列號seq=y,SYN同步標志位和ACK確認標志位置1,表示建立連接之后的響應。ack確認號=x+1,期望收到對方下一個報文段的第一個數(shù)據(jù)字節(jié)序列號位x+1,作為客戶端建立連接請求的應答。

第三次握手:客戶端收到服務端的確認應答后,檢查ack確認號是否x+1,ACK確認標志位是否=1。若正確就返回ack確認號為y+1,序列號為x+1,及ACK=1的數(shù)據(jù)包發(fā)送給服務器,確認服務器的應答。
服務器端收到應答包,檢查ack確認號是否=y+1來確認是否建立連接成功。

為什么要三次握手?

建立TCP連接會先經(jīng)歷三次握手,目的是確保數(shù)據(jù)到達目的–> 客戶端和服務端的接收和發(fā)送能力沒有問題

第二次握手 服務器端同時返回SYN建立連接+ACK確認,說明客戶端發(fā)送的建立連接請求服務器端可以接收到,說明客戶端發(fā)送能力ok。
第三次握手 客戶端向服務器發(fā)送ACK確認標志=1,表示對服務器端的應答,說明服務器發(fā)送能力ok,服務端的接收能力ok。
服務器端收到應答包,檢查成功,說明客戶端的接收能力ok,建立連接。

也可以從為什么不是兩次握手的角度回答
為何不能是兩次握手?
可能連接請求因網(wǎng)絡滯留了一段時間,以至于到達服務端已經(jīng)失效了,但是服務端會誤認為是個新的連接請求,于是向客戶端發(fā)出確認報文,同意建立連接。假設采用兩次握手,那么服務端發(fā)出確認報文,表示連接已建立,但客戶端并沒有發(fā)出確認建立的連接,也不會向服務端發(fā)送任何數(shù)據(jù),服務端因連接占用導致資源浪費。

三次握手過程中可以攜帶數(shù)據(jù)嗎? -第三次握手可以

假如第一次握手可以攜帶數(shù)據(jù)的話,如果有人要惡意攻擊服務器,那他每次都在第一次握手中的 SYN 報文中放入大量的數(shù)據(jù)。因為攻擊者根本就不理服務器的接收、發(fā)送能力是否正常,然后瘋狂著重復發(fā) SYN 報文的話,這會讓服務器花費很多時間、內存空間來接收這些報文。
也就是說,第一次握手不可以放數(shù)據(jù),其中一個簡單的原因就是會讓服務器更加容易受到攻擊了。而對于第三次的話,此時客戶端已經(jīng)處于 ESTABLISHED 狀態(tài)。對于客戶端來說,他已經(jīng)建立起連接了,并且也已經(jīng)知道服務器的接收、發(fā)送能力是正常的了,所以能攜帶數(shù)據(jù)也沒啥毛病。

syn洪泛攻擊

SYN攻擊就是Client在短時間內偽造大量不存在的IP地址,并向Server不斷地發(fā)送SYN包,Server則回復確認包,并等待Client確認,由于源地址不存在,因此Server需要不斷重發(fā)直至超時,這些偽造的SYN包將長時間占用未連接隊列,導致正常的SYN請求因為隊列滿而被丟棄,從而引起網(wǎng)絡擁塞甚至系統(tǒng)癱瘓。SYN 攻擊是一種典型的 DoS/DDoS 攻擊。

檢測 SYN 攻擊非常的方便,當你在服務器上看到大量的半連接狀態(tài)時,特別是源IP地址是隨機的,基本上可以斷定這是一次SYN攻擊。

解決辦法
1.縮短超時時間
2.過濾網(wǎng)關

HTTP請求

服務器接收到請求信息后,會根據(jù)請求信息生成響應行、響應頭和響應體等信息,并發(fā)給網(wǎng)絡進程。瀏覽器接收到響應數(shù)據(jù)之后,如果是http1.1以下則直接關閉連接,否則雙方都可以根據(jù)情況選擇關閉TCP連接或者保留重用,現(xiàn)在瀏覽器默認都會保持連接(keep-alive)。

關閉TCP連接 四次揮手

TCP連接是全雙工的,因此,每個方向都必須要單獨進行關閉
從輸入URL到頁面展示這中間發(fā)生了什么
第一次揮手:客戶端打算關閉連接,發(fā)送FIN標志位置1的報文,表示客戶端沒有發(fā)送給服務端的數(shù)據(jù)了,要關閉連接了。

第二次揮手:服務器收到客戶端的FIN報文后,發(fā)送ACK確認標志位=1,表示你的關閉請求我收到啦,你可以關閉了。

可能服務器端還有未完成的數(shù)據(jù)傳遞,所以請客戶端繼續(xù)等待。

第三次揮手:當服務器確認沒有數(shù)據(jù)發(fā)送之后,發(fā)送FIN為1、ack=u+1、seq=w的FIN報文,準備關閉連接

第四次揮手:客戶端收到FIN報文后,向服務器進行應答。服務器會等待客戶端的應答后才會真正斷開連接,如果服務器沒有收到應答報文則會重傳。客戶端等待2*報文段最大生存時間 后依然沒有收到回復,說明服務器端已正常關閉,客戶端也可以關閉連接了。

為什么要等待2個報文段最大生存時間

1.假設第四次揮手的ACK應答包丟失,服務器沒有收到應答報文則會重傳FIN報文,在2個報文段最大生存時間之內 如果客戶端再次收到FIN報文 重發(fā)ACK應答報文。保證雙方都可以正常進入關閉狀態(tài)
2.確保在創(chuàng)建新連接時,先前網(wǎng)絡中殘余的數(shù)據(jù)都丟失了

為什么連接的時候是三次握手,關閉的時候卻是四次握手?

因為當Server端收到Client端的SYN連接請求報文后,可以直接發(fā)送SYN+ACK報文。其中ACK報文是用來應答的,SYN報文是用來同步的。
但是關閉連接時,當Server端收到FIN報文時,可能服務器還有數(shù)據(jù)需要發(fā)送,所以只能先回復一個ACK報文,告訴Client端,“你發(fā)的FIN報文我收到了”。只有等到我Server端所有的報文都發(fā)送完了,我才能發(fā)送FIN報文,因此不能一起發(fā)送。故需要四步握手。

3.開啟渲染進程

筆記文章來源地址http://www.zghlxwxcb.cn/news/detail-482621.html

到了這里,關于從輸入URL到頁面展示這中間發(fā)生了什么的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 從輸入URL到展示出頁面

    從輸入URL到展示出頁面

    目錄 了解URL ?1. 輸入URL 2. 域名解析 3. 建立連接 4. 服務器處理請求: 5. 返回響應: 6. 瀏覽器解析HTML: 7. 加載資源: 8. 渲染頁面: 9. 執(zhí)行JavaScript: 10. 頁面展示: 從輸入URL到展示出頁面,涉及到多個步驟和不同的技術。本篇來解釋一下整個過程中發(fā)生的主要事件: 這里特

    2024年02月07日
    瀏覽(14)
  • 在瀏覽器輸入URL后發(fā)生了什么?

    在瀏覽器輸入URL后發(fā)生了什么?

    在瀏覽器輸入URL并獲取響應的過程,其實就是瀏覽器和該url對應的服務器的網(wǎng)絡通信過程。 從封裝的角度來講,瀏覽器和web服務器執(zhí)行以下動作:(簡單流程) 1、瀏覽器先分析超鏈接中的URL:分析域名是否規(guī)范 2、瀏覽器向DNS請求解析請求解析http://www.sxtyu.com/index.html中的ip地

    2024年02月09日
    瀏覽(25)
  • 瀏覽器輸入一個URL之后發(fā)生了什么?

    瀏覽器輸入一個URL之后發(fā)生了什么?

    URL解析 DNS解析 TCP連接 TSL連接 HTTP請求 TCP揮手 接收并解析響應 主要分為: 協(xié)議,eg http,https 域名或者ip地址,eg www.baidu.com 域名相對于ip地址來說,更方便人們記憶,但是實際的網(wǎng)絡傳輸中使用的是ip地址 端口號,不同的協(xié)議對應不同的端口號,一般可以不寫,eg http是80,h

    2024年02月11日
    瀏覽(25)
  • 瀏覽器地址欄輸入url以后發(fā)生了什么

    1.DNS對域名進行解析; 2.建立TCP連接(三次握手); 3.發(fā)送HTTP請求; 4.服務器處理請求; 5.返回響應結果; 6.關閉TCP連接(四次揮手); 7.瀏覽器解析HTML; 8.瀏覽器布局渲染; 1.瀏覽器對輸入的地址補全,然后DNS域名解析 ?如果你搜索的是baidu.com的時候,實際訪問的還是h

    2024年02月13日
    瀏覽(22)
  • 從輸入URL到網(wǎng)頁顯示,期間發(fā)生了什么(詳解)

    從輸入URL到網(wǎng)頁顯示,期間發(fā)生了什么(詳解)

    Internet上的每一個網(wǎng)頁都具有一個唯一的名稱標識,通常稱之為 URL (Uniform Resource Locator, 統(tǒng)一資源定位器)。它是www的統(tǒng)一資源定位標志,簡單地說URL 就是web地址,俗稱“網(wǎng)址”。 URL格式 首先瀏覽器的第一步是對URL進行解析 ,從而 發(fā)送給Web服務器的請求信息。 假如說 沒有

    2023年04月08日
    瀏覽(20)
  • 在瀏覽器中輸入URL后都會發(fā)生什么

    瀏覽器補全地址和DNS對域名進行解析; 1當搜索baidu.com,實際訪問的是http://www.baidu.com,瀏覽器會補全地址。 因為一個URL由協(xié)議、主機名、路徑、搜索內容、哈希組成。 2DNS解析過程:客戶機先插本地緩存,找不到再將域名發(fā)到DNS服務器,它先查它管理的區(qū)域,如果就查本地緩

    2024年02月16日
    瀏覽(30)
  • 說說地址欄輸入 URL 敲下回車后發(fā)生了什么?

    說說地址欄輸入 URL 敲下回車后發(fā)生了什么?

    簡單的分析,從輸入? URL 到回車后發(fā)生的行為如下: URL解析 DNS 查詢 TCP 連接 HTTP 請求 響應請求 頁面渲染 首先判斷你輸入的是一個合法的 URL ?還是一個待搜索的,并且根據(jù)你輸入的內容進行對應操作 URL 的解析第過程中的第一步,一個 url 的結構解析如下: 在之前文

    2024年04月08日
    瀏覽(19)
  • 從輸入URL到頁面展示過程:深入解析網(wǎng)絡請求與渲染

    在代碼中,我們使用了JavaScript的fetch API來發(fā)起網(wǎng)絡請求,并將服務器響應轉換為文本輸出到控制臺。 在發(fā)送網(wǎng)絡請求前,瀏覽器首先需要將URL中的域名解析成對應的IP地址。這個過程稱為DNS解析。下面是一個簡化版的DNS解析示例代碼: 上述代碼中,我們使用Node.js的 dns 模塊

    2024年02月09日
    瀏覽(50)
  • 網(wǎng)站是如何進行訪問的?在瀏覽器地址欄輸入網(wǎng)址并回車的一瞬間到頁面能夠展示回來,經(jīng)歷了什么?

    網(wǎng)站是如何進行訪問的?在瀏覽器地址欄輸入網(wǎng)址并回車的一瞬間到頁面能夠展示回來,經(jīng)歷了什么?

    這個問題是檢驗web和計網(wǎng)學習程度的經(jīng)典問題。 網(wǎng)站訪問流程: 1) 在輸入完一個域名之后,首先是檢查瀏覽器自身的DNS緩存是否有相應IP地址映射,如果沒有對應的解析記錄,瀏覽器會查找本機的hosts配置文件(一般是C:WindowsSystem32driversetchosts,這個文件是用于在操作系統(tǒng)

    2024年02月14日
    瀏覽(122)
  • URL地址解析至頁面展示全過程(面試詳細解答)

    URL地址解析至頁面展示全過程(面試詳細解答)

    目錄 1、解析URL 2、緩存判斷 ?3、DNS解析 ?4、獲取MAC地址 5、TCP三次握手 6、HTTP請求 7、服務器處理請求,返回HTTP響應 8、頁面渲染 9、TCP四次揮手 10、瀏覽器解析HTML 11、瀏覽器布局渲染 1、解析URL 首先會對 URL 進行解析,分析所需要使用的傳輸協(xié)議和請求的資源的路徑。如

    2024年04月25日
    瀏覽(28)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包