前端需要了解的計算機網路知識

野林發表於2019-09-13

前端需要了解的計算機網路知識

概述

  • 七層網路協議
    • 物理層 -> 資料鏈路層 -> 網路層 -> 傳輸層 -> 會話層 -> 表示層 -> 應用層
  • http和tcp
    • http是應用層協議,tcp是傳輸層協議
    • 常見的應用層協議還包括:telnet,ssh,smtp,pop,ssl/tls,mime 常見傳輸層協議還有:udp,sctp

Web和HTTP

HTTP概況

  • HTTP伺服器並不儲存關於客戶的任何資訊,因此HTTP是一個無狀態協議(stateless protocol)

非持續連線和持續連線

  • 採用非持續連線的http是每個tcp最多允許傳輸一個物件

HTTP報文格式

  • HTTP請求報文
    • 請求行=方法+sp+URL+sp+版本+cr+lf
      • GET /somedir/page.html HTTP/1.1
    • 首部行=首部欄位名+sp+值+cr+lf
      • Host:www.someschool.edu
      • Connection:close
      • User-agent:Mozilla/5.0
      • Accept-language:fr
    • 空行=cr+lf
    • 實體主體
  • HTTP響應報文
    • 狀態行=版本+sp+狀態碼+sp+短語+cr+lf
      • HTTP/1.1 200 OK
    • 首部行=首部欄位名+sp+值+cr+lf
      • Connection:close
      • Date:Tue,09 Aug 2011 15:44:04 GMT
      • Server:Apache/2.2.3 (CentOS)
      • Last-Modified:Tue,09 Aug 2011 15:11:03 GMT
      • Content-Length:6821
      • Content-Type:text/html
    • 空行=cr+lf
    • 實體主體

http 狀態碼

  • 101 websocket 雙向通訊
  • 200 成功
  • 204 沒有響應體
  • 206 斷點續傳
  • 301 永久重定向
  • 302 臨時重定向
  • 304 快取 只能服務端設定
  • 401 沒登入沒有許可權
  • 403 登入後沒有許可權
  • 404 沒有資源
  • 405 請求方法不存在或不支援
  • 502 負載均衡

傳送請求的方式

  • 瀏覽器 預設get請求
  • postman
  • 命令列 mac curl

管線化

  • 管線化不需要等待上一次請求得到響應就可以執行下一次請求,實現並行傳送請求。只有GET和HEAD請求可以進行管線化,而POST有所限制

請求方法 RestfulApi 根據不同的動作 做對應的處理

  • get 獲取資源
  • post 新增資源
  • put 上傳檔案 修改(restful)
  • delete 刪除資源
  • options 跨域出現 複雜請求時出現 僅是get/post都是簡單請求 但加上自定義頭header就會變成複雜請求

使用者與伺服器互動:cookie

  • cookie元件
    • 在http響應報文中的一個cookie首部行
    • 在http請求報文中的一個cookie首部行
    • 在使用者端系統中保留有一個cookie檔案,並由使用者的瀏覽器進行管理
    • 位於Web站點的一個後端資料庫
  • cookie安全性
    • cookie 是存放在瀏覽器上的 伺服器可以設定 每次請求時都會帶上cookie
    • cookie 不安全 不能存放敏感資訊
    • session 服務端 (基於cookie) 伺服器的記憶體中,存到redis資料庫

Web快取

  • Web快取器(Web cache)也叫代理伺服器(proxy server),它能夠代表初始web伺服器來滿足http請求的網路實體
  • http快取
    • 強制快取

      • Cache-Control && Expires
    • 對比快取

      • Last-Modified & If-Modified-Since
      • ETag & If-None-Match
  • Cache-Control - private 客戶端可以快取 - public 客戶端和代理伺服器都可以快取 - max-age=60 快取內容將在60s後失效 - no-cache 需要使用對比快取驗證資料,強制向源伺服器再次驗證(沒有強制快取) - no-store 所有內容都不會快取,強制快取和對比快取都不會觸發(不快取)

DNS

  • DNS是域名解析系統 Domain Name System
  • DNS工作原理
    • 分散式層次資料庫
      • 根DNS伺服器
      • TLD頂級域(DNS)伺服器 com org edu
      • 權威DNS伺服器
      • 本地DNS伺服器與三個伺服器的查詢關係 從請求主機向本地DNS伺服器發出的查詢是遞迴查詢,從本地DNS伺服器向其他三種伺服器查詢為迭代查詢
    • DNS快取
      • 在一個請求鏈中,當DNS伺服器快取了一臺主機名/IP地址對,另一個對相同主機名的查詢就能夠提供所要求的IP地址,本地域名伺服器一般會快取頂級域名伺服器的對映
  • DNS記錄和報文
    • 資源記錄(Resource Record,RR)是一個包含了(Name,Value,Type,TTL)的四元組
    • DNS報文
      • 12位元組
        • 識別符號
        • 標誌
        • 問題數
        • 回答RR數
        • 權威RR數
        • 附加RR數
      • 查詢的名字和型別自竄
        • 問題(問題的變數數)
      • 對查詢的響應中的RR
        • 回答(資源記錄的變數數)
      • 權威伺服器的記錄
        • 權威(資源記錄的變數數)
      • 可被使用的附加"有幫助"的資訊
        • 附加資訊(資源記錄的變數數)
  • DDos攻擊
    • 分散式拒絕服務(DDos)頻寬洪泛攻擊

