一台web服务器可搭建多个独立域名的web网站,也可作为通信路径上的中转服务器提升传输效率.

一.用单台虚拟主机实现多个域名

  1. 用单台虚拟主机实现多个域名 : HTTP/1.1 规范允许一台HTTP服务器搭建多个web站点.比如,提供web托管服务(web hosting server) 的供应商,可以用一台服务器为多位客户服务,也可以以每位客户持有的域名运行各自不同的网站.这是因为利用了虚拟主机(virtual host,又称虚拟服务器) 的功能. 即物理层面只有一台服务器,但只要使用虚拟主机的功能,则可以假象已具有多台服务器.

  2. 客户端使用HTTP协议访问服务器时,会经常采用类似www.baidu.com 这样的主机名和域名.在互联网上,域名通过DNS服务映射到IP地址(域名解析) 之后访问目标网站.可见,当请求发送到服务器时,已经是以IP地址形式访问了.所以,如果一台服务器内托管了www.baidu.com和www.jd.com 这两个域名,当收到请求时就需要弄清楚究竟要访问哪个域名.

  3. 在相同的IP地址下,由于虚拟主机可以寄存多个不同主机名和域名的web网站,因此在发送HTTP请求时,必须在host首部内完整指定主机名或域名的URI.

二.通信数据转发程序 : 代理,网管,隧道

  1. HTTP进行通信时,除客户端和服务器以外,还有一些用于通信数据转发的应用程序,例如代理,网管和隧道.他们可以配合服务器功能.

    1. 代理 : 代理是一种有转发功能的应用程序,它扮演了位于服务器和客户端"中间人"的角色,接收由客户端发送的请求并转发给服务器,同时也接收服务器返回的响应并转发给客户端 .

    2. 网关 :网关是转发其他服务器通信数据的服务器,接收从客户端发送来的请求时,他就像自己拥有资源的源服务器一样对请求进行处理.有时客户端可能都不会察觉,自己的通信目标是一个网关 .

    3. 隧道 : 隧道是在相隔甚远的客户端和服务器两者之间进行中转,并保持双方通信连接的应用程序.
  2. 代理 : 代理服务器的基本行为就是接收客户端发送的请求后转发给其他服务器. 代理不改变请求URI,会直接发送给前方持有资源的目标服务器.持有资源实体的服务器被称为源服务器.从源服务器返回的响应经过代理服务器后再传给客户端.在HTTP通信过程中,可级联多台代理服务器.请求和响应的转发会经过数台类似锁链一样链接起来的代理服务器.转发时,需要附加via首部字段以标记出经过的主机信息. 使用代理服务器的理由有 : 利用缓存技术减少网络带宽的流量,组织内部针对特定网站的访问控制,以获取访问日志为主要目的,等等 . 代理有多种使用方法,按两种基准分类 :

    1. 缓存代理 : 代理转发响应时,缓存代理(caching proxy)会预先将资源的副本(缓存)保存在代理服务器上.当代理再次接收到对相同资源的请求时,就可以不从资源服务器哪里获取资源,而是将之前缓存的资源作为响应返回.

    2. 透明代理 : 转发请求或响应时,不对报文做任何加工的代理类型被称为透明代理(transparent proxy) .反之,对报文内容进行加工的代理成被称为非透明代理.
  3. 网关 : 网关的工作机制和代理十分相似 . 而网关能使通信线路上的服务器提供非HTTP协议服务.利用网关能提高同行的安全性,因为可以在客户端与网关之间的通信线路上加密以确保连接的安全.比如,网关可以连接数据库,使用SQL语句查询数据.另外,在web购物网站上进行信用卡结算时,网关可以和信用卡结算系统联动 .

  4. 隧道 : 隧道可按要求建立起一条与其他服务器的通信线路,届时使用ssl等加密手段进行通信.隧道的目的是确保客户端能与服务器进行安全的通信.隧道本身不会去解析HTTP请求.也就是说,请求保持原样中转给之后的服务器.隧道会在通信双方断开连接时结束 .

三. 保存资源的缓存

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

  2. 缓存服务器是代理服务器的一种,并归类在缓存代理类型中.换句话说,当代理转发从服务器返回的响应时,代理服务器会保存一份资源的副本 .缓存服务器的优势在于利用缓存可避免多次从源服务器转发资源.因此客户端可就近从缓存服务器上获取资源,而源服务器也不必多次处理相同的请求.

  3. 缓存的有效期限 : 几鞭缓存服务器内有缓存,也不能保证每次都会返回对同资源的请求. 因为这关系被缓存资源的有效性问题. 当遇上资源服务器上的资源更新时,如果还是使用不便的缓存,那就会编程返回更新前的"旧"资源了. 即使存在缓存,也会因为客户端的要求,缓存的有效期等因素,向源服务器确认资源的有效性.若判断缓存失效,缓存服务器会再次从源服务器上获取"新"资源.

  4. 客户端的缓存 : 缓存不仅可以存在于缓存服务器内,还可以寸在客户端浏览器中.以Internet explorer 程序为例,可客户端村换称为临时网络文件(temporary Internet file ) .浏览器缓存如果有效,就不必再向服务器请求相同的资源了,可以直接从本地磁盘读取.另外,和缓存服务器相同的一点是,当判定缓存过期后,会向服务器确认资源的有效性.若判断浏览器缓存失效,浏览器会再次请求信资源 .

  5. 在HTTP出现之前的协议 : 在HTTP普及之前,也就是从互联网的诞生至今,层出现过各式各样的协议,在HTTP规范确立之际,制定者们参考了那些协议的功能.也有某些协议现在已经彻底退出了人们的实现.

    1. FTP(file transfer protocol) : 传输文件时使用的协议.该协议历史久远,可追溯到1973年前后,比TCP/IP 协议族的出现还要早.虽然他在1995年被HTTP的浏览(traffic) 超越,但时至今日,仍被广泛使用.

    2. 剩下的不写了,都被HTTP替代了.

