HTTP协议 WEB服务器

WEB 服务器,也就是网站服务器,是指驻留于服务器上的计算机的程序,可以处理浏览器等 WEB 客户端的请求并返回相应响应,也可以放置静态文件,提供用户浏览或下载。目前最主流的 WEB 服务器有 Apache、 Nginx 、IIS。

 

1. 虚拟主机

HTTP 1.1规范允许一台 HTTP 服务器搭建多个 WEB 站点,每一个站点称为虚拟主机。

比如提供 WEB 托管服务的供应商,可以用一台服务器为多为客户服务,也可以以每位客户持有的域名运行各自不同的网站。

客户端使用 HTTP 协议访问服务器时,会经常采用类似 www.baidu.con 这样的主机名和域名。

在互联网上,域名通过 DNS 服务映射到 IP 地址之后访问目标网站,可见,请求发送到服务器时,已经是以 IP 地址形式访问。

所以,如果一台服务器内托管了 www.baidu.com 和 www.sina.com 这两个域名,收到请求时就需要搞清楚究竟要访问哪个域名。

在相同的 IP 地址下,发送请求时,必须在 Host 首部内完成指定主机名或者域名的 URI。

 

2. 通信数据的转发程序

HTTP 通信时,出客户端和服务器外,还有一些用于通信数据转发的应用程序,比如代理、网关、隧道。

 

2.1 代理:具有转发功能的应用程序。

扮演了客户端和服务器“中间人”的角色,接受请求并转发给服务器,同时也接受响应并返回给客户端。

代理不会改变URI,会直接将请求发送给持有资源的源服务器,然后响应通过代理服务器后再传给客户端。

HTTP 通信中,可以级联多台代理服务器,每次通过代理服务器转发请求和响应时,会追加写入Via首部信息,以标记出经过的主机信息。

代理服务器的优点:利用缓存技术(下文)减少网络带宽流量,组织内部针对特定网站的访问控制,获取访问日志为主要目的等。

缓存代理:预先将资源的副本缓存在代理服务器上,再次受到对相同资源的请求时,可以将自己的缓存返回。

透明代理:转发请求或者响应时,不对报文做任何加工的代理类型。

 

2.2 网关:转发其他服务器通信数据的服务器。

接受客户端发来的请求,就像自己拥有资源的服务器一样处理请求。

网关的工作机制与代理什么类似,而网关可以使通信线路上的服务器提供非 HTTP 协议服务。

特点:提高通信安全性,可以在客户端和网关之间通信线路上加密以确保连接安全。

 

2.3 隧道:在客户端和服务器之间进行中转,并保持双方通信连接的应用程序。

特点:可以使用SSL等加密手段进行通信,确保客户端能与服务器进行安全的通信。

 

3. 资源的缓存

缓存是指代理服务器或者客户端本地磁盘内保存的资源副本。

利用缓存可减少对源服务器的访问,节省通信流量和通信时间。

 

3.1 缓存的有效期

当源服务器的资源更新时,或者因为客户端要求,缓存的有效时间等因素,都需要向源服务器确认有效性,如果缓存失效,缓存服务器将再次向源服务器获取最新的资源。

 

3.2 客户端的缓存

缓存不仅可以存与代理服务器内,还可以存在客户端浏览器中。如果缓存有效,就可以直接从本地磁盘中读取资源。

同样,当缓存过期,还是需要向源服务器请求资源。

HTTP 协议的报文分为两种:请求报文和响应报文。它们的总体结构大体相同,都是由报文首部+空行+报文主体三部分组成。1. HTTP 请求报文:HTTP 请求报文由方法、URI、 HTTP 版本。 HTTP 首部字段等构成。