2020前端秋招面試網絡以及瀏覽器緩存

目錄

 

1.七層網絡圖示

2.tcp三次握手

第一次握手(SYN-SENT(synchronization_sent同步已發送))

第二次握手(SYNC_RCVD(synchronization_recieved同步已收到))

第三次握手(ESTABLISHED)

3.從輸入url到頁面加載完成發生了什麼?——前端角度

4.session是什麼?

5.http協議

6.https與http區別,以及https是如何加密的?

7.cookie 的作用

8.webstorage


1.七層網絡圖示

2.tcp三次握手

第一次握手(SYN-SENT(synchronization_sent同步已發送))

客戶端向服務器發送報文,發出請求SYN=1,同時選擇一個初始序號seq=x.

第二次握手(SYNC_RCVD(synchronization_recieved同步已收到))

當服務器收到請求報文,會向客戶端發出確認報文。SYN=1,ACK=1,ack=x+1,同時發送序號爲seq=y。

第三次握手(ESTABLISHED)

在客戶端收到服務端發送的TCP建立驗證請求後,客戶端向服務器給出確認。返回服務器ACK=1,確認編號ack=y+1,在自己的序號上加上seq=x+1。

3.從輸入url到頁面加載完成發生了什麼?——前端角度

    1、瀏覽器的地址欄輸入URL並按下回車。

  2、瀏覽器查找當前URL是否存在緩存,並比較緩存是否過期。

  3、DNS解析URL對應的IP。

  4、根據IP建立TCP連接(三次握手)。

  5、HTTP發起請求。

  6、服務器處理請求,瀏覽器接收HTTP響應。

  7、渲染頁面,構建DOM樹。

  8、關閉TCP連接(四次揮手)。

4.session是什麼?

session稱爲會話信息,位於web服務器上,主要負責訪問者與網站之間的交互,當訪問瀏覽器請求http地址時,將傳遞到web服務器上並與訪問信息進行匹配, 當關閉網站時就表示會話已經結束,網站無法訪問該信息了,所以它無法保存永久數據,我們無法訪問以及禁用網站

session與cookie的區別

(1)Cookie以文本文件格式存儲在瀏覽器中,而session存儲在服務端它存儲了限制數據量。它只允許4kb它沒有在cookie中保存多個變量。

(2)cookie的存儲限制了數據量,只允許4KB,而session是無限量的

(3)我們可以輕鬆訪問cookie值但是我們無法輕鬆訪問會話值,因此它更安全

(4)設置cookie時間可以使cookie過期。但是使用session-destory(),我們將會銷燬會話。

區別:

1,session 在服務器端,cookie 在客戶端(瀏覽器)
2,session 默認被存在在服務器的一個文件裏(不是內存)
3,session 的運行依賴 session id,而 session id 是存在 cookie 中的,也就是說,如果瀏覽器禁用了 cookie ,同時 session 也會失效(但是可以通過其它方式實現,比如在 url 中傳遞 session_id)
4,session 可以放在 文件、數據庫、或內存中都可以。
5,用戶驗證這種場合一般會用 session

5.http協議

HTTP是一個簡單的請求-響應協議,它通常運行在TCP之上。它指定了客戶端可能發送給服務器什麼樣的消息以及得到什麼樣的響應。請求和響應消息的頭以ASCII碼形式給出;而消息內容則具有一個類似MIME的格式。

HTTP是基於客戶/服務器模式,且面向連接的。典型的HTTP事務處理有如下的過程: [8] 

(1)客戶與服務器建立連接;

(2)客戶向服務器提出請求;

(3)服務器接受請求,並根據請求返回相應的文件作爲應答;

(4)客戶與服務器關閉連接。

客戶與服務器之間的HTTP連接是一種一次性連接,它限制每次連接只處理一個請求,當服務器返回本次請求的應答後便立即關閉連接,下次請求再重新建立連接。這種一次性連接主要考慮到WWW服務器面向的是Internet中成幹上萬個用戶,且只能提供有限個連接,故服務器不會讓一個連接處於等待狀態,及時地釋放連接可以大大提高服務器的執行效率。 [8] 

HTTP是一種無狀態協議,即服務器不保留與客戶交易時的任何狀態。這就大大減輕了服務器記憶負擔,從而保持較快的響應速度。HTTP是一種面向對象的協議。允許傳送任意類型的數據對象。它通過數據類型和長度來標識所傳送的數據內容和大小,並允許對數據進行壓縮傳送。當用戶在一個HTML文檔中定義了一個超文本鏈後,瀏覽器將通過TCP/lP協議與指定的服務器建立連接。 [8] 

6.https與http區別,以及https是如何加密的?

HTTPS(全稱:Hyper Text Transfer Protocol over Secure Socket Layer 或 Hypertext Transfer Protocol Secure,超文本傳輸安全協議),是以安全爲目標的HTTP通道,簡單講是HTTP的安全版。即HTTP下加入SSL層,HTTPS的安全基礎是SSL,因此加密的詳細內容就需要SSL。

HTTPS和HTTP的區別

超文本傳輸協議HTTP協議被用於在Web瀏覽器和網站服務器之間傳遞信息。HTTP協議以明文方式發送內容,不提供任何方式的數據加密,如果攻擊者截取了Web瀏覽器和網站服務器之間的傳輸報文,就可以直接讀懂其中的信息,因此HTTP協議不適合傳輸一些敏感信息,比如信用卡號、密碼等。

