計算機網路不完全整理(下)--春招實習

yvonneit發表於2019-03-14

HTTP

從輸入url到顯示主頁的過程

參考:segmentfault.com/a/119000000…

  • DNS解析:網址到ip地址的轉換
  • TCP連線: HTTP協議使用TCP作為傳輸層協議
  • 傳送HTTP請求
  • 伺服器處理請求並返回HTTP報文
  • 瀏覽器解析渲染頁面
  • 連線結束

HTTP和HTTPS的區別

計算機網路不完全整理(下)--春招實習

HTTP報文是包裹在TCP報文中傳送的,伺服器端收到TCP報文時會解包提取出HTTP報文。但是HTTP報文是明文,如果中間被擷取的話會存在一些資訊洩露的風險。

HTTPS協議的本質就是HTTP + SSL(or TLS)。在HTTP報文進入TCP報文之前,先使用SSL對HTTP報文進行加密。

HTTPS在傳輸資料之前需要客戶端與伺服器進行一個握手(TLS/SSL握手),在握手過程中將確立雙方加密傳輸資料的密碼資訊(第二次握手伺服器會傳送一個SSL證書,客戶端對其驗證)。

TLS/SSL使用了非對稱加密、對稱加密以及hash等。具體過程請參考經典的阮一峰先生的部落格TLS/SSL握手過程

SSL加密過程: 需要注意的是非對稱加解密演算法的效率要比對稱加解密要低的多。 所以SSL在握手過程中使用非對稱密碼演算法來協商金鑰,實際使用對稱加解密的方法對http內容加密傳輸。

計算機網路不完全整理(下)--春招實習

Https的好處

  • 所有資訊都是加密傳播,黑客無法竊聽。
  • 具有校驗機制,一旦被篡改,通訊雙方會立刻發現。
  • 配備身份證書,防止身份被冒充。

缺點

  • SSL證書維護麻煩。
  • 握手次數增加,降低訪問速度。
  • Http跳轉到Https的方式增加了使用者訪問耗時。
  • Https涉及的演算法會消耗CPU資源。

常見的狀態碼

  • 200 ok 伺服器已成功處理了請求並提供了請求的網頁

  • 202 Accepted 已經接受請求,但處理尚未完成

  • 204 No Content 沒有新文件,瀏覽器應該繼續顯示原來的文件

  • 206 Partial Content 客戶端進行了範圍請求(實現斷點續傳)

  • 301 Moved Permanently 永久性重定向

  • 302(或307) 臨時性重定向

  • 304 Not Modified 未修改,自從上次請求後,請求的內容未修改過

  • 401 未經授權

  • 403 Forbidden 伺服器拒絕請求

  • 404 Not Found 伺服器不存在客戶端所請求的資源

500 伺服器遇到一個錯誤,使其無法請求提供服務

HTTP長連線、短連線

HTTP 2.0

問題

GET 與 POST 比較:作用、引數、安全性、冪等性、可快取。

參考

HTTP 狀態碼

Cookie和Session

什麼是Cookie和Session

Sesssion在服務端生成,存在客戶端。客戶端訪問某個地址時,伺服器會根據頁面的頭部資訊生成coolkie(字串),然後cookie會加在http響應頭中,發往客戶端並儲存在瀏覽器。在下次客戶端請求時,請求中會附帶儲存的Cookie。

Session 是在伺服器端生成的,儲存在伺服器端,即存在記憶體中。可以對生成的 Session 設定過期時間,如果不設定過期時間,預設的 Session 過期時間是30 分鐘。但是,Sesssion 的生成的同時,會生成一個與之相關聯的的 SessionID ,此SessionID的儲存是需要 Cookie來完成的。SessionID 是以名稱為 JSESSIONID,其值應該是一個既不會重複,又不容易被找到規律以仿造的字串。SessionID會隨著此次Http響應,一併返回到客戶端,並儲存在客戶端中(Cookie)。到當前請求再次發出後,該 SessionID會隨著 Http 頭部,傳到伺服器中,伺服器依據當前 SessionID 得到與之對應的 Session.

注意:一個域,在客戶端建立的所有的Cookie都是可以共享的,只要 Cookie 沒有過期。

為什麼需要cookie和Seesion

在網站中,http請求是無狀態的。也就是說即使第一次和伺服器連線後並且登入成功後,第二次請求伺服器依然不能知道當前請求是哪個使用者。Cookie和Session的出現就是為了解決這個問題。

  • Cookie使用場景:有些網站有記住使用者名稱的功能,當你勾這個的時候,下次進入該網站時,就會儲存上一次登入的使用者名稱
  • Seesion使用場景:利用Seesion來驗證使用者是否已登入,利用Session來儲存驗證碼。

Cookie和Session的區別

  • Cookie是存在客戶端,Session存在伺服器
  • 安全性要求高的用Session,要求低用Cookie
  • Cookie只能儲存字串,Session可以儲存任何資訊
  • Cookie如果不設定時間,當關閉瀏覽器時,Cookie就失效,不會在本地儲存;Session的生命週期是一個會話(當啟動瀏覽器到關閉瀏覽器)
  • 在儲存相對持久的資訊時,應考慮使用 Cookie,因為 Cookie 可以以檔案的形式,儲存在客戶端。在進行一些登入的驗證及資訊攔截的時候,可以使用 Session。

參見:www.cnblogs.com/xiaoshitout…

cookie和session結合使用

web開發發展至今,cookie和session的使用已經出現了一些非常成熟的方案。在如今的市場或者企業裡,一般有兩種儲存方式:

  1. 儲存在服務端:通過cookie儲存一個session_id,然後具體的資料則是儲存在session中。如果使用者已經登入,則伺服器會在cookie中儲存一個session_id,下次再次請求的時候,會把該session_id攜帶上來,伺服器根據session_id在session庫中獲取使用者的session資料。就能知道該使用者到底是誰,以及之前儲存的一些狀態資訊。這種專業術語叫做server side session。
  2. 將session資料加密,然後儲存在cookie中。這種專業術語叫做client side session。

參見部落格:www.cnblogs.com/xxtalhr/p/9…

如何客戶端禁用了Cookie,如何儲存使用者的資訊

如果客戶端禁用了 Cookie 的話,很多網站任然可以儲存使用者的資訊。一種處理的方式是URL 重寫,將 SesseionID 直接附加在請求地址的後面。另一種處理的方式是,使用隱藏自動的方式。就是伺服器自動的在表單中,新增一個隱藏欄位,以便在表單提交時,將 SesseionID 一起傳到伺服器,進行識別。

Session的問題

  • session是存在伺服器的記憶體中的,如果session過多會影響伺服器的效能
  • session只在一臺伺服器裡,當有多臺伺服器的時候,訪問別的伺服器肯定會失敗(需考慮Session共享)

4. 長連線與短連線原理以及使用場景,流水線。

5. HTTP/1.x 的缺陷,以及 HTTP/2 的特點。

6. HTTP/1.1 的特性。

7. HTTP 與 FTP 的比較。

相關文章