第五章:与HTTP协作的Web服务器
用单台虚拟主机实现多个域名
HTTP/1.1规范允许一台HTTP服务器搭建多个Web站点。即使物理层面上只有一台服务器,但只要使用虚拟主机的功能,则可以假象已具有多台服务器。当请求发送到服务器时,已经是以IP地址形式访问了。在相同的IP地址下,由于虚拟主机可以寄存多个不同主机名和域名的Web网站,因此在发送HTTP请求时,必须在Host首部内完整指定主机名或域名的URI。
通信数据转发程序:代理、网关、隧道
代理:接收由客户端发送的请求并转发给服务器,同时也接收服务器返回的响应并转发给客户端。
代理服务器的基本行为就是接收客户端发送的请求后转发给其他服务器。代理不改变请求URI,会直接发送给前方持有资源的目标服务器
持有资源实体的服务器称为源服务器,从源服务器返回的响应经过代理服务器后再传给客户端
使用代理服务器的理由有:利用缓存技术(稍后讲解)减少网络带宽 的流量,组织内部针对特定网站的访问控制,以获取访问日志为主要 目的,等等。
代理有多种使用方法,按两种基准分类。一种是是否使用缓存,另一 种是是否会修改报文。
*缓存代理
代理转发响应时,缓存代理(Caching Proxy)会预先将资源的副本 (缓存)保存在代理服务器上。 当代理再次接收到对相同资源的请求时,就可以不从源服务器那里获取资源,而是将之前缓存的资源作为响应返回。
*透明代理
转发请求或响应时,不对报文做任何加工的代理类型被称为透明代理 (Transparent Proxy)。反之,对报文内容进行加工的代理被称为非透明代理。
网关:能使通信线路上的服务器提供非HTTP协议服务。利用网关能提高通信的安全性,因为可以在客户端与网关之间的通信线路上加密以确保连接的安全性。比如,网关可以连接数据库,使用SQL语句查询数据。另外,在Web购物网站上进行信用卡结算时,网关可以和信用卡结算系统流动。
利用网关可以由HTTP请求转化为其他协议通信
隧道:可按要求建立一条与其他服务器的通信线路,届时使用SSL等加密手段进行通信。隧道的目的是确保客户端能与服务器进行安全的通信。隧道本身不会解析HTTP请求,请求保持原样中转给之后的服务器。隧道会在通信双方断开连接时结束。
保存资源的缓存
缓存是指代理服务器或客户端本地磁盘内保护的资源副本。利用缓存可减少对源服务器的访问,因此也就节省了通信流量和通信时间。缓存服务器是代理服务器的一种,当代理转发从服务器返回的响应时,代理服务器将会保存一份资源的副本客户端可就近从缓存服务器上获取资源,而源服务器也不必多次处理相同的请求了。
即便缓存服务器内有缓存,也不能保证每次都会返回对同资源的请求。因为这关系到被缓存资源的有效性问题。
缓存不仅可以在于服务器内,也可以存在客户端浏览器中。以 Internet Explorer 程序为例,把客户端缓存称为临时网络文件 (Temporary Internet File)。
浏览器缓存如果有效,就不必再向服务器请求相同的资源了,可以直 接从本地磁盘内读取。
另外,和缓存服务器相同的一点是,当判定缓存过期后,会向源服务器确认资源的有效性。若判断浏览器缓存失效,浏览器会再次请求新资源。
第六章:HTTP首部(HTTP协议的请求和响应报文中必定包含HTTP首部)
首部内容为客户端和服务器分别处理和响应提供所需要的信息
HTTP请求报文:在请求中,HTTP报文由方法、URI、HTTP版本、HTTP版本首部字段等部分构成。
HTTP响应报文:在响应中,HTTP报文由HTTP版本、状态码(数HTT字和原因短语)、HTTP首部字段3部分构成
HTTP首部字段传递重要信息:是为了给浏览器和服务器提供报文主体大小、所使用的语言、认证信息等内容
4种HTTP首部字段类型:通用首部字段、请求首部字段、响应首部字段、实体首部字段
请求通用字段