一、代理服务器
- 代理服务器: 作为客户端和服务器通信时的中间人, 转发客户端和服务器之间的信息
- 特点
- 本身不生产内容
- 处于中间位置转发上下游的请求和响应
- 面向下游的客户端:它是服务器
- 面向上游的服务器:它是客户端
- 上图是客户端和服务器之间的通信过程, 在整个过程中, 客户端与服务器不会直接通信
- ① 客户端将请求发送给代理服务器
- ② 代理服务器将请求发送给服务器
- ③ 服务器将响应发送给代理服务器
- ④ 代理服务器将响应发送给客户端
1、正向代理、反向代理
- 正向代理: 代理的对象是客户端
- 反向代理: 代理的对象是服务器
2、正向代理 - 作用
- 隐藏客户端身份
- 服务器只知道代理服务器的IP地址, 但并不知道客户端的IP地址
- 绕过防火墙
- 因为存在
防火墙
,客户端
无法直接发送请求到服务器
代理服务器
不受防火墙
控制, 可以访问到服务器
客户端
可以访问到代理服务器
客户端
可以先将请求发送给代理服务器
, 然后代理服务器
在发送给服务器
- 因为存在
- Intenet访问控制
- 路由器可以设置哪一台电脑能够将信息发送到互联网
- 例如: 路由器设置A、B、C的信息都无法通过, 只有D的信息可以通过
- 此时, 可以让D作为代理服务器, A、B、C先将信息发送给D, 然后D在发送到互联网
- 过滤数据
- 例如: 客户端访问一个网站, 通过代理服务器发送到目标服务器
- 但是这个网站返回了不健康的信息
- 此时代理服务器判断信息不健康, 就不在发送回客户端, 可以做一层拦截操作
- ......
- 一些免费的正向代理
3、反向代理 - 作用
- 负载均衡
- 分摊服务器压力, 将请求转发给不同的服务器处理
- 安全防护
- 可以防止部分的流量攻击, 过滤异常数据, 只让正常数据通过
- 隐藏服务器身份: 客户端只和代理服务器接触, 不能与服务器直接接触
4、抓包工具原理
- Fiddler、Charles等抓包工具的原理: 在客户端启动正向代理服务器
- 需要注意的是
- Wireshark的原理是:通过底层驱动,拦截网卡上流过的数据
5、代理服务器 - 相关的头部字段
- Via: 追加经过的每一台代理服务器的主机名(或域名)
- X-Forwarded-For:追加请求方的IP地址
- X-Real-IP:客户端的真实IP地址
- ①
- Via: proxy1
- X-Forwarded-For: 14.14.14.14
- X-Real-IP: 14.14.14.14
- ②
- Via: proxy1, proxy2
- X-Forwarded-For: 14.14.14.14, 220.11.11.11
- X-Real-IP: 14.14.14.14
- ③
- Via: proxy2
- ④
- Via: proxy2, proxy1
二、CDN
- CDN(Content Delivery Network或Content Distribution Network), 译为: 内容分发网络
- 利用最靠近每位用户的服务器
- 更快更可靠地将音乐、图片、视频等资源文件(一般是静态资源)传递给用户
- 当客户端直接访问服务器时, 因为距离问题, 偏远地区的客户端访问速度会很慢, 并且当大量计算机访问服务器时, 也会给服务器造成压力
- 现在使用CDN服务器, 客户端不在直接连接源服务器, 而是连接CDN服务器, 这样距离近访问速度快
- 同时客户端的流量分散, 服务器的压力也会减轻
- CDN运营商在全国、乃至全球的各个大枢纽城市都建立了机房
- 部署了大量拥有高存储高带宽的节点, 构建了一个跨运营商、跨地域的专用网络
- 内容所有者向CDN运营商支付费用, CDN将其内容交付给最终用户
1、使用CDN之前
- 使用CDN之前, 计算机访问网站, 只要先获取网站的IP地址, 然后访问服务器即可
- ①
客户端
给DNS服务器
发送信息, 请求网站的IP地址
- ②
DNS服务器
给客户端
返回网站的IP地址
- ③
客户端
使用网站的IP地址
访问网站服务器
- ④
网站服务器
给客户端
返回响应信息
- ①
2、使用CDN之后
- 使用CND之后, 计算机访问网站需要先获取CND全局服务器的IP地址, 然后根据CDN的IP获取区域CDN的IP地址, 然后才能访问区域CND的服务器
- ①
客户端
发送网站的域名给DNS服务器
- ②
DNS服务器
将域名发送给CDN-DNS服务器
- ③
CND-DNS服务器
返回给DNS服务器
网站IP所在的CDN全局负载均衡系统
的IP地址
- ④
DNS服务器
将网站IP
所在的CDN全局负载均衡系统
的IP地址
返回给客户端
- ⑤ 客户端拿到
CDN全局负载均衡系统
的IP地址
后, 给CDN全局负载均衡系统
发送信息 - ⑥
CDN全局负载均衡系统
再给CDN区域负载均衡系统
发送信息 - ⑦
CDN区域负载均衡系统
查找距离客户端
最近的CDN服务器
的IP地址
, 返回给CDN全局负载均衡系统
- ⑧
CDN全局负载均衡系统
将距离客户端
最近的CDN服务器
的IP地址
发送给客户端
- ⑨
客户端
拿到距离最近的CDN服务器
的IP地址
后, 访问最近的CDN服务器
- ⑩
CDN服务器
如果缓存了网站数据, 会直接进入⑫, 否则去网站的源服务器
获取网站数据 - ⑪
网站的源服务器
将网站数据返回给CDN服务器
,CDN服务器
缓存网站数据 - ⑫
CDN服务器
返回网站数据给客户端
- ①
- 当CDN中没有网站的缓存时, 会去网站的源服务器获取网站相关数据, 为了减轻压力, CDN会分为多个节点
- 整个CDN传输的逻辑图如下