日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

“约见”面试官系列之常见面试题第四十三篇之页面输入url之后发生了什么?(建议收藏)

發(fā)布時間:2023/12/10 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 “约见”面试官系列之常见面试题第四十三篇之页面输入url之后发生了什么?(建议收藏) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

本文主旨:幫助自己理清頁面輸入url地址之后的一個整體流程

?

首先,用戶第一次向服務器發(fā)送對應url地址請求,此時,客戶端沒有緩存

1.用戶輸入url通過DNS解析為對應的IP地址。

2.應用層:HTTP協(xié)議生成針對目標Web服務器的HTTP請求報文。

3.傳輸層:TCP協(xié)議為了傳輸方便,將HTTP請求報文進行分割,并在各個報文上打上標記序號及端口號后轉(zhuǎn)發(fā)給網(wǎng)絡層。

4.網(wǎng)絡層:IP協(xié)議增加作為通信目的地的MAC地址后轉(zhuǎn)發(fā)給鏈路層。

接收端的服務器在鏈路層接收到數(shù)據(jù),按序往上層發(fā)送,一直到應用層。

然后服務器將返回對應請求,設(shè)置相應的緩存

?

這中間還涉及一個面試很喜歡問的問題,就是TCP協(xié)議中的“三次握手,四次揮手

握手過程中使用了TCP標志——SYN(synchronize)和ACK(acknowledgement)

1.發(fā)送端首先發(fā)送一個帶SYN標志的數(shù)據(jù)包給對方

2.接收端接收到后,回傳一個帶有SYN/ACK標志數(shù)據(jù)包表示傳達確認信息

3.發(fā)送端再回傳一個帶ACK標志的數(shù)據(jù)包,代表“握手結(jié)束”

四次揮手

1.客戶端(Client)發(fā)送中斷連接請求,發(fā)送FIN報文

2.服務端(Server)接收到FIN報文后,向客戶端發(fā)送ACK報文(反饋客戶端信息,你的請求我收到了,但是我還沒有準備好,請等待我的消息),這個時候客戶端就進入FIN-WAIT狀態(tài)

3.當服務端確定數(shù)據(jù)已發(fā)送完畢,則向客戶端發(fā)送FIN/ACK報文,告訴客戶端,我這邊數(shù)據(jù)發(fā)送完畢,可以關(guān)閉連接

4.客戶端收到信息后,就知道可以關(guān)閉連接了,但它不相信網(wǎng)絡,怕服務端不知道要關(guān)閉,所以發(fā)送ACK報文后進入TIME_WAIT狀態(tài),如果服務端沒有收到ACK則可以重傳,服務端收到ACK后,就直到可以斷開連接了。客戶端等待2MSL后依然沒有收到回復,則證明服務端已經(jīng)正常關(guān)閉,那好,客戶端也關(guān)閉連接。TCP連接關(guān)閉

?

?

當?shù)谝淮握埱笸瓿芍?#xff0c;以后再進行相應請求時,就要討論緩存是否過期的問題了

看完這幅圖,有沒有什么大膽的想法~

根據(jù)這幅圖,一步一步理清關(guān)于頁面輸入url地址之后發(fā)生了什么這個問題

前提:客戶端對于上述url地址請求是有緩存的

Expires

首部字段Expires會將資源失效的日期告知客戶端。緩存服務器在接收到含有首部字段Expires的響應后,會以緩存來應答請求,在Expires字段值指定的時間之前,響應的副本會一直被保存。當超過指定的時間后,緩存服務器在請求發(fā)送過來時,會轉(zhuǎn)向源服務器請求資源。

當緩存未過期時,頁面直接取緩存,進行頁面展示。

緩存過期后,進行Etag判斷

ETag

首部字段ETag能告訴客戶端實體標識。它是一種可將資源以字符串形式做唯一性標識的方式。服務器會為每份資源分配對應ETag值。

另外,當資源更新時,ETag值也需要更新。生成ETag值時,并沒有統(tǒng)一的算法規(guī)則,而僅僅是由服務器來分配。

強ETag值:不論實體發(fā)生多么細微的變化都會改變其值。

弱ETag值:只用于提示資源是否相同。只有資源發(fā)生了根本改變,產(chǎn)生差異時才會改變ETag值。這時,會在字段值最開始處附加W/。

If-None-Match

屬于附帶條件之一。用于指定If-None-Match字段值的實體標記(ETag)值與請求資源的ETag不一致時,它就告知服務器處理該請求。

在GET或HEAD方法中使用首部字段If-None-Match可獲得最新的資源

Last-Modified

指明資源最終被修改的時間。

If-Modified-Since

附帶條件之一。

用于確認代理或客戶端擁有的本地資源的有效性。

它會告知服務器若If-Modified-Since字段值早于資源的更新時間,則希望能處理該請求。

而在指定字段值的日期時間之后,如果請求的資源都沒有更新過,則返回狀態(tài)碼304響應。

200 OK

從客戶端發(fā)來的請求在服務器端被正常處理了。

304 Not Modified

服務器端資源未改變,可直接使用客戶端未過期的緩存。資源已找到,但未符合條件請求

表示客戶端發(fā)送附帶條件的請求時,服務器端允許請求訪問資源,但因發(fā)生請求未滿足條件的情況后,直接返回304。

總結(jié):

當頁面輸入url地址之后,首先進行是否有緩存的判斷,沒有緩存,正常通過向服務器發(fā)起請求獲取頁面資源

有緩存的話進行緩存是否過期等一系列判斷,最終將頁面資源展示出來

先走緩存,再服務器請求,一切以快速,簡捷為目的

?

上面只是簡單介紹了一下從輸入url到請求到頁面資源的過程,還有頁面展示,各種緩存的問題,有興趣的朋友可以自己研究一下,這里就先不做介紹

本面試題為前端常考面試題,后續(xù)有機會繼續(xù)完善。我是歌謠,一個沉迷于故事的講述者。

歡迎一起私信交流。

“睡服“面試官系列之各系列目錄匯總(建議學習收藏)?

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎

總結(jié)

以上是生活随笔為你收集整理的“约见”面试官系列之常见面试题第四十三篇之页面输入url之后发生了什么?(建议收藏)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。