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相關的各種概念
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協議棧
- 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"
- 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文件 -> 非權威域名服務器 -> 根域名服務器 -> 頂級域名服務器 -> 二級域名服務器 -> 權威域名服務器。