HTTP学习-代理

WEB结构组件

(也可以认为是WEB应用程序)
代理:位于客户端和服务器之间的HTTP中间实体(中间人)。
作用:WEB安全 应用集成 性能优化的重要组成模块。
缓存:HTTP的仓库(其实也可能是一个代理服务器,或浏览器缓存),使常用页面的副本可以保存在里客户端更近的地方。
特殊的HTTP代理服务器,可以经过代理传送常用文档复制保存起来。
网关:连接其他应用程序的 特殊WEB服务器
作用: 一般是作为其他服务器的中间实体使用,用于将HTTP流量转为其他协议的。 网关接受请求的时候,对客户端来说就好象自己是资源的源服务器一样!
隧道:对HTTP通信报文进行盲转发的特殊代理
应该说是:建立起来后,就会在两条连接之间对原始数据进行盲转发的HTTP应用程序。
Agent代理:发起HTTP请求的WEB客户端
代表用户发起HTTP请求的客户端程序。 所有发布WEB请求的应用程序都是HTTP Agent代理。 WEB浏览器就是一种!
网络蜘蛛 WEB机器人 都是自动代理~


代理

WEB代理服务器是网络的中间实体。 代理位于服务器和客户端之间,扮演“中间人”的角色,在各端点之间传送HTTP报文。
用途: 共享网络,访问代理(翻墙),突破限制,防止攻击,提高速度,防火墙等等。
因为代理服务器和你的电脑是可以连接的,你不能直接访问外国一个网站,所以代理服务器和你相对于国外这个网站就是一个局域网!

WEB中间实体
web代理:代表客户端完成事务处理的中间人。如果没有WEB代理,HTTP客户端直接与HTTP服务器进行对话。
HTTP代理服务器
即是web服务器又是web客户端。 HTTP客户端会向代理发送请求报文。代理服务器必须正确处理请求和连接,然后返回响应。 代理自身要向服务器发送请求,这样,其行为就必须像正确的HTTP客户端一样,要发送请求并接受响应

代理与网关

代理连接的是两个或多个相同协议的应用程序,而网关连接的则是两个或多个使用不同协议的端点。 网关扮演的是“协议转换器”的角色,即使客户和服务端不同的协议。 客户端也可以通过过它完成与服务器之间的事务处理。
其实代理和网管之间区别很模糊,由于浏览器和服务器实现的是不同版本的HTTP时,代理也会做一些协议转换的工作。

为什么使用代理
他们可以改善安全性,提高性能,节省流量。 实现各种时髦有用的功能。
代理服务器可以接触所有HTTP流量:
儿童过滤器:过滤成人内容。
文档访问控制:在大量的web服务器和web资源之间实现统一的访问控制策略,创建审核跟踪机制。

集中式访问控制代理:访问策略
例如: 客户端A可以无限制访问服务器A的新闻页面
客户端B可以无限制访问因特网。
客户端C访问服务器B之前要输入口令。

防火墙:
使用代理服务器来提高安全性。代理服务器会在网络中的单一安全节点上限制哪些应用层协议的数据可以流入或流出一个组织。还可一提供用来消除病毒的Web和Email代理使用的挂钩程序。对流量进行检查!

WEB缓存:
维护了常用文档的本地副本,并将他们按需提供,以减少缓慢且昂贵的因特网通信。

反向代理:
代理假扮WEB服务器, 代理接受发给web服务器的真实请求,但与真正的web服务器不同的是,他们可以发起与其他服务器的通信,以便按需定位所请求的内容。
可以作为跨域的一个手段,还有提高访问慢速web服务器上公共内容的性能。
用法:通常部署在网络边缘,在web服务器之前,而且通常 会直接用web服务器的名字IP地址,所有的请求都会发给代理,而不是服务器。

正向代理中代理是客户端指定,选定的,它们同属于一个LAN(局域网)。对server是透明的。
反向代理中,代理是。 proxy和server是同一个LAN(局域网)
其实就是左右结构互换了一下,都是代为收发请求和响应!

内容路由器
根据流量情况和内容类型将请求导向特定的web服务器。
转码器
代理服务器在将内容发送给客户端之前,可以修改内容的主体格式。
可以把网站的语言进行转换!

匿名者
主动从HTTP报文中删除身份特性。客户端IP地址 From首部,Referer首部,
cookie uri会话ID。 从而提供高度的私密性和匿名性。
对用户报文进行修改,删除FROM REFERER COOKIE等。