TCP連線

TCP報文段結構

  • 源埠號+目的埠號
  • 序號
  • 確認號
  • 首部長度+保留未用+URG+ACK+PSH+RST+SYN+FIN+接收視窗
  • 因特網校驗和+緊急資料指標
  • 選項
  • 資料

TCP連線管理(三次握手)

  • 第一步:客戶端的TCP首先向伺服器端的TCP傳送一個特殊的TCP報文段
  • 第二步:一旦包含TCP SYN報文段的IP資料包到達伺服器主機(假設它的確到達了),伺服器會從該資料包中提取出TCP SYN報文段,為該TCP連線分配TCP快取和變數,並向該客戶TCP傳送允許連線的報文段
  • 第三步:在收到SYNACK報文段後,客戶也要給該連線分配快取和變數

IP地址

IPv4 vs IPv6

  • IPv4資料包格式
    • 版本(0-4)+首部長度(4-8)+服務型別(8-16)+資料包長度(16-31)
    • 16位元標識(0-16)+標誌(16-19)+13位元片偏移(19-31)
    • 壽命TTL(0-8)+上層協議(8-16)+首部檢驗和(16-31)
    • 32位元源IP地址
    • 32位元目的IP地址
    • 選項(如果有的話)
    • 資料
  • IPv6資料包格式
    • 版本(0-4)+流量型別(4-12)+流標籤(12-31)
    • 有效載荷長度(0-16)+下一個首部(16-24)+跳限制(24-31)
    • 源地址(128位元)
    • 目的地址(128位元)
    • 資料

IPV4編址

  • 子網:不跨越路由器的路由器介面和主機介面就形成一個子網
  • 子網掩碼:IP地址為某個子網分配的一個223.1.1.0/24的地址,這種/24的記法,稱為子網掩碼(network mask),指示了32位元中的最左側24位元定義了子網地址
class NetIDs Blocks
A 10 1
B 172.16-172.31 16
C 192.168.0-192.168.255 256

CDN

  • CDN操作
    • 當使用者主機中的一個瀏覽器指令檢索一個特定的視訊(由URL標識)時,CDN必須截獲該請求,以便能夠確定此時是混合用於該客戶的CDN伺服器叢集以及將客戶的請求重定向到該叢集的某臺伺服器
  • 叢集選擇策略
    • 任何CDN部署,其核心是叢集選擇策略(cluster selection strategy),即動態地將客戶定向到CDN中伺服器叢集或資料中心的機制。
    • 常見策略:
      • 週期性實時測量;IP任播(客戶與CDN伺服器匹配)

網路安全

密碼學基礎

  • 對稱金鑰密碼機制
    • 對稱金鑰系統(symmetric key system) 雙方金鑰是相同的並且是祕密的
    • 塊密碼 將要加密的報文處理成k位元的塊
      • DES(Data Encrypiton Standard) 資料加密標準
      • AES(Advanced Encryption Standard) 高階加密標準
  • 公開金鑰系統
    • 公開金鑰系統(public key system) 使用一對金鑰:一個金鑰為雙方都知道,另一個金鑰只有一方知道
    • RSA演算法(Ron、Adi、Leonard三個人名)
      • 大數分解和素性檢測
  • 密碼雜湊函式
    • MD5雜湊演算法
      • 填充->新增->初始化累加器->迴圈
    • SHA-1(Security Hash Algorithm)
  • SSL
    • SSL(Secure Socket Layer) 安全套接字層
    • SSL握手
      • 1)客戶傳送它支援的密碼演算法的列表,連通一個客戶的不重數
      • 2)從該列表中伺服器選擇一種對稱演算法,一種公鑰演算法和一種MAC演算法,並把選擇以及證書和一個伺服器不重數返回給客戶
      • 3)客戶驗證該證書,提取伺服器公鑰,生成一個前主金鑰(Pre-Master Secret),用伺服器的公鑰加密該前主金鑰,並將加密的PMS傳送給伺服器
      • 4)使用相同的金鑰匯出函式,客戶和伺服器獨立地從PMS和不重數中計算主金鑰(Master Secret),將該MS切片申城兩個密碼和兩個MAC金鑰
      • 5)客戶傳送所有握手報文的一個MAC
      • 6)伺服器傳送所有握手報文的一個MAC

相關文章