【轉載】前端必須瞭解的網絡協議

https://blog.csdn.net/Lucky_chengzi/article/details/91581079

前端必須瞭解的網絡協議

首先是一幅四層/七層模型圖

OSI七層網絡模型 TCP/IP四層概念模型 對應網絡協議
應用層(Application) 應用層 HTTP、TFTP、FTP、NFS、WAIS、SMTP
表示層(Presentation) Telnet、Rlogin、SNMP、Gopher
會話層(session) SNMPDNS
傳輸層(Transport) 傳輸層 TCP、UDP
網絡層(Network) 網絡層 IP、ICMP、ARP、RARP、AKP、UUCP
數據鏈路層(Data link) 數據鏈路層 FDDI、Ethernet、Arpanet、PDN、SLIP、PPP
物理層(Physical) IEEE 802.1A、IEEE 802.2到IEEE 802.11

要想深入的瞭解透四層、七層模型圖需要一定的時間,我們前端人員其實只要重點了解一下應用層中的HTTP、FTP,以及傳輸層當中的TCP和網絡層中的ip部分。


http、websocket等協議與tcp、ip協議的關係

在這裏插入圖片描述

TCP/IP是傳輸層協議,是互聯網相關的各類協議的統稱,主要解決數據如何在網絡中傳輸;而HTTP是應用層協議,主要解決如何包裝數據。
Socket是對TCP/IP協議的封裝,Socket本身並不是協議,而是一個調用接口(API),通過Socket,我們才能使用TCP/IP協議。
可以把ip層想象成公路,tcp、udp是火車,而http,https等是貨物
http連接:http連接就是所謂的短連接,即客戶端向服務端發送一次請求,服務器端響應後連接即會斷掉;
socket連接:socket連接就是所謂的長連接,理論上客戶端和服務器端一旦建立起來連接將不會主動斷掉;但是由於各種環境因素可能會連接斷開。比如:服務器或客戶端主機down了,網絡故障,或者兩者之間長時間沒有數據傳輸,網絡防火牆可能會斷開該連接以釋放網絡資源。所以當一個socket連接中沒有數據的傳輸,那麼爲了維持連接需要發送心跳消息~~具體消息格式是開發者自己定義的。


http和https的區別

http:是互聯網上應用最廣泛的一種網絡協議,是一個客戶端和服務器端請求和應答的標準(tcp),用於從www服務器傳輸超文本到本地瀏覽器的傳輸協議,它可以是瀏覽器更加高效,使網絡傳輸減少。
https:是以安全爲目標的http通道,簡單講是http的安全辦。即http下加入ssl層,https的安全基礎是ssl,因此加密的詳細內容就需要ssl。
https的作用主要可以分爲兩種:一種是建立一個信息安全通道,來保證數據傳輸的安全;另一種就是確認網站的真實性;
兩者的主要區別
  1. https協議需要ca申請證書,一般免費證書較少,因而需要一定費用;
  2. http是超文本傳輸協議,信息是明文傳輸,https則是具有安全性的ssl加密傳輸協議;
  3. http和https使用的是完全不同的連接方式,用的端口也不一樣,前者是80,後者是443;
  4. http的連接很簡單,是無狀態的;https協議是由ssl+http協議構建的可進行加密傳輸,身份認證的網絡協議,比http協議安全。
http的特點
  1. 支持客戶、服務器模式(c/s模式)
  2. 簡單快速:客戶向服務器請求服務時,秩序傳送請求方法和路徑。請求方法常用的有GET、HEAD、POST。沒中方法規定了客戶與服務器聯繫的類型不同。由於http協議簡單,是的http服務器的程序規模小,因爲通信速度很快。
  3. 靈活:http允許傳輸任意類型的數據對象。正在傳輸的類型有content-type加以標記。
  4. 無連接:含義是限制每次連接只處理一個請求。服務器處理完客戶的請求,並收到客戶的應答後,即斷開連接。採用這種方式可以節省傳輸時間。
  5. 無狀態:無狀態是指協議對於事務處理沒有記憶能力。缺少狀態意味着如果後續處理需要前面的信息,則它必須重傳,這樣可能導致每次連接傳送的數據量增大。另一方面,在服務器不需要先前信心時它的應答就比較快。
