<noframes id="7xbfr"><pre id="7xbfr"><output id="7xbfr"></output></pre>

      <big id="7xbfr"><font id="7xbfr"><listing id="7xbfr"></listing></font></big>
        <p id="7xbfr"></p>
        <menuitem id="7xbfr"></menuitem>

          <video id="7xbfr"><mark id="7xbfr"><listing id="7xbfr"></listing></mark></video>
            <form id="7xbfr"></form>

          <delect id="7xbfr"><var id="7xbfr"></var></delect>

          輸入網址后發生了什么(常見經典面試題)

          時間:2021-09-09 09:08:56 類型:web前端
          字號:    

          一次HTTP請求過程或者輸入網址(m.yiingding.com)后發生了什么?

          前言

          一、流程概括

          二、具體流程

          1.DNS解析

          2.三次握手建立連接

          2.1為什么是三次握手,二次不行嗎?

          3.發送HTTP請求

          4.服務器解析請求,并返回數據

          5.瀏覽器解析響應,展示相應的界面

          6.斷開連接(四次揮手)

          6.1為什么是四次揮手?

          前言

          當我們在瀏覽器中輸入一個網址后,瀏覽器給我們返回一個頁面過程中,到底發生了什么?


          一、流程概括

          1.進行DNS解析,找到對應ip地址的服務器

          2.通過TCP協議建立連接(三次握手)

          3.建立連接后,瀏覽器發送HTTP請求

          4.服務器根據HTTP請求返回相應的數據

          5.瀏覽器根據協議解析數據,得到資源

          6.根據得到的資源顯示在頁面上

          7.根據Connection的Keep-Alive屬性可以選擇是否斷開TCP連接(四次揮手)


          二、具體流程

          1.DNS解析

          DNS解析過程就是尋找哪臺機器上有你所要的資源,根據URL得到相應的ip地址去尋找:

          1.先在瀏覽器本地緩存中查找是否相應的記錄,瀏覽器緩存會保存一些訪問過網址的DNS信息,

          2.如果沒有找到,就在本機操作系統緩存中查找是否有當前要訪問的DNS信息,

          3.如果還沒有找到對應的ip地址,就發送到路由器上,路由器根據自身查找當前記錄,路由器本身也會存儲一些DNS信息,

          4.如果沒有找到,這個請求就會發送到運營商上,運營商就是互聯網服務提供商,一般大部分請求的域名都能在這里找到,

          5.如果還沒有找到,就將請求發送給根域名服務器進行搜索,

          6.如果還沒找到,就說明這個域名不存在,或者說域名過期了。


          所以DNS解析過程就是

          瀏覽器->操作系統->路由器->運營商->根路由器


          2.三次握手建立連接

          找到相對應的服務器之后,瀏覽器要和服務器建立相對應的連接,通過三次握手建立連接,保證建立連接無誤。

          為什么要進行三次握手?確保接收雙方發送能力和接收能力是否正常

          三次揮手的過程:

          1.第一次握手,客戶端向服務器發送SYN報文,并指明客戶端的初始化序列號 ISN,首部的同步位SYN=1,初始序號seq=x,

          2.第二次握手,服務器接收到客戶端SYN報文,并將自己的SYN報文作為響應發送,同時把客戶端的ISN+1作為ACK的值,表明自己已經接收到客戶端的SYN

          3.第三次握手,客戶端接收到服務器SYN報文后,同樣把服務器的ISN+1作為ACK的值,表示已經接收到服務器的SYN報文,服務器收到ACK值后,此時雙方建立連接



          2.1為什么是三次握手,二次不行嗎?

          三次握手的目的就是確認客戶端和服務器兩端接收和發送能力正常,通過三次握手來保證的

          1.第一次握手,客戶端發送報文,服務器接收報文

          這樣服務器端就能得到結論:客戶端的發送能力,服務器的接收能力是正常的

          2.第二次握手 服務器發送報文, 客戶端接收報文 ,

          客戶端得到結論 客戶端接收能力,服務器發送能力是正常的,但是此時服務器并不知道,客戶端的接收能力是否正常,就需要第三次握手來確定

          3.第三次握手 客戶端發送報文,客戶端接收報文,

          服務器就得到了 客戶端接收能力正常

          這樣三次握手才能確定雙方的接收能力和發送能力是否正常


          如果是兩次握手:

          有一次連接的時候,客戶端發送的請求丟失了,客戶端等待一段時間后沒有接收到響應,就會重新發送一個請求,第二個請求成功到達后,服務返回響應建立連接,但是第一次請求可能在某些網絡結點長時間滯留了,延誤到連接釋放以后的某個時間才到達服務端,這樣服務器以為是建立了新的連接了,就發送響應,此時客戶端會忽略服務器發送的響應,也不發送數據,而服務器這邊一直等待客戶端發送的數據,造成了資源的浪費。


          3.發送HTTP請求

          通過建立的TCP連接,客戶端向服務器發送HTTP請求,

          1、HTTP請求的格式

          1.首行: 【方法】+【URL】+【版本】

          2.Header(請求報頭):請求的屬性 , 冒號分割鍵值對

          3.空行:Header結束的標志

          4.Body : 空行后面的內容都是Body


          4.服務器解析請求,并返回數據

          服務器根據HTTP協議來解析請求,得到客戶端想要的數據,并發送響應

          HTTP響應格式

          1.首行: 【版本號】+【狀態碼】+【狀態碼解釋】

          2.Header:響應的屬性 , 冒號分割鍵值對

          3.空行:Header結束的標志

          4.Body : 空行后面的內容都是Body


          5.瀏覽器解析響應,展示相應的界面

          瀏覽器通過HTTP協議來解析服務器發送的響應,將響應中的資源展現出來,比如一些HTML界面,文字,圖片信息等


          6.斷開連接(四次揮手)

          當數據完成請求到返回的過程之后,根據Connection的Keep-Alive屬性可以選擇是否斷開TCP連接

          雙方都可以主動斷開連接,斷開連接后主機中的「資源」將被釋放。

          1.客戶端想斷開連接,就會發送一個TCP首部FIN標志為1的報文,也就是FIN報文,之后客戶端進入FIN_wait_1狀態

          2.服務器接收到客戶端發送的報文,就會回復一個ACK應答報文,服務器進入CLOSED_WAIT狀態

          3.客戶端接收到服務器的應答報文,就進去FIN_wait_2狀態

          4.等待服務器端處理完數據后,向客戶端發送一個FIN報文,服務器進如LAST_ACK狀態

          5.客戶端接收到FIN報文后,回復一個ACK報文,客戶端進入TIME_WAIT 狀態

          6.服務器接收到ACK報文后,就進入了CLOSED狀態,自此服務器端已經完成連接的關閉

          7.客戶端等待2個時間段后,自動進入CLOSED狀態,自此客戶端已經完成連接的關閉



          首先客戶端發送FIN報文,就是說明客戶端不再發送數據,但是還會接收數據,服務器接收到FIN時,先發送響應ACK,但是服務器這邊還有未處理完的數據,還要發送數據,當服務器不再發送數據時,才會發送FIN給客戶端,通過現在關閉連接。


          6.1為什么是四次揮手?

          TCP連接時不允許半打開狀態,就單向傳輸數據,所以在三次握手時,服務器就會把SYN和ACK同時發送給客戶端,其中,ACK 用來打開客戶端的發送通道,SYN 用來打開服務器的發送通道。這樣,原本的四次握手就降為三次握手了。

          而當連接處于半關閉狀態時,TCP是允許單向傳輸數據的,當客戶端要關閉連接時,發送FIN但是服務器可能還沒有處理完數據,等服務器處理完數據后才會發送FIN確認關閉數據,即每一方都要接收和發送FIN和ACK報文,所以就是四次揮手了

          黄网站免费 <