机器如何在网络中设置路由?

网络工程 网络 联网 互联网 dns
2022-02-11 08:08:56

所以我一直在阅读一些关于网络的内容,我对域名解析后究竟发生了什么感到有点困惑。

可以说我对"some.website.com". 首先,我的请求是我的ISP然后我ISP检查他们的cached DNS; 请求一直到root server; 名称服务器,A 记录...(我可能搞砸了 中的一些步骤DNS,我仍在学习,但我了解了他们的总体思路)。最后,名称被解析。我们已经找到了IP该站点的x.x.x.x. 那会发生什么?我的电脑和 xxxx 怎么知道如何互相交谈?如果我用人类信使类比,我会告诉一个人去给我拿一个包裹,我会给他位置的地址和一张地图(他可能已经有了)。

当涉及到计算机时,地址将是IP. 但是,知道IP并不能准确地告诉我在哪里可以找到那台计算机(如何找到它?)或者是吗?所以我的问题是IP找到之后,两台计算机如何找到相互通信的路由?地图的类比是什么?

我有一个猜测,所以我想的是,我的电脑会问我ISP,如果他认识任何有 xxxx的人IP,我ISP对其他连接的设备做同样的事情,然后这些设备做同样的事情,直到它们成为一个结束节点(没有更多连接,但他们正在与之交谈的人除外)或 xxxx 自己。如果它们是结束节点,则到达它们的路径将被视为失败,但如果它们导致 xxxx,则它们将被视为与我的计算机通信的可能方式。在这些可能的路径中,最短的将是首先找到 xxxx 的路径,并且将一直使用到中断之间的节点。但这听起来是一个非常慢的算法,并且随着更多节点添加到系统中,它甚至会变得更慢. (这是接近正确的方式还是很远?)

2个回答

我的电脑和 xxxx 怎么知道如何互相交谈?如果我用人类信使类比,我会告诉一个人去给我一个包裹,我会给他位置的地址和一张地图(他可能已经有一个)。

确切地说,一个 IP 数据包上同时包含源 IP 地址和目标 IP 地址,就像一封信的信封一样。

您的主机会将目标 IP 地址与其配置的网络进行比较,以查看目标是否是本地的。如果是这样,它会创建一个包含直接发往本地目的地的 IP 数据包的帧。如果目标 IP 地址在不同的网络上,它会创建一个发往其配置的网关(路由器)的帧。然后它将帧从网络接口发送出去。

路由器将剥离帧,检查数据包上的目标 IP 地址,将其与其路由表进行比较,然后转发它,为下一个接口网络创建一个新帧,或者如果没有找到匹配的路由表,则丢弃它。同样的事情发生在每个路由器跃点上,直到目标网络,目标主机在该网络中获取数据包。

目标主机从数据包头中获取源地址,并将其用作任何回复的目标。

我的电脑和 xxxx 怎么知道如何互相交谈?

他们真的没有。但他们知道该问谁。

路由是一项集体努力。大多数路由器网关只知道少数其他路由和网关。只有少数路由器需要知道所有路由。

一个大大简化的视图:

  • 您的计算机通过目标 IP 看到目标是远程的,因此需要网关。它只知道您的边缘路由器作为默认网关,因此数据包会到达那里。
  • 您的边缘路由器只有一条到您的 ISP 的默认路由,因此数据包会继续存在。
  • 现在,您的 ISP 路由器已经知道所有路由和许多网关。它选择最好的一个并将数据包转发到那里。
  • 路由过程继续进行,直到到达目的地。最后一跳的网关通常只需要再次知道很少的路由。

这些都是所需的机制。反向路径的工作方式几乎相同。

在实践中,涉及更多的路由器,并且数据包通常不仅从源 ISP 到目标 ISP,而且可能跨越其他几个(运营商)。您的 ISP 可能使用多个核心路由器,并且您的网络中也可能有多个路由器。