TCP连接之间是否存在性能差异:
或者更具体地说,后面的连接是通过环回设备还是通过实际网络?
我问的原因是我正在考虑更改许多PHP应用程序中的数据库设置,因此他们使用完整的域而不是localhost。这样,如果需要,我们可以更轻松地将数据库移动到不同的服务器。
答案 0 :(得分:7)
这是依赖于实现和操作系统的。在Windows上,任何连接到本地IP地址的东西,即使它是面向外部的IP,都将重新环回。这是数据包嗅探器等应用程序的文档问题,因为您无法嗅探环回。 (Windows不会将环回视为“设备” - 它在网络级别处理。)但是,在这种情况下,它会对您有利。
相比之下,Linux将遵循路由表中的任何内容,因此如果路由表不是,那么发往本地计算机的数据包将通过网络转到本地计算机配置正确。但是,在99%的情况下,路由将正确配置。您的数据包不会通过环回设备,但TCP / IP堆栈将知道您正在联系本地IP,它实际上将在适当的以太网设备中返回。在正确配置的环境中,使用域名的唯一瓶颈是DNS解析时间。联系外部DNS可能会在配置中增加额外的延迟。但是,如果您将域名添加到/ etc / hosts文件(Windows上为C:\Windows\System32\drivers\etc\hosts
),您的系统将跳过DNS解析阶段并直接获取IP,这使得这个时间成本不高。
答案 1 :(得分:1)
这取决于如何解析名称。该过程通常首先是/etc/hosts
,然后是DNS,如果失败的话。如果您localhost
中有/etc/hosts
,那么将whatever.wherever
放入文件中会使其以相同的速度解析。