“约见”面试官系列之常见面试题第四十三篇之页面输入url之后发生了什么?(建议收藏)
本文主旨:幫助自己理清頁面輸入url地址之后的一個整體流程
?
首先,用戶第一次向服務器發送對應url地址請求,此時,客戶端沒有緩存
1.用戶輸入url通過DNS解析為對應的IP地址。
2.應用層:HTTP協議生成針對目標Web服務器的HTTP請求報文。
3.傳輸層:TCP協議為了傳輸方便,將HTTP請求報文進行分割,并在各個報文上打上標記序號及端口號后轉發給網絡層。
4.網絡層:IP協議增加作為通信目的地的MAC地址后轉發給鏈路層。
接收端的服務器在鏈路層接收到數據,按序往上層發送,一直到應用層。
然后服務器將返回對應請求,設置相應的緩存
?
這中間還涉及一個面試很喜歡問的問題,就是TCP協議中的“三次握手,四次揮手”
握手過程中使用了TCP標志——SYN(synchronize)和ACK(acknowledgement)
1.發送端首先發送一個帶SYN標志的數據包給對方
2.接收端接收到后,回傳一個帶有SYN/ACK標志數據包表示傳達確認信息
3.發送端再回傳一個帶ACK標志的數據包,代表“握手結束”
四次揮手
1.客戶端(Client)發送中斷連接請求,發送FIN報文
2.服務端(Server)接收到FIN報文后,向客戶端發送ACK報文(反饋客戶端信息,你的請求我收到了,但是我還沒有準備好,請等待我的消息),這個時候客戶端就進入FIN-WAIT狀態
3.當服務端確定數據已發送完畢,則向客戶端發送FIN/ACK報文,告訴客戶端,我這邊數據發送完畢,可以關閉連接
4.客戶端收到信息后,就知道可以關閉連接了,但它不相信網絡,怕服務端不知道要關閉,所以發送ACK報文后進入TIME_WAIT狀態,如果服務端沒有收到ACK則可以重傳,服務端收到ACK后,就直到可以斷開連接了。客戶端等待2MSL后依然沒有收到回復,則證明服務端已經正常關閉,那好,客戶端也關閉連接。TCP連接關閉
?
?
當第一次請求完成之后,以后再進行相應請求時,就要討論緩存是否過期的問題了
看完這幅圖,有沒有什么大膽的想法~
根據這幅圖,一步一步理清關于頁面輸入url地址之后發生了什么這個問題
前提:客戶端對于上述url地址請求是有緩存的
Expires
首部字段Expires會將資源失效的日期告知客戶端。緩存服務器在接收到含有首部字段Expires的響應后,會以緩存來應答請求,在Expires字段值指定的時間之前,響應的副本會一直被保存。當超過指定的時間后,緩存服務器在請求發送過來時,會轉向源服務器請求資源。
當緩存未過期時,頁面直接取緩存,進行頁面展示。
緩存過期后,進行Etag判斷
ETag
首部字段ETag能告訴客戶端實體標識。它是一種可將資源以字符串形式做唯一性標識的方式。服務器會為每份資源分配對應ETag值。
另外,當資源更新時,ETag值也需要更新。生成ETag值時,并沒有統一的算法規則,而僅僅是由服務器來分配。
強ETag值:不論實體發生多么細微的變化都會改變其值。
弱ETag值:只用于提示資源是否相同。只有資源發生了根本改變,產生差異時才會改變ETag值。這時,會在字段值最開始處附加W/。
If-None-Match
屬于附帶條件之一。用于指定If-None-Match字段值的實體標記(ETag)值與請求資源的ETag不一致時,它就告知服務器處理該請求。
在GET或HEAD方法中使用首部字段If-None-Match可獲得最新的資源
Last-Modified
指明資源最終被修改的時間。
If-Modified-Since
附帶條件之一。
用于確認代理或客戶端擁有的本地資源的有效性。
它會告知服務器若If-Modified-Since字段值早于資源的更新時間,則希望能處理該請求。
而在指定字段值的日期時間之后,如果請求的資源都沒有更新過,則返回狀態碼304響應。
200 OK
從客戶端發來的請求在服務器端被正常處理了。
304 Not Modified
服務器端資源未改變,可直接使用客戶端未過期的緩存。資源已找到,但未符合條件請求
表示客戶端發送附帶條件的請求時,服務器端允許請求訪問資源,但因發生請求未滿足條件的情況后,直接返回304。
總結:
當頁面輸入url地址之后,首先進行是否有緩存的判斷,沒有緩存,正常通過向服務器發起請求獲取頁面資源
有緩存的話進行緩存是否過期等一系列判斷,最終將頁面資源展示出來
先走緩存,再服務器請求,一切以快速,簡捷為目的
?
上面只是簡單介紹了一下從輸入url到請求到頁面資源的過程,還有頁面展示,各種緩存的問題,有興趣的朋友可以自己研究一下,這里就先不做介紹
本面試題為前端常考面試題,后續有機會繼續完善。我是歌謠,一個沉迷于故事的講述者。
歡迎一起私信交流。
“睡服“面試官系列之各系列目錄匯總(建議學習收藏)?
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的“约见”面试官系列之常见面试题第四十三篇之页面输入url之后发生了什么?(建议收藏)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 自己动手写操作系统-经典书籍
- 下一篇: 工程力学:绪论与其它