一、計算機網絡體系結構
二、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的基礎上主要增加長連接的性能。