• HTTP第八、九章之网关、隧道、web机器人


    网关

    网关(gateway): 资源和应用程序之间的粘合剂。应用程序可以(通过HTTP或其它已定义的接口)请求网关来处理某条请求,网关可以提供一条响应。网关可以向数据库发送查询语句,或者生成动态的内容,像一扇门一样,进去一个请求,出来一个响应。

    网关和代理的区别:

    代理连接的是两个或多个使用相同协议的应用程序,而网关连接的则是两个或多个使用不同协议的端点。网关扮演的是“协议转换器”的角色。
    在这里插入图片描述

    客户端和服务器端网关:

    • Web网关在一侧使用HTTP协议,在另一侧使用另一种协议。
    • <客户端协议>/<服务器端协议>
    • (HTTP/*)服务器端网关:通过HTTP协议 与客户端对话,通过其他协议与服务器通信。
    • (*/HTTP)客户端网关:通过其他协议与客户端对话,通过HTTP协议与服务器通信。

    二、协议网关

    服务器端Web网关(服务器协议转换器)、服务器端安全网关、客户端安全网关以及应用程序服务器。

    2.1(HTTP/*)服务器端Web网关
    客户端发送HTTP请求,服务器Web网关会将该请求转换为其他协议与服务器进行连接。完成获取资源以后,会将对象放在一条HTTP响应中会送给客户端。

    在这里插入图片描述

    2.2(HTTP/HTTPS)服务器端安全网关:
    客户端发送HTTP请求,网关会自动加密来自客户端的请求,然后再发送给服务器。

    在这里插入图片描述

    2.3(HTTPS/HTTP)客户端安全加速器网关
    客户端发送的请求是经过加密的安全的HTTPS流量,通过网关进行解密,再向Web服务器发送普通的HTTP请求。
    这些网关中通常都包含专用的解密硬件,解密效率高于原始服务器,可以减轻原始服务器的负荷。

    在这里插入图片描述

    2.4 资源网关
    应用程序服务器,将目标服务器与网关结合在一个服务器中。应用程序服务器是服务器端网关,与客户端通过HTTP进行通信,并与服务器端的应用程序相连接。
    客户端通过HTTP连接到应用程序服务器,服务器并不回送文件,而是将请求通过网关API发送给应用程序(运行在服务器上)。应用程序将请求资源回送给客户端。

    在这里插入图片描述

    CGI(Common Gateway Interface )——通用网关接口

    第一个流行的应用程序网关 API 就是通用网关接口(Common Gateway Interface, CGI)。CGI 是一个标准接口集,Web服务器可以用它来装载程序以响应对特定 URL 的 HTTP 请求,并收集程序的输出数据,将其放在 HTTP 响应中回送。

     CGI应用程序是独立于服务器的

    URL中出现字符cgi和可能出现的“?”是客户端发现使用了CGI应用程序的唯一线索。

    三、隧道 

    Web隧道 允许用户通过HTTP连接发送非HTTP流量,这样就可以在HTTP附带其它协议数据,也就是说,可以在HTTP连接中嵌入非HTTP流量,非HTTP流量就可以穿过只允许Web流量通过的防火墙了。

    web隧道是用HTTP的CONNECT方法建立起来的。

    3.1 数据隧道和连接管理

    隧道一旦建立起了,数据就可以在任意时间流向任意方向。隧道的两端必须做好任意时间接收数据的准备,并且需要将数据立即转发出去。

    因为隧道仅仅是进行数据的转发,对于数据之间的关系和顺序不能做任何假设和干预,而且有可能转发的数据之间存在有依赖关系,所以隧道不能忽略任何数据,而且要按照原顺序做及时转发,否则可能出现数据问题。如果数据的消费端出现数据消耗不足,就可能造成生成者这端的挂起。

    3.2 SSL隧道
    SSL协议,其信息是加密的,虽然我们一般可以通过443端口直接进行SSL连接,但是无法通过传统的有HTTP防火墙的代理服务器转发。这个时候可以利用隧道通过一条 HTTP 连接来传输 SSL 流量,以穿过端口 80 的 HTTP 防火墙。
    通过HTTP隧道建立SSL连接的过程如下:


    SSL隧道

    四 中继

    HTTP 中继(relay)是没有完全遵循 HTTP 规范的简单 HTTP 代理中继负责处理 HTTP 中建立连接的部分,然后对字节进行盲转发
    所以中继的优点是实现简单,当我们只是提供一个简单的过滤、诊断或内容转换功能的代理的时候,可以考虑使用中继。但是由于其盲转发的特性,所以会引起很多互操作性的问题(如Connection首部等)。

    注:简单的中继通常不会期待同一条连接上还会有另一条请求到达。

    五 Web机器人

    Web机器人 是能够在无需人类干预的情况下自动进行一系列 Web事物处理的软件程序。很多机器人会从一个Web站点逛到另一个Web站点,获取内容,跟踪超链接,并对它们找到的数据进行处理。如果一个Web站点有 robots.txt文件,那么在访问这个Web站点上的任意URL之前,机器人都必须去获取它并对其进行处理。由主机名和端口号定义的整个Web站点仅有一个 robots.txt资源。如果站点是虚拟主机,每个虚拟的docroot都可以有一个 robots.txt文件

    获取robots.txt

    机器人会用HTTP的GET方法来获取robots.txt资源,就像获取Web服务器上所有其他资源一样,机器人应该在 From首部 和 User-Agent首部 中传输标识信息,以帮助站点管理员对机器人的访问进行跟踪。

    # 例子:
    GET / robots.txt HTTP / 1.0
    HOST:www.example.com
    User-Agent:Slurp / 2.0
    Date:Web Oct 3 23:30:EST

    响应码和状态码:

    机器人会根据对robots.txt检索结果采取不同方案。

    • 2xx:机器人对内容进行解析,并使用排斥规则从那个站点上获取内容;
    • 404:机器人认为服务器没有任何排斥规则,对次站点的访问不受robots.txt限制;
    • 401 / 403:机器人认为对此站点访问完全受限;
    • 503:机器人会推迟对此站点的访问,知道可以获取资源为止;
    • 3xx:如果服务器相应说明是重定向,机器人就应该跟着重定向,直到找到资源为止;

    robots.txt文件格式:

    文件中有三种类型行:空行、注释行和规则行。

    • User - Agent:Slurp 允许机器人Slurp访问;
    • User - Agent:Webcrawler 允许机器人Webcrawler访问;
    • DisAllow: / private 访问除了private子目录;
    • DisAllow: 阻止其它机器人访问该站点任何内容
    #
    # 例子:robots.txt for Discuz! X3
    #
    User-agent: *
    Disallow: /api/
    Disallow: /data/
    Disallow: /source/
    Disallow: /install/
    Disallow: /template/
    Disallow: /config/
    Disallow: /uc_client/
    Disallow: /uc_server/
    Disallow: /static/
    Disallow: /admin.php
    Disallow: /search.php
    Disallow: /member.php
    Disallow: /api.php
    Disallow: /misc.php
    Disallow: /connect.php
    Disallow: /forum.php?mod=redirect*
    Disallow: /forum.php?mod=post*
    Disallow: /home.php?mod=spacecp*
    Disallow: /userapp.php?mod=app&*
    Disallow: /*?mod=misc*
    Disallow: /*?mod=attachment*
    Disallow: /*mobile=yes*

    机器人的META标签:

    NOINDEX:告诉机器人不要对页面的内容进行处理;

    <META NAME = "ROBOTS" CONTENT = "NOINDEX">

    NOFOLLOW:告诉机器人不要爬行这个页面的任务外链;

    <META NAME = "ROBOTS" COMEN = "NOFOLLOW">
  • 相关阅读:
    【洛谷】NOIP提高组模拟赛Day2【动态开节点/树状数组】【双头链表模拟】
    【10.7校内测试】【队列滑窗】【2-sat】【贪心+栈二分+线段树(noip模拟好题)】【生日祭!】
    【10.6校内测试】【小模拟】【hash+线段树维护覆盖序列】
    【洛谷】NOIP提高组模拟赛Day1【组合数学】【贪心+背包】【网络流判断是否满流以及流量方案】
    【10.5校内测试】【DP】【概率】
    【洛谷】1174:打砖块
    【10.4校内测试】【轮廓线DP】【中国剩余定理】【Trie树+博弈】
    【10.3校内测试【国庆七天乐!】】【DP+组合数学/容斥】【spfa多起点多终点+二进制分类】
    【二分图】性质
    【9.23校内测试】【抽屉原理】【乱搞??(找众数】【Trie】
  • 原文地址:https://www.cnblogs.com/liuzhiyun/p/11279387.html
Copyright © 2020-2023  润新知