http协议原理解析系列四_web代理

前言:

在web中,代理是一种客户端和web服务器之间的一种实体。它既具有客户端的发起请求功能,也可以像web服务器一样返回响应。代理和网关之间的主要区别是代理只能转发同一种协议,而网关可以转发多种协议。

代理的主要分类和用途:

1)CDN缓存代理。

2)访问控制代理。

3)反向映射代理。

4)缓存代理。

5)安全防御代理。

6)透明代理(拦截代理)。

7)正向代理。

代理的功能其实和代理部署的位置有关,如部署在出口位置,可以作为正向代理。部署在服务器的边缘,可以作为反向代理。

客户端代理的设置方法:

1)手工设置。以chrome为例,点击设置->代理->高级设置之后,设置代理IP和端口。

2)自动配置。这里需要依靠一个命名为PAC的文件来自动寻找代理IP地址和端口。

3)代理的自动发现WPAD。这里也是根据浏览器的逐级上升策略来发现一个PAC文件获取代理IP和端口。

代理存在的情况下,客户端发送报文的区别:

1)客户端发送给代理的起始URI是完整的,发给服务器的是部分URI。如代理:GET www.baidu.com/index.html。服务器: GET /index.html。因为代理需要转发请求给服务器,如果请求没有具体IP地址、URI方案和端口,那么转发就很难道服务器。

一般情况下,显示配置的代理,客户端在发送请求,必须发送完整URI,其他情况下,都可以发送部分URL,但是现在http协议要求使用host首部来包含方案、IP地址和端口。

url解析:

1)在存在显示代理时,不对url进行自动扩展和发现,直接发送给代理,由代理进行解析。

2)存在拦截代理或者是没有显示配置代理时,客户端会对用户输入的url进行自动扩展和解析。

http报文追踪:

使用的场景:

当客户端向服务器发送请求的过程中,我们想知道中间经过那些代理,可以对报文进行追踪,方便调试不同的代 理。两种方法:

1)via首部:via首部可以记录经过的代理协议和地址。

2)via的组成:协议名,协议版本,节点名以及节点注释,

3)via的请求和响应的路径是相反的。

1)trace方法:跟踪请求报文传输进过的代理链,在这些代理中,代理是怎样进行报文修改的。

2)Max—Forwards 来限制请求报文的最大传递层数,为0时,该设备必须发送响应报文给客户端。

代理的认证机制:

当我们每次登陆www.linuxidc.com这个网站时,都会进入代理认证阶段。但是需要将代理认证和特定的路标设备联 系起来。代理的处理机制:

1)当代理接收到位置方法的报文时,代理一般不会返回错误响应报文,而是使用上方宝剑,直接转发,不管报文中存在病毒还是黒链等。

2) 为了防止客户端发送未知的方法请求报文,可以在初始发送options报文,优先获取服务器支持的功能或者是特定资源支持的可用特性。

一般在响应报文中通过首部字段allow来决定。