请允许我详细说明。
最近让我震惊的是,如果你想访问一台机器,你需要知道它的 IP 地址。很公平。但是如果它在路由器后面,那么您必须正确配置路由器以将您的数据包转发到目标机器,这可以通过使用端口号来完成,再次,足够公平。
但它引出了一个稍微复杂的问题,如果您的目标机器位于 2 层或更多层路由器后面怎么办?这是如何运作的?
我确信它可以工作,因为这样的机器可以毫无问题地浏览互联网。
帮助?请?
请允许我详细说明。
最近让我震惊的是,如果你想访问一台机器,你需要知道它的 IP 地址。很公平。但是如果它在路由器后面,那么您必须正确配置路由器以将您的数据包转发到目标机器,这可以通过使用端口号来完成,再次,足够公平。
但它引出了一个稍微复杂的问题,如果您的目标机器位于 2 层或更多层路由器后面怎么办?这是如何运作的?
我确信它可以工作,因为这样的机器可以毫无问题地浏览互联网。
帮助?请?
路由器通过三种方式了解路由:
在接口上接收数据包的路由器将查看数据包的目标地址(正如 Ron Trunk 指出的那样,端口与路由决策无关),它会查看其路由表以查看它是否知道如何将数据包转发到其目的地。
如果路由器在其路由表中找不到任何类型的匹配项,它将丢弃该数据包。
如果路由器找到匹配项,即使它只是默认路由,它也会将数据包从新接口转发到其目的地。指向数据包目的地的接口可以连接到另一个路由器,新路由器将重复第一个路由器所做的事情。这个路由器查找和转发一直持续到数据包到达目标主机所在的网络。
这是个好问题!
如果我没记错的话,这就是你的情况: (Router A)[10.10.10.1][Gig0/1]-----------[10.10.10.2][Gig0/1](Router B)
如果您将另一个路由器(路由器 C)添加到等式中,您最终会得到以下结果:
(路由器 A)[10.10.10.1][Gig0/1]-----------[10.10.10.2][Gig0/1](路由器 B)[Gig0/2][10.20.20.1]- --------(路由器 C)[Gig0/2][10.20.20.2]
现在让我们添加服务器:
(服务器1)[20.10.10.1][Gig0/2]----[Gig0/2][20.10.10.2](路由器A)[10.10.10.1][Gig0/1]-------- ---[Gig0/1][10.10.10.2](路由器B)[10.20.20.1][Gig0/2]---------[Gig0/2][10.20.20.2](路由器C) [Gig0/1][30.10.10.2]-----[Gig0/1][30.10.10.1](服务器2)
如果(服务器 2)想要向(服务器 1)发送数据包,那么(路由器 C)将必须知道如何处理它。路由器有 IP 表,它们填充有路由协议(您可以阅读有关它们的更多信息:RIP、OSPF、BGP .. 其他),在这种情况下,其中一个协议将负责让每个路由器知道连接到哪个网络谁。在此示例中,路由器 C 将知道,要访问 20.10.10.0/24 网络,它必须将该流量发送到路由器 B,这就是 Internet 的工作原理!(基本示例)
我希望我自己解释
根据您对端口的提及,我假设当您说“路由器”时,您实际上是指“NAT 盒”。在家庭和小型商业市场中,默认配置为 NAT 盒子的盒子作为“路由器”出售。
所以你有你的客户端机器,你的客户端机器和互联网之间有两个 NAT 盒子。您的客户想要从 Internet 上的服务器检索网页。
会发生什么。
如果您想在两个 NAT 框后面运行服务器,则必须在两个 NAT 框中手动配置端口转发规则,以便外部 NAT 框将流量指向内部 NAT 框,然后内部 NAT 框将其指向客户端.
直到第四句话,你才达到目标:
但是如果它在路由器后面,那么您必须正确配置路由器才能将数据包转发到目标机器,这可以通过使用端口号来完成
那句话的最后一部分是不准确的,即“可以使用端口号来完成”。您的数据包到达端点 NIC 卡不需要端口编号。当数据包被特定应用程序消耗(路由到/解包)时,端口号在端点(计算机)中发挥作用。
IP 寻址是通过基于 IP 的网络转发数据包的方式。就是这样。路径中的每个路由器都只有一条到端点地址的路由,或者没有。