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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

面试题(http协议篇)

發布時間:2023/12/20 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 面试题(http协议篇) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
  • http協議流程?

    • http客戶端發起請求,創建到服務器的端口,默認為8080
    • http服務器在端口端監聽客戶端請求
    • 收到請求后服務器向客戶端返回狀態(如:200等)和內容(如:錯誤信息等)
  • 輸入網址回車或者F5刷新時,計算機與瀏覽器的交互過程?

    • 域名解析:
      chrome瀏覽器搜索自身的DNS緩存,查看自身的DNS緩存是否存在,若有緩存,則查看是否過期,若未過期則結束;
      若瀏覽器未找到緩存或緩存失效,Chrome會搜索操作系統自身的DNS緩存,若找到并未過期則停止搜索
      若操作系統自身的DNS緩存也未找到,便讀取本地的HOST文件
      若HOST文件也未找到,瀏覽器發起一個DNS的一個系統調用,向本地的主控DNS服務器,一般由寬帶運營商提供發起的一個域名請求,寬帶運營商服務器查看自身緩存,若找到則結束;若未找到,運營商服務器會發起一個迭代DNS解析的請求。(層級調用:運營商請求根域,根域返回COM,運營商請求COM(萬維網提供),查找到返回給運營商)
      運營商服務器把IP地址結果返回操作系統內核,同時緩存起來;
      操作系統內核把結果返回給瀏覽器,最終瀏覽器拿到對應的IP地址。
  • 域名解析完成后,瀏覽器獲得域名對應的IP地址,發起HTTP‘三次握手’
    瀏覽器----以一個隨機端口向web服務器發起一個TCP連接請求----web服務器
    tcp連接請求通過層層路由設備到達服務器端口進入網卡,然后進入到內核的TCP/IP協議棧,還有可能經過防火墻的過濾,最終到達WEB服務器建立連接。
    三次握手
    客戶端----發起請求------》遠端服務器
    客戶端《-----接收請求-------遠端服務器
    客戶端-----響應請求-----》遠端服務器
  • TCP/IP連接建立起來后,瀏覽器就可以向服務器發送http請求了。如:用HTTP的GET方法請求一個根域 里的一個域名,協議可以采用HTTP1.0的一個協議
  • 服務器端接收到了這個請求,根據路徑參數,經過后端將結果數據返回給瀏覽器。如:是百度的頁面就會把完整的HTML頁面代碼返回給瀏覽器
  • 瀏覽器拿到了百度的完整的HTML頁面代碼,在解析和渲染這個頁面的時候,里面的JS、CSS、圖片等靜態資源,他們同樣也是一個HTTP請求,都需要經過上面的步驟
  • 瀏覽器根據拿到的資源對頁面進行渲染,最終把一個完整的頁面呈現給用戶。
  • 調整器中network的timing(資源加載過程中每個流程所耗費的時間)?

    stalled:阻塞,瀏覽器發出請求到請求可以發出的時間,不包含DNS查詢和建立TCP連接的時間
    proxy negotiation: 代理協商的時間
    request send: 請求的每一個字節前到最后一個字節發出后的時間,可理解為請求時間或上傳時間
    waiting: 請求發出后到響應的經一個請求字節的時間 ,包括整個數據在各個路由中貫穿所使用的時間,以及服務器響應這個請求所做的后臺處理時間
    content download: 收到響應的第一個字節開始到最后一個字節所花費的時間,即下載時間。

  • HTTP協議狀態碼

  • 1XX:指示信息-表示請求已接受,繼續處理
  • 2XX:成功-表示請求已被成功接收200 OK :客戶端請求成功
    206 Partial Content:客戶發送一個帶有Range頭的GET請求,服務器完成了它 播放視頻和音頻
  • 3XX:重定向-要完成請求必須進行更進一步的操作301 Move Permanently:所請求的頁面已經轉移至新的URL
    302 Found:所請求的頁面已經臨時轉移到新的URL
    304 Not Modified:客戶端有緩沖的文檔并發出一個條件性的請求,服務器告訴客戶,原來緩沖的文檔還可以繼續使用
  • 4XX:客戶端錯誤-請求有語法錯誤或請求無法實現400 Bad Request:客戶端請求有語法錯誤,不能被服務器所理解
    401 Unauthorized:請求未經授權,這個狀態代碼必須和WWW-Authenticate報頭域一起使用
    403 Forbidden:對被請求頁面的訪問被禁止
    404 Not Found:請求資源不存在
  • 5XX:服務錯誤-服務器未能實現合法的請求500 Internal Server Error:服務器發生不可預期的錯誤原來緩沖的文檔還可以繼續使用
    503 Server Unavailable:請求未完成,服務器臨時過載或當機,一段事件后恢復正常
  • HTTP緩存:強緩存(200)、協商緩存(304)
  • 客戶端在請求一個文件的時候,發現自己緩存的文件有 Last Modified ,那么在請求中會包含 If Modified Since ,這個時間就是緩存文件的 Last Modified 。因此,如果請求中包含 If Modified Since,就說明已經有緩存在客戶端。
    服務端只要判斷這個時間和當前請求的文件的修改時間就可以確定是返回 304 還是 200 。對于靜態文件,例如:CSS、圖片,服務器會自動完成 Last Modified 和 If Modified Since 的比較,完成緩存或者更新。但是對于動態頁面,就是動態產生的頁面,往往沒有包含 Last Modified 信息,這樣瀏覽器、網關等都不會做緩存,也就是在每次請求的時候都完成一個 200 的請求。因此,對于動態頁面做緩存加速,首先要在 Response 的 HTTP Header 中增加 Last Modified 定義,其次根據 Request 中的 If Modified Since 和被請求內容的更新時間來返回 200 或者 304 。雖然在返回 304 的時候已經做了一次數據庫查詢,但是可以避免接下來更多的數據庫查詢,并且沒有返回頁面內容而只是一個 HTTP Header,從而大大的降低帶寬的消耗,對于用戶的感覺也是提高。當這些緩存有效的時候,通過 Fiddler 或HttpWatch 查看一個請求會得到這樣的結果:
    第一次訪問 200
    按F5刷新(第二次訪問) 304
    按Ctrl+F5強制刷新 200

  • cookie、localStorage和sessionStorage區別
    cookie、localstorage、session的區別
  • 本地存儲主要有:cookie、localStorage和sessionStorage。利用本地存儲,把一部分數據保存在客戶端,減少對服務器的請求,降低服務器壓力,提升網頁加載速度。

    Cookie:主要由服務器生成,且前端也可以設置,保存在客戶端本地的一個文件,通過response響應頭的set-Cookie字段進行設置,且Cookie的內容自動在請求的時候被傳遞給服務器。在客戶端和服務器之間來回傳遞,耗性能。
    Cookie可以記錄用戶ID、密碼、瀏覽過的網頁、停留的時間等信息。當你再次來到該網站時,網站通過讀取Cookies,得知你的相關信息,就可以做出相應的動作,如不用輸入ID、密碼就直接登錄等等。一個網站只能讀取它自己
    放置的信息,不能讀取其他網站的Cookie文件。因此,Cookie文件還保存了host屬性,即網站的域名或ip。 這些屬性以名值對的方式進行保存,內容大多進行了加密處理。Cookie文件的命名格式是:用戶名@網站地址[數字].txt
    優點:
    (1)給用戶更人性化的使用體驗,如記住“密碼功能”、老用戶登錄歡迎語;
    (2)彌補了HTTP無連接特性;
    (3)站點統計訪問人數的一個依據
    缺點:
    (1)它無法解決多人共用一臺電腦的問題,帶來了不安全因素;
    (2)Cookie文件容易被誤刪除;
    (3)一人使用多臺電腦;
    (4)Cookies欺騙。修改host文件,可以非法訪問目標站點的Cookie;
    (5)容量有限制,不能超過4kb;   
    (6)在請求頭上帶著數據安全性差。

    localStorage:主要是前端開發人員在前端設置,一旦數據保存在本地后,就可以避免再向服務器請求數據,因此減少不必要的數據請求,減少數據在瀏覽器和服務器間不必要地來回傳遞。
    可以長期存儲數據,沒有時間限制,一天,一年,兩年甚至更長,數據都可以使用。localStorage中一般瀏覽器支持的是5M大小,這個在不同的瀏覽器中會有所不同。
    優點:
    (1)alStorage拓展了cookie的4k限制;
    (2)alStorage可以將第一次請求的5M大小數據直接存儲到本地,相比于cookie可以節約帶寬;
    (3)alStorage的使用也是遵循同源策略的,所以不同的網站直接是不能共用相同的localStorage。
    缺點:
    (1)需要手動刪除,否則長期存在;
    (2)大小不一,版本的支持也不一樣;
    (3)alStorage只支持string類型的存儲,JSON對象需要轉換;
    (4)alStorage本質上是對字符串的讀取,如果存儲內容多的話會消耗內存空間,會導致頁面變卡。

    sessionStorage:主要是前端開發人員在前端設置,sessionStorage(會話存儲),只有在瀏覽器被關閉之前使用,創建另一個頁面時同時可以使用,關閉瀏覽器之后數據就會消失。存儲上限制:不同的瀏覽器存儲的上限也不一樣,但大多數瀏覽器把上限限制在5MB以下。

    總結

    以上是生活随笔為你收集整理的面试题(http协议篇)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。