Answers:
要了解发生了什么,您需要对DNS有一点了解。
当客户端想要连接到给定主机上的服务时,它会通过其本地DNS基础结构查找主机名,并作为响应接收IP地址。然后,它连接到该IP地址,并按照其构建的Procotol规定的方式请求服务。
在某些情况下,该协议的一部分涉及第二次发送最初查找的主机名,在这种情况下,该主机名被发送到服务器而不是DNS基础结构。对于HTTP,这是RFC 2616中HTTP / 1.1的一部分;如果是HTTPS,则在RFC 4366中将其实现为服务器名称指示(SNI);对于FTP,它是由RFC 7151中的命令添加的(但请参见后面的警告)。 如果第二次发送没有发生,则服务器将无法知道客户端将其主机名传递给其本地DNS的主机名,以获取服务器的IP地址。HOST
请注意,在所有情况下,都需要对协议进行更改才能进行第二次发送,从而使客户端-服务器交互可识别主机名。更改协议后,必须更新服务器代码以实现该协议。最后,必须更新客户端以与服务器讨论新协议。最后一步可能会特别慢;就SNI而言,Windows XP上的Internet Explorer从未实现过,因此尽管周围仍然有大量的IE-on-XP用户,但仍不能依赖该协议,因此他们花了大约十年的时间来终止和/或升级SNI可以可靠部署。
因此,这就是使非主机名感知协议知道主机名的过程。这不是简单的标志设置或配置更改。我们有一些特定于协议的答案,用于处理事务状态以及可能的缓解措施,尤其是针对该协议:
SSH(以及SFTP)和
FTP(指出HOST
对FTP的支持目前尚不完整) -支持阶段,因此尚不能依靠)。
简短的答案是,如果您的协议当前未实现主机名感知功能,并且在客户端和服务器之间都具有良好的支持,那就算了:这不是您可以做的。
baz
只能由其所有者和唯一的实施者更改,那么使它具有主机名意识的唯一方法就是向所有者提出上诉。这不会带来有趣的SF答案,而且(在我看来)也不是主题。“ 我如何设计一个支持主机名的协议 ”是另一个问题,并不是我感兴趣的问题。