转载于:https://blog.51cto.com/12654424/2048173

5.与HTTP协作的Web服务器相关推荐

  1. 与http协作的web服务器、http首部(第五章、第六章)

    第五章 与http协作的web服务器 1.用单台虚拟主机实现多个域名 通过域名访问主机,经过DNS解析成ip地址,反向代理,可以代理多台服务器,正向代理则相反,代理客户端 2.通信数据转化程序:代理. ...

  2. 《图解HTTP》读书笔记--第5章与HTTP协作的Web服务器

    写在前面:本文仅供个人学习使用,如有侵权,请联系删除.文章中所用图片绝大多数来源于<图解HTTP>,请读者支持原版. 文章目录 5.1 用单台虚拟主机实现多个域名 5.2 通信数据转发程序 ...

  3. 生于俄罗斯的 Web 服务器王者 Nginx,现宣布俄罗斯禁止贡献!

    作者 | 苏宓 出品 | CSDN 不久之前,一些底层工具.软件.开源项目相继宣布在俄罗斯停服,彼时也有不少开发者呼吁 Nginx 是时候进行反限制了. 万万没想到,就在国际局势发生改变的一个月后,N ...

  4. 关于Web服务器的认识

    马上就要毕业了,也要开始找工作了,大学写了这么多代码了,却没有好好总结一下常用的概念很是遗憾额,就通过这篇博客记录一下我最常用的一些知识好了. 说到Web服务器,有很多文章都介绍的很好,之前看到一篇非 ...

  5. 生于俄罗斯的 Web 服务器王者 Nginx,现宣布俄罗斯禁止贡献

    作者 | 苏宓 出品 | CSDN(ID:CSDNnews) 不久之前,一些底层工具.软件.开源项目相继宣布在俄罗斯停服,彼时也有不少开发者呼吁 Nginx 是时候进行反限制了. 万万没想到,就在国际 ...

  6. Java - 常用的Web服务器有哪些?

    分享一个大牛的人工智能教程.零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请点击http://www.captainbed.net Unix和Linux平台下使用最广泛的免费HTTP服 ...

  7. 树莓派WEB服务器(Boa)CGI编程入门

    通过上一个课程"Boa基本设置与使用"的学习,大家在树莓派上应已经会安装.配置.运行Boa服务器,并且访问到服务器上的一个静态网页. 这不是运行Web服务器最终的目的,最终应是通过 ...

  8. 理清web服务器跟应用服务器的基本概念(纯拷贝)

    一 常见的WEB服务器和应用服务器 在UNIX和LINUX平台下使用最广泛的免费web服务器是W3C.NCSA和APACHE服务器,而Windows平台NT/2000/2003使用IIS的WEB服务器 ...

  9. 什么是WEB服务器、应用服务器

    WEB服务器也称为WWW(WORLD WIDE WEB)服务器,主要功能是提供网上信息浏览服务. (1)应用层使用HTTP协议. (2)HTML文档格式. (3)浏览器统一资源定位器(URL). WW ...

最新文章

  1. RHEL5.1单域主/从NIS服务器配置及测试
  2. javascript创建对象的三种方式
  3. Microsoft Exchange Server 2010测试四成员DAG
  4. 玩客云如何设置文件存储到副盘_如何存储自己的资料:低成本的小型存储方案...
  5. 如何在windows下使用linux命令
  6. 微软服务器配置核查,注册表配置检查
  7. win7 php环境搭建 x64,win7搭建php+Apache环境
  8. 天地图专题六:复杂操作,天地图上标注点的连线以及模拟点击事件
  9. dev里timeedit控件如何赋值_如何制作高逼格的数据地图(二)
  10. 软硬件融合新时代——让软件够灵活,硬件够高效,鱼和熊掌可兼得
  11. hibernate FetchType理解
  12. 动态规划实战11 leetcode-64. Longest String Chain
  13. 国内完全免费的电子图书下载网址
  14. 串级PID控制(多闭环PID控制)的理解
  15. IO-4、RAID结构
  16. MySQL子查询,多表查询
  17. EDK2编译环境搭建、编译、在模拟器运行、在笔记本运行
  18. bcrypt强哈希_为什么应该使用Bcrypt哈希存储的密码
  19. Win10系统adb无法使用
  20. 微信小程序开发教程:项目七媒体API的运用 课后习题

热门文章

  1. Boost:实现同步客户端
  2. ITK:创建一个固定数组
  3. DCMTK:DcmFloatingPointDouble类的测试程序
  4. VTK:可视化算法之Hello
  5. VTK:几何对象之ParametricSuperEllipsoid
  6. VTK:几何对象之Circle
  7. Qt Quick的国际化和本地化
  8. Qt Creator在桌面上预览
  9. C语言二叉搜索树返回key的树级(附完整源码)
  10. OpenGL使用深度剥离命令获得独立的透明度