网络请求如何辨别地理位置

网络请求如何辨别地理位置

我读过很多有关互联网层的内容,但还没有找到答案。假设你在城市 x,而服务器在城市 y。沿着绵延数英里的线路,谁来控制,他们又如何控制数据走哪条路径?此外,一旦数据到达城市 y,他们如何通过正确的路径将数据发送到服务器的房屋或特定位置。

我有一个非常类似的有关手机的问题,但如果这不是合适的论坛,那么请忽略这部分问题并关注上面的问题:当拨打电话号码 xxx-xxxx 时,号码 xxx-xxxy 是否会听到请求并直接忽略它?

答案1

你其实是在问两个问题。知道你在世界上的物理位置与实际将流量路由给你是不同的。讽刺的是,网站根本不需要知道你在哪里,而知道你在哪里也无助于他们将流量路由给你。

辨别您的地理位置:
在典型的家庭网络设置中,您的路由器有一个由 ISP 分配的公共 IP 地址,世界上的其他人都可以看到。您的 ISP 已由某个区域机构分配了一组地址,这些地址因国家/地区而异,但最终都来自互联网号码分配机构 (IANA)。

IANA 维护着一个数据库,其中包含互联网上的所有 IP 块、它们被分配给谁以及它们位于何处。IANA 还维护着遍布全球的服务器网络,其中还保存着互联网上所有域名的列表。这些数据库是公开记录;互联网上的任何人都可以查阅其中包含的信息。

当您发出网络请求时,服务器就会知道您的公共 IP 地址。无需任何魔法或回溯即可找到您在世界上的位置。由于 IP 地址块被分配给地理区域,因此网站只需查找您并知道(至少精确到城市)您的实际位置。

数据如何路由给您:
除了 ISP 为您提供的公共 IP 地址外,路由器还拥有一个私有 IP 地址,该地址仅对网络上的计算机可见。路由器将成为您的默认网关

假设您访问 Google 的网站,其地址为 173.194.33.112。您的计算机不知道如何到达该地址,因此它会将请求发送到您的默认网关(您的路由器),并相信它知道如何到达那里。

问题是你的路由器也不知道如何到达这个地址,所以它会把请求转发到它的默认网关(也就是你的 ISP 拥有的某个路由器),相信知道如何到达该地址。

ISP 的路由器可能也不知道如何到达该地址,因此它会将您的请求转发到另一个网关(可能是其他互联网提供商的路由器),相信 IT 知道如何到达该地址。

该过程会根据需要不断重复,直到最终世界上某个网络上的某个路由器知道如何访问 Google 的某个路由器,然后后者可以从那里接手工作。

沿途的每次“跳跃”都不会携带有关其他跳跃的任何信息。将流量从 A 点传输到 B 点所需的唯一信息是目标地址(您要去的地方)和您计算机的源地址(以便目的地可以回复您)。就是这样。回复会经过相同的多跳旅程返回给您。

每个数据包都会发生这种情况。每秒发生数百万次。坦率地说,它工作得如此出色真是令人惊讶。互联网上没有一个路由器可以完整地了解整个互联网。这是不可能的;互联网太大了。

正如你所看到的,在哪里你知道,如何联系您是两件截然不同的事情,而且一件事情并不是另一件事情的必要条件。

答案2

简而言之,每个设备都拥有足够的信息来确定接下来将信息传递给哪个设备。这些信息要么包含在它接收的信息中,要么存储在该设备本地(通常是某种组合)。

例如,我的计算机有足够的信息来确定是否应该将数据包发送到我的 LAN 上的另一台计算机或我的路由器。这就是它所需要的。每个数据包都包含目标 IP 地址,计算机知道哪些目标 IP 地址属于我的 LAN,并且如果 IP 地址超出该范围,计算机知道如何将数据包转发到我的路由器。

同样,我的路由器有足够的信息来判断数据是否应该发送到我的 LAN 上的设备或我的 ISP。这就是它所需要的。我的路由器所连接的设备有足够的信息来判断流量是否应该发送到直接连接到它的某个客户,这就是它所需要的。

最终,您将到达“核心”路由器,这些路由器会确定流量需要转到哪个提供商,并找到“通往”该提供商的路由。这些路由器还会执行策略,并确保从 A 到 C 的流量只有在 B 同意承载该流量的情况下才会通过 B。互联网的全球路由结构由核心路由器之间的通信维护,使用称为边界网关协议

您的手机问题的答案取决于所使用的具体技术。可能也可能不会,但在几乎所有方案中,流量都是加密的,其他设备不会拥有密钥。通常,设备会收到发送到其他设备的流量的一部分,但很少会收到全部流量。

相关内容