代理层次结构
报文从一个代理传给另一个代理。Proxy层次结构中代理服务器被赋予了父和子的关系。下一个入口代理被称为父代理,下一个出口代理称为子代理。
代理层次结构的内容路由
代理服务器可以根据众多因素,将报文转发给一个不断变化的代理服务器和原始服务器集。

代理获取流量
客户端修改,浏览器可以支持手工或自动的代理配置。 客户端会有意将HTTP请求发送给代理而不是服务器。
修改网络
拦截代理,对请求流量拦截并导入一个代理。网络基础设施可以做到。
修改DNS命令空间
修改DNS的命名空间,手工编辑DNS名称列表,或者特殊的动态DNS服务器根据需要来确定适当的代理或服务器。
修改web服务器
将某些web服务器配置为向客户端发送一条HTTP重定向命令,将客户端请求重定向到一个代理去。 !!

客户端代理配置:手工配置
PAC文件是一些小型JS程序,可以在运行过程中计算代理设置,一种动态的代理配置方案!
在自动配置上提供一个URI,浏览器会从这个URI获取PAC文件,并用JS逻辑为每次访问计算恰当的代理服务器! application/x-ns-proxy-autoconfig

代理URI与服务器URI的不同
客户端向web服务器发送请求时,请求行中只包含部分URI 没有方案 主机 端口。
如:GET /index.html HTTP/1.0
User-agent:SuperBrowser v1.3
但当向代理发送的时候:
GET http://www.baidu.com/index.html HTTP/1.0
User-agent:SuperBrowser v1.3
因为我们的代理需要知道目标服务器的名称,完整的URI方案才能建立自己与真正服务器的连接。
而客户端与真实服务器的连接是不需要的,避免发送冗余信息.

虚拟主机web服务器
虚拟主机web服务器会在很多web站点间共享一个物理web服务器。
虚拟主机web服务器要求使用Host首部来承载主机和端口信息。

拦截代理
客户端不总是知道它是在和代理对话还是服务器。有些代理对客户端不可见的。
而且客户端的流量也可能经过替代物或者拦截代理!
它拦截了从客户端到服务器的流量,收到发送给WEB服务器的部分URI。拦截客户端到服务器的请求并提供一个缓存响应。

反向代理
是一个用来取代原始服务器的代理服务器,通常会假扮服务器的主机名和IP地址
它收到web服务器请求,可能会向真正的服务器提供缓存的响应或者代理请求

代理既可以处理代理请求,也可以处理服务器请求
通用的代理服务器应该支持完整URI和部分URI
规则:
如果是完整的URI,则代理使用这个URI
如果是**部分**URI,但是有HOST首部,应该用HOST首部来确定原始服务器名和端口号
如果是部分URI,没HOST。就要用:

  • 如果代理是代表原始服务器的替代物,可以用真实服务器的地址和端口号配置代理
  • 如果流量被拦截了,拦截者可以提供原始IP和端口,代理可以使用。
  • 失败了就必须返回一条错误的报文。

URI的客户端自动扩展和主机名解析
根据是否有代理,浏览器对请求URI的解析不同。没有代理时,浏览器会获取你输入的URI,尝试寻找相应的IP地址。
如果没有找到主机,浏览器会尝试提供某种主机名的 “”扩展

  1. 问题A,浏览器自动补全。 如自动加入www前缀
  2. 浏览器甚至会将未解析出来的URI传递给第三方站点。
  3. DNS配置允许用户只输入主机名前缀。

没有代理时URI解析
输入网址URI 如”oreily”
- 浏览器通过DNS搜索主机oreilly
- 失败未知主机名 or 下一步
- 浏览器通过DNS搜索主机”www,oreily.com”’
- 成功!取回IP地址。
- 浏览器尝试连接到一个IP地址上去,直到成功建立连接
- 成功,连接建立
- 浏览器发送HTTP请求
- 浏览器发送HTTP响应

显式代理时的URI解析
URI会被直接发送给代理,浏览器不再执行所有这些扩展功能。
浏览器不对不完整的主机名进行自动扩展。

有拦截代理时URI的解析
对浏览器来说,是没有代理的。 浏览器还是会自动扩展主机名直到DNS成功为止。 重要区别: 客户端如果成功解析了主机名,就会有一张IP表,有些IP地址可能已经停用了,客户端会尝试连接每个IP地址。
但对拦截代理来说,第一次连接请求就会被代理服务器拦截成功,不会连接到原始服务器上。 客户端却认为是和原始服务器对话。
解决:
代理可以通过解析HOST 首部的主机名
或对IP地址反向DNS查找尝试其他IP地址。 所以这就依赖代理的容错机制!
结论:
对拦截和显式代理来说,DNS解析到已停用服务器时,提供容错机制是很重要的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值