代理服务器(Proxy Server)
-
特点:
1、本身不生产内容
2、处于中间位置转发上下游的请求和响应
3、面向下游的客户端:它是服务器
4、面向上游的服务器:它是客户端
图解:
客户端发送请求给代理,代理再将请求转发给服务器。服务器将数据发给代理,代理再将数据返回给客户端。
正向代理、反向代理
- 正向代理:代理的对象是客户端,为客户端服务的
- 反向代理:代理的对象是服务器,为服务器服务的
正向代理的作用
-
隐藏客户端身份
服务器只知道代理的设备信息,一些黑客就通过代理服务器做攻击,从而隐藏自己。 -
绕过防火墙(突破访问限制)
遇到无法直接访问的目标服务器,可以通过一台能够访问目标服务器的代理服务器,间接来访问目标服务器。 -
Internet访问控制
路由器可以设置只允许一台主机可以上网,让这台主机作为代理。
其他主机上网必须经过这台代理主机,来间接访问网络。
因此这台代理主机可以判断允许哪些主机可以上网。 -
数据过滤
主机通过代理来访问目标服务器,代理就可以判断哪些数据可以返回给主机,从而达到数据过滤的作用。 -
其他
-
一些免费的正向代理
使用下面的网页提供的ip地址和端口,设置网络代理,理论上可以通过代理服务器访问一些无法访问的网页。
https://ip.jiangxianli.com/
https://www.kuaidaili.com/free/inha/
但是本人用mac电脑亲测无用!!!浏览器会阻止所有使用代理服务器的页面,如果有哪位朋友知道,可以评论区指点一下。
反向代理的作用
-
隐藏服务器身份
客户端只知道代理的身份,不知道服务器真实的身份。 -
安全防护
客户端无法直接访问到服务器,所以服务器要相对安全一些。 -
负载均衡
客户端访问量过大的时候,一台服务器会无法处理这么大的访问。这时候通过一台代理服务器,所有客户端访问代理服务器,代理服务器将消息转发给多台服务器,将压力分摊。虽然代理服务器也承受了很多访问,但是它不需要处理大量的逻辑,只需要转发,所以它能承受的住。
抓包工具的原理
- Fiddler、Charles等抓包工具的原理:在客户端启动了正向代理服务
- Wireshark的原理是:通过底层驱动,拦截网卡上流过的数据
相关的头部信息
- Via: 追加经过的每一 台代理服务器的主机名(或域名)
- X-Forwarded-For: 追加请求方的IP地址
- X-Real-IP: 客户端的真实IP地址
CDN
-
CDN (Content Delivery Network或Content Distribution Network) ,译为:内容分发网络
利用最靠近每位用户的服务器,更快更可靠地将音乐、图片、视频等资源文件(一般是静态资源)传递给用户 -
CDN运营商在全国、乃至全球的各个大枢纽城市都建立了机房
1、部署了大量拥有高存储高带宽的节点,构建了一个跨运营商、跨地域的专用网络
2、内容所有者向CDN运营商支付费用,CDN将其内容交付给最终用户
3、有些大公司也会自己部署CDN
使用CDN前
流程图.png图解:
主机访问一个资源链接,会先到DNS服务器查询资源的服务器地址,拿到地址后就去该地址拿到资源。
使用CDN后
流程图.png图解:
主机访问一个资源链接,会先到DNS服务器查询资源的服务器地址,DNS服务器发现这是个CDN资源就会转到CDN DNS服务器查询CDN全局负载均衡系统地址,查到CDN全局负载均衡系统地址后返回给主机。主机再去访问CDN全局负载均衡系统地址,CDN全局负载均衡系统会查找到CDN区域负载均衡系统,CDN区域负载均衡系统返回给主机一个最近的CDN缓存服务器的地址。主机最后访问CDN缓存服务器地址拿到最近的服务器资源。
- CDN可能有好多层父节点
- 如果主机向分配的边缘节点请求资源,节点没有这个资源,会向父节点请求,如果父节点也没有,会一直向上层节点请求,最终向源站请求。源站再将该资源依次保存到下一层节点,最后一直到主机。
CDN的一些实际应用
在cdn资源地址可以下载一些常用的js三方库,速度会比较快。当然一些框架的官网也会提供CDN的下载地址。
例如h5项目中下载jquery
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
网友评论