計算機網絡不徹底整理(下)--春招實習

HTTP

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

參考:segmentfault.com/a/119000000…html

  • DNS解析:網址到ip地址的轉換
  • TCP鏈接: HTTP協議使用TCP做爲傳輸層協議
  • 發送HTTP請求
  • 服務器處理請求並返回HTTP報文
  • 瀏覽器解析渲染頁面
  • 鏈接結束

HTTP和HTTPS的區別

HTTP報文是包裹在TCP報文中發送的,服務器端收到TCP報文時會解包提取出HTTP報文。可是HTTP報文是明文,若是中間被截取的話會存在一些信息泄露的風險。web

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

HTTPS在傳輸數據以前須要客戶端與服務器進行一個握手(TLS/SSL握手),在握手過程當中將確立雙方加密傳輸數據的密碼信息(第二次握手服務器會發送一個SSL證書,客戶端對其驗證)。segmentfault

TLS/SSL使用了非對稱加密、對稱加密以及hash等。具體過程請參考經典的阮一峯先生的博客TLS/SSL握手過程瀏覽器

SSL加密過程: 須要注意的是非對稱加解密算法的效率要比對稱加解密要低的多。 因此SSL在握手過程當中使用非對稱密碼算法來協商密鑰,實際使用對稱加解密的方法對http內容加密傳輸。緩存

Https的好處安全

  • 全部信息都是加密傳播,黑客沒法竊聽。
  • 具備校驗機制,一旦被篡改,通訊雙方會馬上發現。
  • 配備身份證書,防止身份被冒充。

缺點服務器

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

常見的狀態碼

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

  • 202 Accepted 已經接受請求,但處理還沒有完成session

  • 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 的比較。

相關文章
相關標籤/搜索