常用傳輸層協議(tcp/ip+udp)與常用應用層協議簡述(http)


一、計算機網絡體系結構

二、TCP與UDP差異

1.TCP是面向連接的可靠傳輸,UDP是面向無連接的不可靠傳輸

  面向連接表現在3次握手,4次揮手;可靠傳輸表現在未進行4次揮手時的差錯重傳,超時重傳;
  TCP UDP傳輸時都會建立虛擬信道,區別是TCP要進行握手確認,直到揮手才注銷信道,UDP則傳輸完成就注銷信道並不在意接收方收到消息與否。

2.TCP是面向流的傳輸,UDP是基於數據報的傳輸

  流傳輸可進行流量控制傳輸,可進行分組傳輸,可進行擁塞控制傳輸;基於報文的傳輸不拆分不合並,無論多大一次性發送。

3.TCP面向系統資源要求較多,UDP相對較少

  TCP需要握手揮手,TCP頭部20字節,UDP頭部8字節

4.TCP與UDP的應用場景不同

  TCP效率要求相對較低,對傳輸的准確性要求較高,例如:HTTP請求、文件傳輸、遠程登錄
  UDP效率要求相對較高,對傳輸的准確性要求相對較低,例如:視頻通話、語音通話、偶爾斷續也不會影響,不會有流量控制、擁塞控制,偶爾丟幀影響不大

5.UDP的優勢

  簡單
  傳輸快
  支持一對一、一對多、多對多,而TCP是基於點對點的

二、三次握手與四次揮手

1.三次握手
  A向B發起請求
  B向A返回確認消息
  A向B發起確認包並分配資源

第三次握手是為了防止失效的連接到達服務器,讓服務器打開錯誤的連接,失效的請求是指滯留在網絡中的請求,有了第三次握手,滯留在網絡中的請求到達服務器時就會拒絕創建連接

2.四次揮手
  C向D發起揮手請求
  D向C返回確認消息(此時並不會立即斷開,等待一定的時間)
  D向C傳遞剩余的數據
  C向D發送確認揮手的消息,此時才斷開

三、HTTP協議概述

3.1 Cookie與Session

3.1.1 Cookie

  Http協議是無狀態的短連接,因此引入Cookie保存狀態信息;Cookie是服務器發送到用戶瀏覽器並保存在本地的一小塊數據,會在下次請求時攜帶在請求頭發送到服務器,判別兩次兩次請求是否來自同一瀏覽器,例如登錄狀態。

  cookie作用:記錄會話狀態、瀏覽器行為跟蹤。

  cookie創建過程:服務器發送響應報文時,通過set-cookie置於響應頭中。

  cookie安全性:較差,可通過標記cookie為secure來提高安全性。  --設置請求類型為Https

3.1.2 Session

  session將會話信息存儲到服務器,本地通過cookie只存儲sessionId,使用session維護登錄狀態相對於cookie較安全。

3.1.3 二者區別

  cookie只能存ASCII字符串,session可存取任何類型數據,cookie存在瀏覽器本地易被惡意查看

3.2緩存

  緩解服務器響應壓力。
  降低客戶端獲取資源的延遲,緩存比服務器離客戶端近。

3.3短鏈接與長鏈接

  短連接:每發起一次請求獲取資源后就斷開。

  長連接:發起請求獲取資源后不斷開。每次發起新的請求都需要進行三次握手協議,當瀏覽器訪問包含多張圖片資源的頁面時,除進行頁面資源的請求外,還需要圖片資源的請求,如果每次都進行TCP連接,開銷很大,長連接的出現就是為建立一次TCP連接可進行多次HTTP通信。

3.4流水線

  默認情況下HTTP請求是按順序發出的,下一個請求只有在上一個請求收到應答后才會發出,由於網絡延遲和帶寬限制可能造成長時間的等待。流水線是同一條長連接上發出的連續的請求,而不用等帶響應返回,可避免連接延遲。

3.5HTTPS

  HTTP先與SSL通信,再由SSL與TCP通信

  認證:第三方機構授予服務器、客戶端的證書,包含公鑰。

  混合加密:使用非對稱加密進行傳輸,使用對稱加密進行通信。

3.6GET與POST

  get post
后退/刷新按鈕 無害 重新提交
書簽 可收藏 不可收藏
緩存 能被緩存 不可被緩存
歷史 參數保留在歷史瀏覽記錄 不保留
數據長度 有限制 不限制
數據類型 只允許ASCII字符串 不限制
安全性 稍差,參數攜帶在URL中  稍好,參數在請求體且不會保存在歷史記錄
可見性 任何人可見URL 數據不會顯示在URL中
GET與POST本質都是TCP連接,並無差別,重大差別是GET產生一個數據包,POST產生兩個數據包;GET會把請求頭請求參數一並發出去,返回200;POST首次只發送請求頭,響應100,瀏覽器在發送請求體,響應200.

 

3.7HTTP各版本

3.7.1HTTP1.0與HTTP1.1區別

1.HTTP1.1支持長連接和請求的流水線處理

  通過增加Connection請求頭為keep-Alive來實現長連接

2.HTTP1.1增加host字段

  HTTP1.0認為每台服務器綁定唯一的IP地址,虛擬技術的發展,一台物理服務器可以存在多個虛擬主機,共享一個IP。

  HTTP1.1請求頭中host字段指明服務器地址(域名/IP),無host會返回400.

3.增加響應狀態碼 100 continue

  HTTP1.1支持分塊請求,先發請求頭,響應401表示拒絕訪問未認證,中斷請求,響應100表示可繼續請求,節約帶寬。

4.HTTP1.1引入chunked transfer-coding 支持分塊響應

  發送方將信息分割成若干個任意大小的數據塊,每個數據塊在發送時都會附上塊長度,最后一塊會零長度作為消息的結束標志。此特性允許只緩沖消息的片段,避免緩沖整個消息帶來的過載。

5.HTTP1.1在HTTP1.0的基礎上加入了一些Cache的新特性

  例如:當緩存對象的Age過期時,Cache不需要直接拋棄,而與服務器進行重新激活。

3.8.1HTTP2.0

  在HTTP1.1的基礎上主要增加長連接的性能。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM