与http协作的web服务器
1、虚拟主机
一台web服务器可以搭建多个独立域名的web网站,也可以作为通信线路上的中转服务器提升传输效率。比如web托管服务供应商可以用一台服务器为多个不同域名的客户提供服务,这是利用了虚拟主机(virtual host,又称虚拟服务器)的功能。在发送http请求时,必须在Host首部内完整指定主机名或域名的URI,以确定要请求的web网站。
2、代理
通信数据转发程序:代理、网关、隧道、中继。
如下图,转发“客户端”和“服务器”之间的数据,使用代理服务器可以利用其缓存技术减少网络带宽流量,也可以控制内部对特定网站的访问。每次通过代理服务器转发请求或响应时,会追加写入via首部信息。代理不改变请求的URI,它直接发送给前方的目标服务器。转发时不对报文做任何加工则为透明代理,否则为非透明代理。

代理服务器或客户端本地保存的资源副本称为缓存,缓存服务器是代理服务器的一种。即使存在缓存,也会因为缓存的有效期、客户端的要求等因素,向服务器确认资源的有效性。
3、网关
网关工作机制与代理类似,但网关提供了http协议和其它协议之间的转换。可以将网关可以分为“协议网关”和“资源网关”。
“协议网关”(如下图)主要有:http/ftp输入转换网关、http/pop网关、https/http安全加速器网关(通常作为拦截网关或反向代理使用,这种网关通常都包含专用的解密硬件,其解密速度比普通的https服务器要快,这样也可以减轻web服务器的负荷,网关与web服务器之间的网络应该确保是安全的,比如是受保护的内部LAN)、http/https输入安全网关(一个组织可以通过网关对普通的http请求加密,以提供额外的隐私和安全保护)。




资源网关主要有“数据库网关”和“应用程序服务器”(如下图)。数据库网关:客户端通过http协议向服务器发送请求,当请求数据库资源的时候服务器与网关进行交互以获取资源,网关可以连接数据库,向数据库发送查询语句。应用程序服务器:将目标服务器和网关结合在一起的服务器,应用程序服务器(作为目标服务器)与客户端通过http通信,(作为网关)并与服务器端的应用程序相连。通用网关接口(Common Gateway Interface, CGI)是一个流行的应用程序网关API,CGI在Web上广泛用于数据库査询、信用卡结算处理、动态HTML等任务,CGI应用程序独立于服务器,几乎可以用任意语言来实现。


4、隧道
Web隧道允许用户通过HTTP连接发送非HTTP流量,这样就可以在HTTP上捎带其他协议数据了。使用Web隧道最常见的原因就是要在HTTP连接中嵌入非HTTP流量,这样,这类流量就可以穿过只允许Web流量通过的防火墙了。HTTP 隧道的一种常见用途是通过 HTTP 连接承载加密的安全套接字层(SSL,Secure Sockets Layer) 流量, 这样 SSL 流量就可以穿过只允许 Web 流量通过的防火墙了。
比如,在一个网络中,防火墙禁止端口443上的连接,因此网络中的用户无法访问使用HTTPS协议的网站。但是,防火墙允许端口80上的连接。网络中的用户想要访问该服务器有两种方法:一种是使用http/https输入安全网关,一种是通过HTTP隧道。使用网关的方法有三个缺点:客户端到网关之间的连接是普通的非安全HTTP;客户端无法对远端服务器执行SSL客户端认证;网关要支持完整的SSL实现。使用隧道的话SSL流量被封装到一条HTTP报文中,并通过HTTP端口80上的连接发送, 最后被解封为普通的SSL流量。 使用隧道协议的流程是客户端发送一条CONNECT请求给网关请求打开一条TCP连接(在这里,打开的是到目标主机的标准SSL端口443的连接),一旦建立了TCP连接,网关就会发送一条HTTP 200 Connection Established响应来通知客户端;此时,隧道就建立起来了。如下图:


前面描述了一条SSL隧道,其中的SSL流量是在一条HTTP连接上发送的,通过CONNECT方法可以与使用任意协议的任意服务器建立TCP连接。一些喜欢捣乱的用户可能会通过本打算用于SSL的隧道越过公司防火墙传递因特网游戏流量,而恶意用户可能会用隧道打开Telnet会话,或用隧道绕过公司的E-mail扫描器来发送E-mail。为了降低对隧道的滥用,网关应该只为特定的知名端口,比如HTTPS的端口443打开隧道。
5、中继
中继负责处理HTTP中建立连接的部分,然后对字节进行盲转发。某些简单盲中继实现中存在的一个常见问题是,它们无法正确处理Connection首部,所以有潜在的挂起keep-alive连接的可能。
如下图,Web客户端向中继发送了一条包含Connection: Keep-Alive首部的报文,如果可能的话要求建立一条keep-alive连接。客户端等待响应,以确定它要求建立keep-alive信道的请求是否被认可了。中继收到了这条HTTP请求,但它并不理解Connection首部,因此会将报文一字不漏地沿着链路传递给服务器。但Connection首部是个逐跳首部,只适用于单条传输链路,是不应该沿着链路传送下去的。这会导致客户端和服务器建立了长连接后中继器却不知道,它会在收到原始服务器的所有数据后转发给客户端,然后等待原始服务器关闭连接,这样,中继就会挂起,客户端再次在这条连接上发送请求的话,中继不会去理睬。

