2011-02-28 116 views
6

这可能是一个非常愚蠢的问题,但我很好奇。为什么youtube.com的解析IP直接连接到google.com?

youtube.com的ping显示已解析的IP为74.125.127.93。现在,如果您在浏览器http://74.125.127.93/中访问此IP,则您会希望显示youtube页面。搜索引擎出现了。

有人可以解释幕后发生了什么吗? 谢谢。

+0

因为谷歌拥有youtube – Zimbabao 2011-02-28 12:37:08

+0

@ Shog9不应该是另一种方式吗? – swalog 2015-01-23 09:12:00

回答

13

因为有许多服务器名称,但只有几个IP地址。

让我解释一下。 IPv4允许2^32(40亿)不同的IP地址。听起来很多,但大部分都不能使用。 IP地址始终以块分配。最小的块是255个地址(8位-1广播地址),最大的块是1600万个地址(2^24-1)。中等大小的块有64k地址(16位)。

如果你是一个ISP,你会得到一组固定的地址。但是,当然你总是要求一个比你绝对需要的块更大的块 - 否则你将用完地址,这对ISP来说真的很糟糕。你可以要求两个16位块,但加入这两个块总是麻烦。

上周,我们用完了IPv4块。所以......你有一个64k块,不能再多了。但是你有150,000个想要运行Web服务器的客户。

解决方案:virtual servers。你告诉你的DNS“x.y.com”是13.242.251.17,“a.y.com”是同一个地址,“b.y.com”也是。

当客户端发出请求时,它会执行一个始终返回相同IP的DNS查询。然后它发送一个HTTP请求到它刚刚得到的IP。诀窍是HTTP请求包含服务器名称。所以,即使所有请求都转到相同的IP地址,Web服务器仍然可以找出您真正想要的人。

只要你给它的名字。如果您使用IP,您将获得Google搜索引擎的默认服务。

[编辑]telnet,你可以自己尝试。与telnet 74.125.127.93 80启动它,然后键入:

GET http://www.google.com/index.html HTTP/1.1 

命中进入两次。您将获得您所在国家Google主页的重定向。现在键入:

GET http://www.youtube.com/ HTTP/1.1 

命中进入两次。这一次,YouTube首页将被退回。

+0

有没有什么方法可以使用IP并仍能达到所需的服务? – 2015-04-15 07:32:12

+0

@NikhilGirraj:我不明白这个问题。您可以使用带telnet的IP或DNS名称。 – 2015-04-15 09:01:49

+0

我很抱歉,我不够清楚,我的意思是访问服务器上的非默认服务,而不使用“Telnet”并使用其IP而不是域名。 例如 - 使用Google.com和Youtube.com共享的IP访问“youtube”。 – 2015-04-15 09:08:14

3

Google拥有Youtube。
它们可能使用相同的负载平衡服务器以及基于名称的虚拟主机来检测您尝试浏览哪个站点。
这可以通过查看客户端提供的主机头(这是您尝试浏览的域)来实现。由于主机标头不同,因此当您直接使用IP时,并不总是到达同一个站点,就像您穿过域一样。

1

Google正在使用virtual hosting - 两个(或更多)服务位于同一个IP地址上,Web服务器处理请求的位置由请求的URL决定。