面试题(http协议篇)
http協(xié)議流程?
- http客戶端發(fā)起請求,創(chuàng)建到服務(wù)器的端口,默認(rèn)為8080
- http服務(wù)器在端口端監(jiān)聽客戶端請求
- 收到請求后服務(wù)器向客戶端返回狀態(tài)(如:200等)和內(nèi)容(如:錯誤信息等)
輸入網(wǎng)址回車或者F5刷新時,計算機(jī)與瀏覽器的交互過程?
- 域名解析:
chrome瀏覽器搜索自身的DNS緩存,查看自身的DNS緩存是否存在,若有緩存,則查看是否過期,若未過期則結(jié)束;
若瀏覽器未找到緩存或緩存失效,Chrome會搜索操作系統(tǒng)自身的DNS緩存,若找到并未過期則停止搜索
若操作系統(tǒng)自身的DNS緩存也未找到,便讀取本地的HOST文件
若HOST文件也未找到,瀏覽器發(fā)起一個DNS的一個系統(tǒng)調(diào)用,向本地的主控DNS服務(wù)器,一般由寬帶運營商提供發(fā)起的一個域名請求,寬帶運營商服務(wù)器查看自身緩存,若找到則結(jié)束;若未找到,運營商服務(wù)器會發(fā)起一個迭代DNS解析的請求。(層級調(diào)用:運營商請求根域,根域返回COM,運營商請求COM(萬維網(wǎng)提供),查找到返回給運營商)
運營商服務(wù)器把IP地址結(jié)果返回操作系統(tǒng)內(nèi)核,同時緩存起來;
操作系統(tǒng)內(nèi)核把結(jié)果返回給瀏覽器,最終瀏覽器拿到對應(yīng)的IP地址。
瀏覽器----以一個隨機(jī)端口向web服務(wù)器發(fā)起一個TCP連接請求----web服務(wù)器
tcp連接請求通過層層路由設(shè)備到達(dá)服務(wù)器端口進(jìn)入網(wǎng)卡,然后進(jìn)入到內(nèi)核的TCP/IP協(xié)議棧,還有可能經(jīng)過防火墻的過濾,最終到達(dá)WEB服務(wù)器建立連接。
三次握手
客戶端----發(fā)起請求------》遠(yuǎn)端服務(wù)器
客戶端《-----接收請求-------遠(yuǎn)端服務(wù)器
客戶端-----響應(yīng)請求-----》遠(yuǎn)端服務(wù)器
調(diào)整器中network的timing(資源加載過程中每個流程所耗費的時間)?
stalled:阻塞,瀏覽器發(fā)出請求到請求可以發(fā)出的時間,不包含DNS查詢和建立TCP連接的時間
proxy negotiation: 代理協(xié)商的時間
request send: 請求的每一個字節(jié)前到最后一個字節(jié)發(fā)出后的時間,可理解為請求時間或上傳時間
waiting: 請求發(fā)出后到響應(yīng)的經(jīng)一個請求字節(jié)的時間 ,包括整個數(shù)據(jù)在各個路由中貫穿所使用的時間,以及服務(wù)器響應(yīng)這個請求所做的后臺處理時間
content download: 收到響應(yīng)的第一個字節(jié)開始到最后一個字節(jié)所花費的時間,即下載時間。
HTTP協(xié)議狀態(tài)碼
206 Partial Content:客戶發(fā)送一個帶有Range頭的GET請求,服務(wù)器完成了它 播放視頻和音頻
302 Found:所請求的頁面已經(jīng)臨時轉(zhuǎn)移到新的URL
304 Not Modified:客戶端有緩沖的文檔并發(fā)出一個條件性的請求,服務(wù)器告訴客戶,原來緩沖的文檔還可以繼續(xù)使用
401 Unauthorized:請求未經(jīng)授權(quán),這個狀態(tài)代碼必須和WWW-Authenticate報頭域一起使用
403 Forbidden:對被請求頁面的訪問被禁止
404 Not Found:請求資源不存在
503 Server Unavailable:請求未完成,服務(wù)器臨時過載或當(dāng)機(jī),一段事件后恢復(fù)正常
客戶端在請求一個文件的時候,發(fā)現(xiàn)自己緩存的文件有 Last Modified ,那么在請求中會包含 If Modified Since ,這個時間就是緩存文件的 Last Modified 。因此,如果請求中包含 If Modified Since,就說明已經(jīng)有緩存在客戶端。
服務(wù)端只要判斷這個時間和當(dāng)前請求的文件的修改時間就可以確定是返回 304 還是 200 。對于靜態(tài)文件,例如:CSS、圖片,服務(wù)器會自動完成 Last Modified 和 If Modified Since 的比較,完成緩存或者更新。但是對于動態(tài)頁面,就是動態(tài)產(chǎn)生的頁面,往往沒有包含 Last Modified 信息,這樣瀏覽器、網(wǎng)關(guān)等都不會做緩存,也就是在每次請求的時候都完成一個 200 的請求。因此,對于動態(tài)頁面做緩存加速,首先要在 Response 的 HTTP Header 中增加 Last Modified 定義,其次根據(jù) Request 中的 If Modified Since 和被請求內(nèi)容的更新時間來返回 200 或者 304 。雖然在返回 304 的時候已經(jīng)做了一次數(shù)據(jù)庫查詢,但是可以避免接下來更多的數(shù)據(jù)庫查詢,并且沒有返回頁面內(nèi)容而只是一個 HTTP Header,從而大大的降低帶寬的消耗,對于用戶的感覺也是提高。當(dāng)這些緩存有效的時候,通過 Fiddler 或HttpWatch 查看一個請求會得到這樣的結(jié)果:
第一次訪問 200
按F5刷新(第二次訪問) 304
按Ctrl+F5強(qiáng)制刷新 200
cookie、localstorage、session的區(qū)別
本地存儲主要有:cookie、localStorage和sessionStorage。利用本地存儲,把一部分?jǐn)?shù)據(jù)保存在客戶端,減少對服務(wù)器的請求,降低服務(wù)器壓力,提升網(wǎng)頁加載速度。
Cookie:主要由服務(wù)器生成,且前端也可以設(shè)置,保存在客戶端本地的一個文件,通過response響應(yīng)頭的set-Cookie字段進(jìn)行設(shè)置,且Cookie的內(nèi)容自動在請求的時候被傳遞給服務(wù)器。在客戶端和服務(wù)器之間來回傳遞,耗性能。
Cookie可以記錄用戶ID、密碼、瀏覽過的網(wǎng)頁、停留的時間等信息。當(dāng)你再次來到該網(wǎng)站時,網(wǎng)站通過讀取Cookies,得知你的相關(guān)信息,就可以做出相應(yīng)的動作,如不用輸入ID、密碼就直接登錄等等。一個網(wǎng)站只能讀取它自己
放置的信息,不能讀取其他網(wǎng)站的Cookie文件。因此,Cookie文件還保存了host屬性,即網(wǎng)站的域名或ip。 這些屬性以名值對的方式進(jìn)行保存,內(nèi)容大多進(jìn)行了加密處理。Cookie文件的命名格式是:用戶名@網(wǎng)站地址[數(shù)字].txt
優(yōu)點:
(1)給用戶更人性化的使用體驗,如記住“密碼功能”、老用戶登錄歡迎語;
(2)彌補(bǔ)了HTTP無連接特性;
(3)站點統(tǒng)計訪問人數(shù)的一個依據(jù)
缺點:
(1)它無法解決多人共用一臺電腦的問題,帶來了不安全因素;
(2)Cookie文件容易被誤刪除;
(3)一人使用多臺電腦;
(4)Cookies欺騙。修改host文件,可以非法訪問目標(biāo)站點的Cookie;
(5)容量有限制,不能超過4kb;
(6)在請求頭上帶著數(shù)據(jù)安全性差。
localStorage:主要是前端開發(fā)人員在前端設(shè)置,一旦數(shù)據(jù)保存在本地后,就可以避免再向服務(wù)器請求數(shù)據(jù),因此減少不必要的數(shù)據(jù)請求,減少數(shù)據(jù)在瀏覽器和服務(wù)器間不必要地來回傳遞。
可以長期存儲數(shù)據(jù),沒有時間限制,一天,一年,兩年甚至更長,數(shù)據(jù)都可以使用。localStorage中一般瀏覽器支持的是5M大小,這個在不同的瀏覽器中會有所不同。
優(yōu)點:
(1)alStorage拓展了cookie的4k限制;
(2)alStorage可以將第一次請求的5M大小數(shù)據(jù)直接存儲到本地,相比于cookie可以節(jié)約帶寬;
(3)alStorage的使用也是遵循同源策略的,所以不同的網(wǎng)站直接是不能共用相同的localStorage。
缺點:
(1)需要手動刪除,否則長期存在;
(2)大小不一,版本的支持也不一樣;
(3)alStorage只支持string類型的存儲,JSON對象需要轉(zhuǎn)換;
(4)alStorage本質(zhì)上是對字符串的讀取,如果存儲內(nèi)容多的話會消耗內(nèi)存空間,會導(dǎo)致頁面變卡。
sessionStorage:主要是前端開發(fā)人員在前端設(shè)置,sessionStorage(會話存儲),只有在瀏覽器被關(guān)閉之前使用,創(chuàng)建另一個頁面時同時可以使用,關(guān)閉瀏覽器之后數(shù)據(jù)就會消失。存儲上限制:不同的瀏覽器存儲的上限也不一樣,但大多數(shù)瀏覽器把上限限制在5MB以下。
總結(jié)
以上是生活随笔為你收集整理的面试题(http协议篇)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Kali linux 局域网arp断网攻
- 下一篇: python3 运行you get_Yo