http工作流程
  1. 建立tcp/ip連接,客戶端與服務器通過socket三次握手進行連接
  2. 客戶端向服務端發起HTTP請求(例:POST/login.html http/1.1)
  3. 客戶端發送一空白行,表示客戶端請求完畢
  4. 服務器做出應答,表示對於客戶端請求的應答,例如:HTTP、1.1 200 OK
  5. 服務器向客戶端發送應答頭信息
  6. 服務器向客戶端發送應答頭信息後,也會發送一空白行,表示應答頭信息發送完畢,接着就以content-type要求的數據格式發送數據給客戶端
  7. 服務端關閉tcp連接,如果服務器或者客戶端增加connection:keep-alive就表示客戶端與服務端繼續保存連接,在下次請求時可以繼續使用這次的連接
https的特點

優點

  1. 認證用戶和服務器,確保數據發送到正確的客戶機和服務器;
  2. 安全性 可防止數據在傳輸過程中不被竊取,改變,確保數據完整性;同事也一定程度上保護了服務端,使用惡意攻擊和僞裝數據的成本大大提高。

缺點

  1. https握手階段比較費時,會使頁面加載時間延長50%,增加10%-20%的耗電;
  2. 緩存不如http高效,會增加數據開銷;
  3. SSL證書需要錢,功能越強大費用越高;
  4. SSL證書需要綁定ip,不能在同一個ip上綁定多個域名,ipv4資源支持不了這種消耗
https的工作流程
  1. 客戶使用https的url訪問web服務器,要求與web服務器建立SSL連接;
  2. web服務器收到客戶端請求後,會將網站的證書信息(證書中包含了公鑰)傳送一份給客戶端;
  3. 客戶端的瀏覽器與web服務器開始協商SSL連接的安全等級,也就是信息加密的等級;
  4. 客戶端瀏覽器根據雙方同意的安全等級,建立會話密鑰,然後利用網站的公鑰將會話密鑰加密,並傳送給網站
  5. web服務器利用自己的私鑰解密出會話密鑰
  6. web服務器利用會話密鑰加密與客戶端之間的通信

http與websocket

WebSocket是HTML5規範提出的一種協議;目前除了完犢子的IE瀏覽器,其他瀏覽器都基本支持。他是一種協議,萬變不離其宗,也是基於TCP協議的;和HTTP協議是並存的兩種協議。
WebSocket連接的過程是:

  1. 客戶端發起http請求,經過3次握手後,建立起TCP連接;http請求裏存放WebSocket支持的版本號等信息,如:Upgrade、Connection、WebSocket-Version等;
  2. 服務器收到客戶端的握手請求後,同樣採用HTTP協議回饋數據;
  3. 客戶端收到連接成功的消息後,開始藉助於TCP傳輸信道進行全雙工通信。

相同點
都是一樣基於TCP的,都是可靠性傳輸協議
區別

  1. Websocket是一個持久化的協議,http不支持(長連接,循環連接的不算);
  2. Websocket支持雙向通訊(可以讓服務器主動向客戶端推送消息,客戶端也可以主動向服務器發送信息);http只能由客戶端發起,一個request對應一個response;

http協議的請求頭

Cache-control 緩存的開關(靜態資源 自動緩存 認爲干涉無效;From disk cache表示來自於緩存)
取值:private(被私有緩存緩存)、public(可以被任何緩存所緩存)、max-age=xxx(有時間限制,一般單位爲秒)、no-cache(不緩存過期的資源,緩存會向服務器進行有效處理確認之後處理資源)、no-store(不緩存)
資源標示對比
Etag與if-None-Mach(最高級):後端傳遞的if-None-Mach與Etag相比較,比不上了其他不用看 直接重新下載,不用緩存裏的
Last-Modified與If-Modified-Since:前者表示瀏覽器最後修改時間,在請求頭裏;後者表示最後接收時間,在響應頭裏;

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