[HTTP協議]入門篇

http的前世今生

1. 史前時期

  • 20世紀60年代,美國國防部高等研究計劃署ARPA建立ARPA網,四個分佈在各地的節點
  • 20世紀70年代,TCP/IP協議產生並流行

2. 創世紀

1989年,Tim Berners-Lee在論文中提出3個關鍵技術——URI、HTML、HTTP,http誕生

3. 從產生到發展

a. 20世紀90年代初,HTTP/0.9,結構簡單,純文本,只允許[GET]操作,響應後關閉連接
b. 1996年,HTTP/1.0形式上和現在的HTTP差距不大,但只是參考文檔,當時意義不大。RFC 1945

  • 增加了HEAD、POST等新方法
  • 增加響應狀態碼,標記可能的錯誤原因
  • 引入了協議版本號概念
  • 引入了http Header的概念
  • 傳輸的數據不再僅限於文本

c. 1995年的"瀏覽器大戰”結束後,99年HTTP/1.1發佈RFC 2616,小幅修改,但是“正式的標準”。目前主力

  • 增加了PUT、DELETE等新方法
  • 增加了緩存管理和控制
  • 明確了連接管理、允許持久連接
  • 允許響應數據分塊chunked,利於傳輸大文件
  • 強制要求Host頭,讓互聯網主機託管成爲可能

d. 2015年,基於Google的SPDY協議的HTTP/2.0誕生,目前普及率較低RFC 7540

  • 二進制協議,不再是純文本【安全】
  • 可發起多個請求,廢棄了1.1的管道【寬帶】
  • 使用專用算法壓縮頭部,減少數據傳輸量【寬帶】
  • 允許服務器主動向客戶端推送數據【移動】
  • 增加了安全性,“事實上”要求加密通信【安全】

e. 未來的發展方向,基於Google的QUIC協議的HTTP/3.0

HTTP是什麼

HTTP(HyperText Transfer Protocol):超文本傳輸協議
1. 協議:
a. 兩個及以上參與者【協】
b. 對參與者的一種行爲約定和規範【議】

2. 傳輸協議:
a. HTTP協議是一個“雙向協議”——請求方&&響應方/應答方
b. 數據傳輸允許中間“中轉”或“接力”

3. 超文本:

  • 文本:簡單的字符文字 -->圖片、音頻、視頻、甚至是壓縮包
  • 超文本:文字、圖片、音頻等的混合體,含有“超鏈接”,能夠實現跳轉,複雜的非線性、網狀的結構關係

HTTP:一個在計算機世界裏,專門在兩點之間傳輸文字、圖片、音頻、視頻等超文本數據的約定和規範

  • HTTP不存在“單獨的實體”,與應用程序、操作系統、Web服務器密切相關,在他們之前的通信過程中動態存在
  • Internet上的協議:http/https/ftp/smtp/pop3等
  • HTTP != HTML
  • HTTP通常跑在TCP/IP協議棧上,依靠IP協議實現尋址和路由、TCP協議實現可靠數據傳輸、DSN協議實現域名查找、SSL/TLS協議實現安全通信。此外,WebSocket、HTTPDNS等協議一欄與HTTP。

與HTTP相關的各種概念

來自極客時間【透析HTTP協議】
1. 網絡世界

  • 局域網 / 廣域網 / 因特網 [FTP/BT/IMAP-POP3/MagNet] / 萬維網[www]
  • 萬維網——基於HTTP協議,傳輸HTML等超文本資源
  • 互聯網:90%被萬維網/HTTP協議覆蓋;
  • 互聯網還包括常用的電子郵件、BT 和 Magnet 點對點下載、FTP 文件下載、SSH 安全登錄、各種即時通信服務等等,它們需要用各自的專有協議來訪問。

2. 瀏覽器

  • Web Browser:檢索、查看互聯網上網頁資源的應用程序
  • 本質上是HTTP協議中的請求方,獲取資源
  • 在HTTP協議中,爲User Agent,作爲訪問者的代理髮起HTTP請求。客戶端

3. Web服務器

  • web Server:HTTP協議中響應請求的主體,把控着絕大多數網絡資源
  • 軟件 && 硬件
  • Apache[老牌,功能完善、相關資料多、學習門檻低] && Nginx[後起之秀,高性能、高穩定、易擴展]

4. CDN

  • Conetnt Delivery network:內容分發網絡
  • 應用HTTP協議的緩存和代理技術,代替源站響應客戶端請求
  • 緩存源站數據,在“半路”獲取響應,大幅度縮短響應時間

