用单台虚拟主体实现多个域名。相同的 IP 地址可能会有多个不同主机名和域名的 Web 网站,所以在发送 HTTP 请求时,必须在 Host 首部内完整指定主机看或域名的 URI。
通信数据转发程序
这些应用程序和服务器可以将请求转发给通信线路的下一站服务器,并且能接收从那台服务器发送的响应,再转发给客户端。
代理
有转发功能的应用程序。接收由客户端发送的请求并转发给服务器,同时也接收服务器返回的响应并转发给客户端。
分类基准:
- 缓存代理,CDN
- 透明代理
- 不对报文进行任何加工的代理,反之称为非透明代理。
网关
转发其他服务器通信数据的服务器,接收从客户端发送来的请求时,它就像自己拥有资源的源服务器一样对请求进行处理。
网关能使通信线路上的服务器提供非 HTTP 协议服务。
隧道
在相隔甚远的客户端和服务器两者进行中转,并保持双方通信连接的应用程序。
不会去解析 HTTP 请求,保持原样中转给之后的服务器。隧道会在通信双方断开连接时结束。
缓存
缓存是指代理服务器或客户端本地磁盘内保存的资源副本。利用缓存可以减少对源服务器的访问,节省了通信流量和通信时间。
缓存分类:
- 服务器缓存,通过缓存代理服务器实现。当代理转发从服务器返回的响应时,本身就会保存一份副本,下次请求就可以从代理服务器响应。
- 客户端缓存。通过临时网络文件缓存响应资源。
若缓存有效则使用缓存,否则请求源服务器,请求新资源。
注意在iOS中,使用URLSession的GET请求,会自动使用URLCache进行缓存响应资源。根据服务器的响应头部字段自动缓存和更新资源。