爲了解決HTTP協議的這一缺陷,需要使用另一種協議:安全套接字層超文本傳輸協議HTTPS。爲了數據傳輸的安全,HTTPS在HTTP的基礎上加入了SSL協議,SSL依靠證書來驗證服務器的身份,併爲瀏覽器和服務器之間的通信加密。

HTTPS和HTTP的區別主要爲以下四點:

一、https協議需要到ca申請證書,一般免費證書很少,需要交費。

二、http是超文本傳輸協議,信息是明文傳輸,https 則是具有安全性ssl加密傳輸協議。

三、http和https使用的是完全不同的連接方式,用的端口也不一樣,前者是80,後者是443。

四、http的連接很簡單,是無狀態的;HTTPS協議是由SSL+HTTP協議構建的可進行加密傳輸、身份認證的網絡協議,比http協議安全。

7.cookie 的作用

Cookie 用於存儲 web 頁面的用戶信息。

Cookie 是一些數據, 存儲於你電腦上的文本文件中。

當 web 服務器向瀏覽器發送 web 頁面時,在連接關閉後,服務端不會記錄用戶的信息。

Cookie 的作用就是用於解決 "如何記錄客戶端的用戶信息":

  • 當用戶訪問 web 頁面時,他的名字可以記錄在 cookie 中。
  • 在用戶下一次訪問該頁面時,可以在 cookie 中讀取用戶訪問記錄

 

由於http是無狀態的協議,一旦客戶端和服務器的數據交換完畢,就會斷開連接,再次請求,會重新連接,這就說明服務器單從網絡連接上是沒有辦法知道用戶身份的。怎麼辦呢?那就給每次新的用戶請求時,給它頒發一個身份證(獨一無二)吧,下次訪問,必須帶上身份證,這樣服務器就會知道是誰來訪問了,針對不同用戶,做出不同的響應。這就是Cookie的原理。

用戶首次訪問服務器,服務器會返回一個獨一無二的識別碼;id=23451,這樣服務器可以用這個碼跟蹤記錄用戶的信息,(購物歷史,地址信息等)。

cookie可以包含任意的信息,不僅僅是id,客戶端會記錄服務器返回來的Set-Cookie首部中的cookie內容。並將cookie存儲在瀏覽器的cookie數據庫中,當用戶訪問同一站點時,瀏覽器就會挑選當時該站點頒發的id=XXX的身份證(cookie),並在Cookie請求首部發送過去。

可以按照過期時間分爲兩類:會話cookie和持久cookie。會話cookie是一種臨時cookie,用戶退出瀏覽器,會話Cookie就會被刪除了,持久cookie則會儲存在硬盤裏,保留時間更長,關閉瀏覽器,重啓電腦,它依然存在,通常是持久性的cookie會維護某一個用戶週期性訪問服務器的配置文件或者登錄信息

    Cookie在生成時就會被指定一個Expire值,這就是Cookie的生存週期,在這個週期內Cookie有效,超出週期Cookie就會被清除。有些頁面將Cookie的生存週期設置爲“0”或負值,這樣在關閉瀏覽器時,就馬上清除Cookie,不會記錄用戶信息,更加安全

持久cookie 設置一個特定的過期時間(Expires)或者有效期(Max-Age)

Set-Cookie: id=a3fWa; Expires=Wed, 21 Oct 2019 07:28:00 GMT;

8.webstorage

WebStorage的目的是克服由cookie所帶來的一些限制,當數據需要被嚴格控制在客戶端時,不需要持續的將數據發回服務器。

WebStorage兩個主要目標:(1)提供一種在cookie之外存儲會話數據的路徑。(2)提供一種存儲大量可以跨會話存在的數據的機制。

HTML5的WebStorage提供了兩種API:localStorage(本地存儲)和sessionStorage(會話存儲)。

1、生命週期:localStorage:localStorage的生命週期是永久的,關閉頁面或瀏覽器之後localStorage中的數據也不會消失。localStorage除非主動刪除數據,否則數據永遠不會消失。

        sessionStorage的生命週期是在僅在當前會話下有效。sessionStorage引入了一個“瀏覽器窗口”的概念,sessionStorage是在同源的窗口中始終存在的數據。只要這個瀏覽器窗口沒有關閉,即使刷新頁面或者進入同源另一個頁面,數據依然存在。但是sessionStorage在關閉了瀏覽器窗口後就會被銷燬。同時獨立的打開同一個窗口同一個頁面,sessionStorage也是不一樣的。

2、存儲大小:localStorage和sessionStorage的存儲數據大小一般都是:5MB

3、存儲位置:localStorage和sessionStorage都保存在客戶端,不與服務器進行交互通信。

4、存儲內容類型:localStorage和sessionStorage只能存儲字符串類型,對於複雜的對象可以使用ECMAScript提供的JSON對象的stringify和parse來處理

5、獲取方式:localStorage:window.localStorage;;sessionStorage:window.sessionStorage;。

6、應用場景:localStoragese:常用於長期登錄(+判斷用戶是否已登錄),適合長期保存在本地的數據。sessionStorage:敏感賬號一次性登錄;

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章