带宽问题:在我自己的服务器上调用“服务”(从我的服务器)

带宽问题:在我自己的服务器上调用“服务”(从我的服务器)

我正在运行一个网站,并且我有一些想要调用的 fastcgi 应用程序 - 但是,这些应用程序不能直接供公众访问 - 他们通过 RESTFUL 服务间接访问它们,然后使用 Curl(或其他机制)从 fgci 应用程序中获取数据。

我的问题是带宽问题。假设我使用 Curl 或 PHP 的 readfile(),它涉及指定 URL - 类似于http://localhost/fastcgi-bin/test.fgci

那么“网络”是否足够聪明,知道地址位于本地,因此不需要“到外面”,或者请求是否仍会被发送到外部 DNS,然后由外部 DNS 将该地址解析为我的计算机 IP 地址?

基本上,我想知道采用这种架构是否会增加我的带宽消耗。

答案1

您发送到同一台机器的任何数据包都应通过环回接口发出(并返回)——它们不会通过网络发出。您无需为它们付费。

您可以通过查看路由表来验证这一点。您没有提到您使用的是什么平台,所以我无法给出具体的例子,但从我的笔记本电脑来看:

sveiss@brakiri:~$ route get 192.168.1.1
   route to: 192.168.1.1
destination: 192.168.1.1
  interface: en1
      flags: <UP,HOST,DONE,LLINFO,WASCLONED,IFSCOPE>
 recvpipe  sendpipe  ssthresh  rtt,msec    rttvar  hopcount      mtu     expire
       0         0         0         0         0         0      1500      1198

sveiss@brakiri:~$ route get 192.168.1.63
   route to: 192.168.1.63
destination: 192.168.1.63
  interface: lo0
      flags: <UP,HOST,DONE,STATIC>
 recvpipe  sendpipe  ssthresh  rtt,msec    rttvar  hopcount      mtu     expire
   49152     49152         0         0         0         0     16384         0 

sveiss@brakiri:~$ route get 127.0.0.1
   route to: localhost
destination: localhost
  interface: lo0
      flags: <UP,HOST,DONE,LOCAL>
 recvpipe  sendpipe  ssthresh  rtt,msec    rttvar  hopcount      mtu     expire
   49152     49152         0         0         0         0     16384         0 

看一下这些interface:行:发往机器本地地址(192.168.1.63 和 127.0.01)的流量通过lo0环回接口发送。发往其他地方的流量将通过接口通过网络发出en1

现在,对于名称解析,您说得对,如果您为机器使用 DNS 名称,DNS 查询和响应很可能会超出本地范围。但应用程序流量不会:它将遵循路由表中的规则并使用环回接口,如上所述。

根据您的操作系统和配置(DNS 缓存是否打开?您使用的 DNS 名称是否列在本地主机文件中?),DNS 查询所消耗的带宽量将从零到极小 - 比其余外部流量小几个数量级。

答案2

任何环回数据包都不会进入网络,正如上面的发帖者所说。您不会使用任何带宽来处理本地请求。

相关内容