数据包如何从源到目的地或从客户端到服务器

网络工程 路由 联网
2022-03-01 03:39:03

我试图了解数据包如何从客户端到服务器。我知道它会离开本地交换机并前往互联网以路由到目的地,但是在这之间会发生什么?

1 <1 ms <1 ms <1 ms BrightBox.ee [192.168.1.1] 2 * * * Request timed out. 3 * * * Request timed out. 4 6 ms 5 ms 5 ms 213.1.114.77 5 6 ms 6 ms 6 ms 213.1.67.166 6 7 ms 12 ms 10 ms 87.237.20.136 7 8 ms 8 ms 8 ms 212.187.166.149 8 8 ms 8 ms 8 ms 149.6.8.142 9 8 ms 8 ms 8 ms 151.101.129.111

假设我从 192.168.1.19 前往 151.101.129.111。我了解 TCP/IP 层以及链路层、传输层等的概念,但是当数据包被转发到 213.1.114.77 的路由器时,它如何知道 213.1.67.166 之间存在链路(表中的 5 ) 和 151.101.129.111。我还知道每个路由器上的路由表,这些路由表维护着它所连接的路由器列表。

希望你们明白我想问什么。

3个回答

当一个数据包被转发到 213.1.114.77 的路由器时,它如何知道 213.1.67.166(表中的 5 个)和 151.101.129.111 之间存在链路?

简短的回答:每个路由器都会根据从其他路由器获得的信息做出自己的路由决策。因此,第 5 跳的路由器告诉第 4 跳的路由器它(R5)可以到达 151.101.129.111。这就是 R4 需要知道的一切。

R5 知道它可以到达该地址,因为 R6 告诉它。等等。

路由器通过使用路由协议了解彼此的路由。最常见的是 OSPF、EIGRP 和 BGP。

@eddie 的链接也不错。

数据包从一个路由器逐个一跳地传递到下一个路由器。

至于路由器如何知道线路下的链路 - 它们通过路由算法进行通信。5 有一个到 6 的链接,它告诉 4 。所以 4 在它的路由表中有一个条目,上面写着“如果我得到任何发往 87.xxx 的东西,请将其发送给 5,因为它告诉我它知道将其发送到哪里。” 4 不知道也不关心 5 如何将其变为 6 的细节。

路由器有四种方法来确定适当的路由决策。

无特定顺序:

A) 本地连接的网络

B) 最后的网关(默认网关)

C) 手动定义的路由(静态路由、路由映射、基于策略的路由等)

D) 通过路由协议(RIP、OSPF、BGP 等)从邻居路由器更新

方法 A:仅在 Hop 8 (149.6.8.142) 上起作用,除了可能是 Hop 8 意识到向其他跃点通告路由的方式之外,它并不是很相关,但它总是自动应用于任何给定的路由实例。

方法 B: 就像使用台式机(从技术上讲,计算机被视为路由器),路由器通常有一个最后的网关,通常配置到单个所有者(ISP/公司)网络中的另一个路由器,该网络更了解要承担的其他路由。

-- 这不太可能,因为它确实被用作最后的手段,但是在不知道当前路由器的细节的情况下,不可能知道这是否是使用最后手段的情况。

方法 C: 就像使用您的桌面一样,您可以手动定义静态路由,或手动定义复杂的路由策略和路由映射,这将告诉路由器将数据包转发到任何给定目的地的位置。

今天,这仅出现在仅用于简单目的的小型网络或设备中,并且也最有可能拥有最后的网关。同样,它可能在这里发挥作用,但不可能肯定地说。

方法 D: 现代路由协议通过几种方法与邻居共享通告来更新路由器的路由表。

虽然这些方法基本上是方法 C 的自动化,但它们引入了高级方法来确定给定数据包到其目的地的下一跳的最佳路由。

从本质上讲,它们都需要路由器与其直接邻居交谈,以告诉他们通往他们知道的其他网络的路由,这些路由可能是通过列出的任何方法获得的。

根据协议和它的配置,可以通过多种方式共享路由和做出决策,这需要更深入地研究各个路由协议。