一 復習與目標
1 復習
- 緩存目的:減輕服務器壓力,不重復請求相同的內容
- 緩存位置:瀏覽器或中間代理
- 相關狀態碼:200或403
- 相關首部:
- etag和since-none-match、last-modified和if-modified-since
- cache-control:
- private public
- max-age s-maxage
- must-revalidate proxy-revalidate
- 緩存的處理流程(中間代理和瀏覽器)
2 目標
- 緩存:代理服務器或者瀏覽器本地磁盤內保存的資源副本。
- 緩存服務器是代理服務器的一種。
- 與HTTP協作的Web服務器的角色:代理 網關 隧道。
二 概述
1 代理
代理是一種有轉發功能的應用程序,它扮演了位於服務器和客戶端“中間人”的角色,接收由客戶端發送的請求並轉發給服務器,同時也接收服務器返回的響應並轉發給客戶端。(相同協議,如:HTTP,版本可以不同)
2 網關
網關是轉發其他服務器通信數據的服務器,接收從客戶端發送來的請求時,它就像自己擁有資源的源服務器一樣對請求進行處理。有時客戶端可能都不會察覺,自己的通信目標是一個網關。(不同協議,如:客戶端 --HTTP---> 網關 --POP---> 郵箱服務器)
3 隧道
隧道是在相隔甚遠的客戶端和服務器兩者之間進行中轉,並保持雙方通信連接的應用程序。(HTTP應用程序發送非HTTP的流量)
注:上面的描述還是很抽象,后面講解完就清楚了。
三 代理
1 代理的作用
- 過濾器:過濾掉某些IP的訪問
- 文檔訪問控制:限制某些文檔的訪問
- 安全防火牆:阻止SQL注入、阻止OS注入等(Nginx + lua)
- Web緩存:響應存入本地,不需要重復獲取。
- 反向代理:接收真實請求,轉發給內部網絡上的服務器。
- 負載均衡:根據網絡流量狀況把請求導向給特定的服務器。
- 轉碼器:修改內容的主體格式,如:傳輸gif時,轉換成jpeg。
- 匿名者:刪除身份特征(如:cookie、Ip),從而提供高度私密性。
2 代理主要內容
(1)代理服務器部署
- 正向代理(出口代理):客戶端 -> 內網 -> 代理 -> 外網 -> 服務器,如:VPN
- 反向代理(入口代理):客戶端 -> 外網 -> 代理 -> 內網 -> 服務器,如:防火牆
- 網絡交換代理:客戶端 -> 外網 -> 代理 -> 外網 -> 服務器,如:緩存服務器
(2)層次結構
- 多級代理,如:客戶端 -> 代理1 -> 代理2 -> 代理3 -> 服務器
(3)請求如何到達代理?
- 客戶端配置(如:科學上網)
- 修改網絡:攔截代理
- DNS修改:域名 -> 服務器IP 改為 域名 -> 代理IP ->服務器IP
- Web服務器修改:響應重定向命令,即:客戶端 -> 服務器 --305-> 客戶端 -> 代理
3 追蹤報文:via首部
- via格式:(協議名) (協議版本) 節點名 (節點注釋),括號內為可選項
- 節點名:處於隱私的原因,可被隱藏,修改為假名替換
四 網關
1 常見的網關
- 協議網關:如客戶端 --HTTP--> 網關 --FTP--> ftp服務器
- 資源網關:CGI(通用網關接口)
2 協議網關
(1)HTTP/*網關:HTTP ->其他協議的網關
注:常見的有HTTP/TCP,即外部使用Rest API,內部使用RPC(可為TCP)
(2)HTTPS/HTTP網關:HTTPS->HTTP的網關
- 外網使用HTTPS保證安全,內部使用HTTP保證高效。
3 資源網關:CGI
- CGI是一個標准接口集,Web服務器用它來裝載程序以響應特定URL的HTTP請求,並收集程序的輸出數據,將其放在HTTP響應中回送。
- 起初CGI為每個請求建立一個進程,處理完成后銷毀,后面這個開銷太大,出現了快速CGI。
- 快速CGI啟動一個守護進程,並且使用開銷更小的線程來代替進程去處理請求。
五 隧道
1 概述
- 隧道使得HTTP應用程序可以發送非HTTP流量
- 用於穿透只允許Web流量通過的防火牆
2 建立連接:參考RFC2817
# 請求報文
CONNECT server.example.com:80 HTTP/1.1
Host: server.example.com:80
# 響應報文
HTTP1.1 200 Connection Established
3 SSL隧道
- 代理沒有實際服務器的私鑰(到時講解SSL就知道了),無法建立SSL/TLS連接
- 所以代理不再作為中間人,即不再改寫請求內容,而是將數據原樣傳輸給下一層代理(這也說明了SSL能夠防止報文被篡改)。
參考:
- RFC2616 RFC2817
- https://www.zhihu.com/question/21955083
- 《圖解HTTP》
- 《HTTP權威指南》