前端須要瞭解的計算機網絡知識

前端須要瞭解的計算機網絡知識

概述

  • 七層網路協議
    • 物理層 -> 數據鏈路層 -> 網絡層 -> 傳輸層 -> 會話層 -> 表示層 -> 應用層
  • 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緩存
    • 強制緩存html

      • 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
相關文章
相關標籤/搜索