5. 爬蟲

  • Crawler:可自動訪問Web資源的應用程序
  • 爬蟲的數據大都由各大搜索引擎放出來的,抓取網頁存入龐大的數據庫,再建立關鍵字索引,在搜索引擎中快速搜索互聯網角落裏的頁面
  • 過度消耗網絡資源,佔用服務器和帶寬,影響網站對真實數據的分析,甚至導致敏感信息的泄露
  • “爬蟲”與“反爬蟲”用到的基本技術:HTTP、HTML

6. HTML / WebService/WAF

  • HTML:HTTP協議傳輸的主要內容之一
  • Web Service:基於Web的服務架構技術,運行於內網或外網
  • WAF:網絡應用防火牆,專門監測HTTP流量

與HTTP相關的技術

極客時間
1. TCP/IP

  • 一系列網絡通信協議的統稱:核心是TCP和IP協議,其餘還有UDP、ICMP、ARP等,構成協議棧
  • 協議棧:應用層<- 傳輸層TCP <- 網際層IP <- 鏈路層
  • IP:Internet Protocol主要解決尋址和路由問題,以及如何在兩點間傳送數據包
  • TCP:Transmission Control Protocol位於IP協議之上,基於IP協議提供可靠地字節流形式的通信
  • 可靠——保證數據不丟失;字節流——保證數據完整性
  • HTTP over TCP/IP

2. DNS

  • Domain Name System:用有意義的名字作爲IP地址的等價替代
  • DNS中Domain Name又稱爲Host,更好地標記不同國家或組織的主機,設計有層次的結構
  • 域名解析:HTTP使用TCP/IP協議通信,需要使用IP協議,所以需要把域名做一個轉換,映射到他的真實地址
  • 爲了方便訪問互聯網上的Web服務器,通常會使用DNS來定位或標記主機名

3. URI/URL

  • 定位主機上衆多的文本、圖片、頁面
  • Uniform Resource Identifier:統一資源標識符,唯一標識互聯網資源
  • Uniform Resource Locator:統一資源定位符 => 網址
  • URI的三個基本構成部分:
https://mp.csdn.net/mdeditor/95049262
a. 協議名protocol:訪問資源應當使用的協議。'http'
b. 主機名host:互聯網上主機的標記,可以是域名或IP地址。'mp.csdn.net'
c. 路徑path:資源在主機上的位置,使用'/'分隔多級目錄。'/mdeditor/95049262'

4. HTTPS

  • HTTP over SSL/TSL:加密通信
  • Secure Socket Layer發展到3.0時被更名爲Transport Layer Security

5. 代理
Proxy:請求方和響應方的中轉站,既可轉發客戶端的請求,又可轉發響應方的應答

  • 負載均衡:將訪問請求均勻分散到多臺機器,實現訪問集羣化
  • 內容緩存:暫存上下行數據,減輕後端壓力
  • 安全防護:匿名IP,使用WAF等工具抵禦網絡攻擊,保護被代理的機器
  • 數據處理:提供壓縮、加密等額外的功能

TCP/IP協議棧

  1. TCP/IP 網絡分層模型
  • Link Layer:在以太網、WIFI等底層網絡發送原始數據包。使用MAC地址標記網絡設備。“幀frame”
  • Internet Layer:在鏈路層基礎上,用IP地址代替Mac地址連接衆多局域網、廣域網。“包package”
  • Transport Layer:保證兩點之間可靠傳輸。TCP/UDP[無連接,分散小數據包,順序發亂序收]。“段segment”
  • Application Layer:面向具體應用的協議。eg:telnet、SSH、FTP、SMTP等。HTTP的傳輸單位是"消息或報文message"
  1. OSI網絡分層模型
  • Physicql Layer:物理層,網絡的物理形式——電纜、網卡、光纖、集線器等 【無對應】
  • Data Link Layer:數據鏈路層 【== TCP/IP中Link Layer】
  • Network Layer:網絡層 【== TCP/IP中Internet Layer】
  • Transport Layer:傳輸層 【== TCP/IP中Transport Layer】
  • Session Layer:會話層,維護網絡中的連接狀態,保持會話和同步【屬於 TCP/IP中Application Layer】
  • Presentation Layer:表示層,把數據轉換爲合適、可理解的語義或語法 【屬於 TCP/IP中Application Layer】
  • Application Layer:應用層 【屬於 TCP/IP中Application Layer】

在這裏插入圖片描述
域名解析過程:
瀏覽器緩存 -> 操作系統dns cache -> etc/hosts文件 -> 非權威域名服務器 -> 根域名服務器 -> 頂級域名服務器 -> 二級域名服務器 -> 權威域名服務器。

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