要为某个特定目标构建简单的HTTP中继,一定要特别注意其使用方法。对任何部署来说,都要非常认真地考虑使用真正的、完全遵循HTTP的代理服务器。
以上内容转载和参考自:代理、网关与隧道,https://blog.csdn.net/sjailjq/article/details/82287345
前端学HTTP之网关、隧道和中继,https://www.cnblogs.com/xiaohuochai/p/6180941.html
与http协作的web服务器的更多相关文章
- 与http协作的web服务器、http首部(第五章、第六章)
第五章 与http协作的web服务器 1.用单台虚拟主机实现多个域名 通过域名访问主机,经过DNS解析成ip地址,反向代理,可以代理多台服务器,正向代理则相反,代理客户端 2.通信数据转化程序:代理. ...
- 第五章 与HTTP协作的Web服务器
第五章 与HTTP协作的Web服务器 一台Web服务器可搭建多个独立域名的Web网站,也可以作为通信路径上的中转服务器提升传输效率. 1.用单台虚拟机实现多个域名 HTTP/1.1规范允许一台HTT ...
- 读《图解HTTP》有感-(与HTTP协作的WEB服务器)
写在前面 Web服务器一般指网站服务器,是指驻留于因特网上某种类型计算机的程序,可以向浏览器等Web客户端提供文档: 一台web服务器可以搭建多个独立域名的web网站,也可以作为通信路径(路由)上的中 ...
- HTTP协议图--与 HTTP 协作的 Web 服务器
HTTP 通信时,除客户端和服务器外,还有一些用于协助通信的应用程序.如下列出比较重要的几个:代理.缓存.网关.隧道.Agent 代理. 1.代理 代理 HTTP 代理服务器是 Web 安全.应用 ...
- 图解HTTP总结(5)——与HTTP协作的Web服务器
一台 Web 服务器可搭建多个独立域名的 Web 网站, 也可作为通信路径上的中转服务器提升传输效率. 用单台虚拟主机实现多个域名 HTTP/1.1 规范允许一台 HTTP 服务器搭建多个 Web 站 ...
- 与http协作的web服务器--代理、网关、隧道
一台服务器可以搭建多个web站点 代理: 接受客户端发送的请求,转发给其他服务器,然后接受服务器的返回结果(响应)再返回给客户端.每次经过代理服务器,就会追加写入via首部信息. 按两种基准分类.一种 ...
- 与HTTP协作的Web服务器——代理、网关、隧道
1.虚拟主机 (1)HTTP/1.1规范允许一台HTTP服务器搭建多个Web站点: (2)在互联网上,域名通过DNS服务映射到IP地址(域名解析)之后访问目标网站,即当请求发送到服务器时,已经是以IP ...
- 图解 HTTP 笔记(五)——Web 服务器
该章的主要内容是讲解与 HTTP 协作的 Web 服务器 一.用单台虚拟主机实现多个域名 基于虚拟主机的功能,可以只使用一台物理机实现多个域名的网站部署. 在互联网上,域名通过 DNS 域名解析系统可 ...
- 【HTTP】Web服务器和HTTP的协作&HTTP首部
用单台虚拟主机实现多个域名 Web服务器可以搭建多个独立域名的Web网站,也可以作为通信路径上的中转服务器提升效率. HTTP/1.1规范允许一台HTTP服务器搭建多个Web站点,提供Web托管服务的 ...
随机推荐
- 利用IIS6提权获得管理员权限
IIS6也是一个比较古老的提权EXP了,是通过利用WMI的权限来执行命令. 目标机:漏洞巨多的Win2003 下面说一下通过IIS6在已用菜刀连接上的服务器上运用IIS6获得管理员权限的过程. 1.将 ...
- [ERROR] Failed to execute goal org.apache.maven.plugins:maven-war-plugin:2.1.1:war
创建springboot项目,且不采用<parent>引入springboot时,pom.xml如下: <?xml version="1.0" encoding= ...
- python刷LeetCode:9. 回文数
难度等级:简单 题目描述: 判断一个整数是否是回文数.回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数. 示例 1: 输入: 121输出: true示例 2: 输入: -121输出: fa ...
- 一天一个设计模式——Strategy策略模式
一.模式说明 策略模式比较好理解,就是将程序中用到的算法整体的拿出来,并有多个不同版本的算法实现,在程序运行阶段,动态的决定使用哪个算法来解决问题. 举个实际的例子:排序算法的问题,假如我们的程序中需 ...
- python3 sort list
1. 对元素指定的某一部分进行排序,关键字排序 s = ['release.10.txt','release.1.txt','release.2.txt','release.14.txt','rele ...
- ✨vue引入组件 axios和icont矢量图标
axios 在vue项目开发中,我们使用axios进行ajax请求,很多人一开始使用axios的方式,会当成vue-resoure的使用方式来用,即在主入口文件引入import VueResource ...
- MYSQL安装与基本操作
http://docs.sqlalchemy.org/en/latest/ sqlalchemy文档 1.下载,下载版本太多,不知道下哪个好,别人介绍版本 进入官网-->点击最下面 DOW ...
- 哈希表hashTable的Java设计
1:哈希表的概念 2:设计原理 3:哈希表的Java设计
- clonezilla使用说明
0.Clonezilla Live 再生龙网址:http://clonezilla.nchc.org.tw/clonezilla-live/ 1.下载Clonezilla Live 地址:http:/ ...
- 图形化编程娱乐于教,Kittenblock实例,为背景添加音乐
图形化编程娱乐于教,Kittenblock实例,为背景添加音乐 跟很多学生聊过,很多学生不是不努力,只是找不到感觉.有一点不可否认,同样在一个教室上课,同样是一个老师讲授,学习效果迥然不同.关键的问题 ...