网络协议基础学习(十一): 代理服务器、CDN (了解)

500 阅读5分钟

一、代理服务器

  • 代理服务器: 作为客户端和服务器通信时的中间人, 转发客户端和服务器之间的信息
  • 特点
    • 本身不生产内容
    • 处于中间位置转发上下游的请求和响应
      • 面向下游的客户端:它是服务器
      • 面向上游的服务器:它是客户端

image.png

  • 上图是客户端和服务器之间的通信过程, 在整个过程中, 客户端与服务器不会直接通信
    • ① 客户端将请求发送给代理服务器
    • ② 代理服务器将请求发送给服务器
    • ③ 服务器将响应发送给代理服务器
    • ④ 代理服务器将响应发送给客户端

1、正向代理、反向代理

  • 正向代理: 代理的对象是客户端

image.png

  • 反向代理: 代理的对象是服务器

image.png

2、正向代理 - 作用

  • 隐藏客户端身份
    • 服务器只知道代理服务器的IP地址, 但并不知道客户端的IP地址

image.png

  • 绕过防火墙
    • 因为存在防火墙, 客户端无法直接发送请求到服务器
    • 代理服务器不受防火墙控制, 可以访问到服务器
    • 客户端可以访问到代理服务器
    • 客户端可以先将请求发送给代理服务器, 然后代理服务器在发送给服务器

image.png

  • Intenet访问控制
    • 路由器可以设置哪一台电脑能够将信息发送到互联网
    • 例如: 路由器设置A、B、C的信息都无法通过, 只有D的信息可以通过
    • 此时, 可以让D作为代理服务器, A、B、C先将信息发送给D, 然后D在发送到互联网

image.png

  • 过滤数据
    • 例如: 客户端访问一个网站, 通过代理服务器发送到目标服务器
    • 但是这个网站返回了不健康的信息
    • 此时代理服务器判断信息不健康, 就不在发送回客户端, 可以做一层拦截操作

image.png

3、反向代理 - 作用

  • 负载均衡
    • 分摊服务器压力, 将请求转发给不同的服务器处理

image.png

  • 安全防护
    • 可以防止部分的流量攻击, 过滤异常数据, 只让正常数据通过

image.png

  • 隐藏服务器身份: 客户端只和代理服务器接触, 不能与服务器直接接触

4、抓包工具原理

  • Fiddler、Charles等抓包工具的原理: 在客户端启动正向代理服务器

image.png

  • 需要注意的是
    • Wireshark的原理是:通过底层驱动,拦截网卡上流过的数据

5、代理服务器 - 相关的头部字段

  • Via: 追加经过的每一台代理服务器的主机名(或域名)
  • X-Forwarded-For:追加请求方的IP地址
  • X-Real-IP:客户端的真实IP地址

image.png

    • 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), 译为: 内容分发网络
    • 利用最靠近每位用户的服务器
    • 更快更可靠地将音乐、图片、视频等资源文件(一般是静态资源)传递给用户
  • 当客户端直接访问服务器时, 因为距离问题, 偏远地区的客户端访问速度会很慢, 并且当大量计算机访问服务器时, 也会给服务器造成压力

image.png

  • 现在使用CDN服务器, 客户端不在直接连接源服务器, 而是连接CDN服务器, 这样距离近访问速度快
  • 同时客户端的流量分散, 服务器的压力也会减轻

image.png

  • CDN运营商在全国、乃至全球的各个大枢纽城市都建立了机房
    • 部署了大量拥有高存储高带宽的节点, 构建了一个跨运营商、跨地域的专用网络
  • 内容所有者向CDN运营商支付费用, CDN将其内容交付给最终用户

1、使用CDN之前

  • 使用CDN之前, 计算机访问网站, 只要先获取网站的IP地址, 然后访问服务器即可
    • 客户端DNS服务器发送信息, 请求网站的IP地址
    • DNS服务器客户端返回网站的IP地址
    • 客户端使用网站的IP地址访问网站服务器
    • 网站服务器客户端返回响应信息

image.png

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服务器返回网站数据给客户端

image.png

  • 当CDN中没有网站的缓存时, 会去网站的源服务器获取网站相关数据, 为了减轻压力, CDN会分为多个节点

image.png

  • 整个CDN传输的逻辑图如下

image.png