Bo2SS

Bo2SS

9 應用層協議

課程內容#

概述#

網絡應用程序的體系結構主要分為CS 結構P2P 結構

  • 前者是客戶端(Client)/ 服務端(Server)結構,如微信、QQ、遊戲。
  • 後者是端(Peer)到端結構,又叫對等體系結構,如迅雷、百度網盤。
    • 進程通信時,沒有明確的 C/S,發起者即為客戶端,提供服務者即為服務端。

應用程序服務要求包括可靠數據傳輸吞吐量定時(時效)和安全性。不同的應用對網絡服務有不同的要求,如數據可否丟失、帶寬需求、時間敏感性等,所以產生了不同的應用層協議和運輸層協議:

image-20211004202318540

  • 應用層協議定義了交換報文類型、報文語法、字段語義以及發送、響應規則,類似網絡協議的三要素(語法、語義、同步)。
  • 運輸層協議
    • TCP:面向連接的服務,提供可靠的數據傳輸。
    • UDP:不提供必要服務的輕量級運輸服務,不提供可靠的數據傳輸。
  • PS
    • socket 是應用程序與網絡之間的接口,對於運輸層的控制僅限於選擇運輸層協議、設定參數。
    • UDP 可以自己實現可靠的數據傳輸。

WEB 與 HTTP 協議#

WEB 術語:對象、超文本標記語言 HTML、統一資源定位符 URL、WEB 頁面、WEB 瀏覽器、WEB 服務器(httpd、apache、tomcat)
HTTP:超文本傳輸協議

  • HTTP 行為:請求報文、響應報文
  • HTTP 特點
    • 不用擔心數據丟失
    • 無狀態協議,服務器不存儲客戶相關狀態信息
    • HTTP 服務器總是處於打開狀態,有一個固定的 IP
    • 使用 CS 結構
  • 非持續連接和持續連接,又名,短連接和長連接
    • HTTP 屬於短連接,服務器響應了請求後會通知 TCP 斷開連接,所以對於多個對象會重複地連接和斷開。
    • HTTP 請求過程包含 TCP 三次握手,一般在第 3 次握手包含請求,直到接受對應文件。
  • 請求報文
    • image-20211004202326530
    • 請求方法:
      • GET-- 獲取
      • POST-- 提交表單
      • HEAD-- 測試,看通不通,不需要獲取所有數據
      • PUT-- 傳數據到遠端(PUT 是幂等的,但 POST 不是)
      • DELETE-- 刪除遠端數據
    • 首部字段名包含瀏覽器類型等等。
  • 響應報文
    • image-20211004202332272
    • 短語一般是狀態碼的描述。
    • 常見狀態碼及短語:
      • 200 OK
      • 301 Moved Permanently
      • 400 Bad Request
      • 404 Not Found
      • 505 HTTP Version Not Supported
  • 用戶與服務器的交互 ——COOKIE
    • 請求和相應報文中都添加了 COOKIE 首部行
    • 在用戶端由瀏覽器管理相應 COOKIE 文件
    • 在服務端維護一個數據庫
    • image-20211004202337597
    • 一個從來沒有請求過 jd 服務器的客戶主機,在發起請求後,服務器會創建其 COOKIE,並返回給客戶;
    • 等下次下下次再請求 jd 服務器的時候,服務器會根據 COOKIE 返回特定數據。
    • PS:
      • 服務器根據客戶行為會生成一個人物畫像,可以和 COOKIE 綁定。
      • 公司之間可能共享數據庫。
  • WEB 緩存器🌟
    • 又名代理服務器,如 CDN。
    • 情景:海量用戶訪問某一個服務器的數據,流量過大肯定會導致服務器崩潰。
    • 優化過程:瀏覽器先訪問 WEB 緩存器,如果裡面沒有想要的數據,則再往上游找數據,最後返回數據,並將數據存放在 WEB 緩存器裡。
    • 優點:減少對客戶請求的響應時間,減少了數據中心的通信量,改善應用性能。
    • PS:WEB 緩存器會定時向上游服務器請求更新數據。

HTTPS 協議#

HTTPS:具有安全性的 SSL 加密傳輸協議

HTTPS 在 HHTP 通信的中間過程添加 SSL/TLS(加密 / 解密)過程。

HTTPS 特點:

  • 它需要到 CA 申請證書,需要交費;
  • 它是具有安全性的 SSL 加密傳輸協議,而 HTTP 超文本傳輸協議,信息是明文傳輸;
  • 它與 HTTP 使用的是完全不同的連接方式,端口也不一樣,前者是 443,後者是 80。

HTTP/2 協議#

新特性:連接復用。沒有同步的限制,一次可以傳輸多條消息,而不用一來一回。

FTP 協議#

FTP:文件傳輸協議

用戶連接遠程服務器,給用戶展示一個遠程桌面文件夾,用戶可以對其進行操作。

雙連接——FTP 的 TCP 連接:

image-20211004202344951

  • 控制連接:21 端口,長連接;
  • 數據連接:20 端口,短連接。
  • 特點:適用於並發量不高的場景,可以簡化業務實現。

PS:個人用戶用的少,一般服務於局域網。

SMTP、POP3、IMAP 協議#

郵件相關,最早期的互聯網業務

image-20211004202349411

先從用戶 A 的代理,通過 SMTP 連接自己的郵箱服務器,再連線用戶 B 的郵件服務器,最後到達用戶 B 的代理。

  • 郵箱服務器會檢查郵件內容是否合規;
  • SMTP 協議只負責推,最後一步是用戶 B 基於其它協議主動請求拉取

PS:

  • 不是直接與用戶主機通信
  • 底層是基於 TCP

DNS 協議#

將主機名 / 域名轉換為 IP 地址;提供負載均衡服務

  1. 解析域名
  2. 負載均衡:同一個域名根據流量轉換到不同的合適的 IP 地址,主要是用來分流。

集中式 DNS 存在的問題:

  • 單點故障:一個小問題會影響到全局(現在流行微服務,減少各種服務之間的耦合度)
  • 通信容量大
  • 距離遠會導致時延高
  • 維護不易(目前銀行也有這個問題,系統版本低,想遷移卻難以遷移)

DNS 域名系統

  • 根 DNS 服務器,因特網上有 13 個,都不在中國
  • 頂級域 DNS 服務器,簡稱 TLD,如 com、cn
  • 權威 DNS 服務器,如騰訊等 DNS 服務提供商
  • 本地 DNS 服務器,可能有多個,如局域網、學校

DNS 解析過程:

image-20211004202355211

主機到本地 DNS 屬於遞歸式,主機只發一次請求,只有本地 DNS 得到結果,才會返回。

本地 DNS 發起請求屬於迭代式,返回失敗就再次請求,可看圖感受。

DNS 記錄

  • Name:名稱 / 主機 / 別名
  • Value:IP 地址 / 應答地址 / 目標地址
  • Type:記錄的類型
  • TTL:域名 - IP 關係的有效時間,即本地緩存的時間

常見的類型有:

image-20211004202359867

可以嘗試去自己的 DNS 服務平台裡添加 DNS 記錄~

PS:規範主機名的可讀性稍弱,可參考DNS records——CloudFlare

附加知識點#

  • 網絡協議的三要素:語法、語義、同步(有跡可循)
載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。