与HTTP协作的web服务器------计算机网络学习(三)

        HTTP/1.1规范允许一台HTTP服务器搭建多个web站点。

        即使物理层面只有一台服务器,但只要使用虚拟主机的功能,就可以假想已经具有多台服务器。

        在互联网上,域名通过DNS服务映射到IP地址之后才访问目标网站,所以说,当请求发送到服务器,就已经是以IP地址的方式来访问了。

        而如果一台服务器托管了多个域名,所以在域名映射成IP地址后,我们并不能知晓目标到底要访问哪个域名,所以,我们必须在Host首部内完整指定主机名或者域名的URI。

        


        在HTTP通信时,除了客户端与服务器以外,还有一些进行通讯数据转发的应用程序,例如

代理网关隧道

        代理:

        代理是一种具有转发功能的应用程序,那么为什么要有代理这一步呢?不是多次一举吗?

        使用代理服务器的理由有:

  1. 利用缓存技术减少网络带宽的流量
  2. 组织内部对特定网站的控制
  3. 以获取访问日志为主要目的

        持有资源实体的服务器被称为源服务器。

        在HTTP通信过程中,可级联多台代理服务器,但是要注意,转发时,需要附加Via首部字段以标记经过的主机信息。

        代理的方式有很多,按照两种基准分类。

        一种是是否缓存

        另一种是是否会修改报文

        缓存代理:

        代理转发响应时,缓存代理会预先将资源的副本(缓存)保存到代理服务器上,当代理服务器再次接收对同样资源的请求的时候,就可以直接调用缓存。

        透明代理:

        转发请求或者响应时,不对报文做任何加工的代理类型被称为透明代理。反之,则被称为非透明代理。


        网关:

        网关是转发其他服务器通信数据的服务器,接收从客户端发过来的请求时,会直接对请求进行处理,有时候客户端不会察觉到它的目标是一个网关。

        那么网关为什么要存在呢?

  1. 网关能使通信线路上的服务器提供非HTTP协议服务
  2. 利用网关能提高通信的安全性
  3. 网关可以在客户端与网关之间的通信线路上加密以确保连接的安全
  4. 网关具备一定的联动功能,例如网关可以连接数据库,使用SQL语句查询数据

        隧道:

        隧道是在相隔甚远的客户端和服务器两者之间进行中转,并保持双方通信连接的应用程序。

        隧道可以按照要求建立起一条与其他服务器的通信线路,届时使用SSL等加密手段进行通信。

        那么隧道为什么要存在呢?

        隧道可以确保客户端能与服务器进行安全的通信。

        隧道本身不会去解析HTTP请求,隧道中请求会保持原样转发给下一步服务器。隧道会在通信双方断开连接时结束。


        缓存:

        缓存是指代理服务器或客户端本地磁盘内保存的资源副本,利用缓存可以减少对源服务器的访问,这样就可以节省通信流量和通信时间。

        缓存服务器是代理服务器的一种,而且属于缓存代理类型。

        缓存的有效期限:

        若在缓存服务器中存在缓存,缓存服务器会根据客户端的需求、缓存的有效期等因素。按照规则向源服务器确认资源的有效性。若判断缓存失效,缓存服务器将会再次从源服务器获取资源。

        客户端的缓存:

        缓存不仅可以存在缓存服务器内,还可以存在客户端浏览器中,在客户端的缓存称为临时网络文件。

        浏览器缓存如果有效,就不必再向服务器请求相同的资源了,可以直接从本地磁盘中读取。

        浏览器缓存也会根据要求向源服务器确认资源的有效性,若失效则再次请求资源。


        参考书籍:《图解HTTP》上野宣 著 于均良 译        

猜你喜欢

转载自blog.csdn.net/qq_53087870/article/details/120458486