目前市场上得书籍很少能将http相关知识讲的很清楚,很多开发在这一块的体系知识需要得到补充,当然也包括我。无意间,看到一本 日本人写的 《图解http》书,发现里面讲的很细致,并且以图形得方式深度还原http之间的联系,值得推荐,于是好记性不如烂笔头,开始记录吧,本文主要是针对第五章记录,共11章,每个章节都会做详细的讲解
用单个虚拟主机实现多个域名
http1.1 允许一台http服务器搭建多个web站点,比如我买的服务器,里面就有好几个域名网站,当客户端进行域名请求时,会通过DNS解析到对应的服务器IP地址,但是服务器内多个不同的主机名和域名的网站,多个域名指向同一个ip服务器,除了我们都知道的,在服务器里面配置对应的服务端口,其他呢?
通信数据转发程序: 代理,网关,隧道
http通信的时候,除了客户端和服务端,还有一些用于通信数据转发的应用程序,例如代理,网关和隧道,他们可以配合服务器的工作。
这些应用程序和服务器可以将请求转发给通信线路的下一站服务器,并且能接受从那台服务器发送的响应在转发给客户端。
代理:
是一种由转发功能的应用程序,它扮演了位于服务器和客户端“中间人”角色,接受客户端发送的请求并转发给服务器,同时也结合搜服务器返回的响应并转发给服务端,每次通过代理服务器转发或响应时,会追加写入Via首部信息
客户端 <--http1.1/ 200 ok --> 代理服务器【缓存服务器的一种】 <---http1.1/ 200 ok---> 源服务器[持有实体的服务器资源]
代理好处:利用缓存技术减少网络带宽流量,组织内部对特定网站访问控制,获取访问日志为主要目的等 代理缓存一般分两种方式:
-
缓存代理: 代理转发响应时,会预先吧资源副本缓存到代理服务器上,下一次执行相同资源请求时,直接从代理服务器获取
客户端 <--http1.1/ 200 ok --> 缓存服务器【代理服务器的一种】 <---http1.1/ 200 ok---> 源服务器[持有实体的服务器资源]
缓存服务器:当代理从实体服务器拿到数据后,代理服务器缓存在服务器中,这样避免多次从服务器转发资源 缓存有效期会根据用户要求,以及缓存有效期进行设置,若有效期失效,会重新获取
客户端缓存: 客户端也支持缓存机制,客户端缓存称为临时网络文件,浏览器缓存在有效期内,就直接从缓存里面拿取
-
代理透明:转发请求和响应时,不对报文做任何加工的代理类型就叫透明代理
网关:
网关是转发其他服务器通信数据的服务器,接受从客户端发来的请求时,他就像自己拥有资源的源服务器一样对请求进行处理,有时客户端都不会觉察,自己通信目标是一个网关。
客户端 <--http请求和响应 --> 网关 <---非http协议通信---> 非http源服务器
工作机制很像代理,但是网关能使通信线路服务器提供http协议,比如客户端发送http协议到网关后,网关执行对应的SQL操作,或者是一些信用卡结算系统进行联动的操作(根据项目实际情况)
隧道:
是相隔甚远的客户端和服务器两者之间进行中转,并保证双方通信连续的应用程序
客户端 <- --> 隧道(建立安全的通信路线) <------> 非http源服务器
隧道按要求建立一条与其他服务器的通信路线,届时使用ssl等加密手段进行通信,隧道目的只要是保护哭护短与服务器进行安全的通信,隧道不会解析http请求,隧道会在通信双方断开连接时结束。隧道是透明的,客户端不会在意隧道的存在。
http出现之前的协议,后因http出现所淘汰的协议:
ftp: 现在在用,大部分在服务端 nntp:电子会议室传送消息协议,1986年出现,现在被淘汰 archie: 1990年出现,现在被淘汰, wais: 1991年出现,现在被淘汰, gopher: 1991年出现,现在被淘汰