大约十年前,我一直在从事小型自由职业 IT 工作(以及其他工作)。我建立或重建的本地网络安排多得数不清,最近,我一直在研究我的网络知识中仍然存在的一些重大空白。总而言之,虽然我绝对不会称自己为“专家”,但我认为目前我已经很好地掌握了网络边界内的工作原理,并且对大多数网络基础知识(OSI 堆栈的各层、TCP/IP、DNS、MAC 寻址和 ARP、高级协议等)有了相当的了解。
然而,前几天我突然想到:“我该如何向别人解释在互联网上路由数据包实际上是如何工作的?”我意识到我很难回答这个问题。
现在,我至少对边界网关协议是什么、做什么、路由表是什么、互联网基础设施对等点是什么有一些了解。但我承认,我并不真正理解这些和其他东西是如何决定的路由器实际上会对数据包做什么将其移向其目标 IP 地址。
那么,互联网上的路由器在收到数据包后,如何决定下一步将其转发给哪个路由器呢?那那么路由器是否知道应该将数据包转发到哪个最佳路由器?正如我所说,我对与 Internet 路由基础设施相关的元素和概念有一些了解,但我不清楚如何将所有东西组合在一起,才能真正让给定的路由器做出良好的路由“决策”,决定将数据包发送到哪里,以便正确地将数据包移动到最终目的地。
(注:我查阅了大量资源,试图更好地理解这一点。但到目前为止,我遇到的大多数问题要么(1)省略了互联网上的路由器如何知道将数据包发送到下一跳的技术主题,要么(2)陷入了协议等技术细节和术语中,以至于很难了解路由器决策点上所有事物是如何结合在一起的。我认为这里是获得该问题实际技术答案的最佳场所,非网络专家也可能理解该答案。)
答案1
正如您提到的,BGP 是您的基本答案。
我将尽力总结这一点,但答案可能会非常长且复杂。
IP 地址由 ARIN 和其他一些类似的国际组织分配,这些组织负责分配和跟踪 IP 地址空间。
然后,ISP 的边界路由器(无论它们位于何处)会通告它们是所述 IP 地址空间的目的地,并且它们还可以通告到达它们的最佳路径。
网络工程师还可以使用各种算法和设置等来配置路由器,使其采用特定路线到达目的地。例如,避开已知的不良运营商或更复杂的场景。
但同样,您正在寻找的是 BGP 及其众多选项。
一些可供进一步阅读的链接: http://searchtelecom.techtarget.com/feature/BGP-essentials-The-protocol-that-makes-the-Internet-work http://www.cisco.com/c/en/us/support/docs/ip/border-gateway-protocol-bgp/13753-25.html
答案2
路由器使用路由协议在它们之间分发有关每个网络在互联网上的位置的信息。参与路由协议的每个路由器都会建立一个路由表(其他路由器大多使用预配置的默认路由)。每个路由表条目基本上都表示“要到达前缀 P 内的目的地,请通过接口 I 发送到下一跳地址 A”(除非目的地位于直接连接的网络上,在这种情况下没有下一跳地址)。
当路由器要将数据包发送到目的地时,它会查找与其匹配的最长前缀的条目,然后按照其方向转发数据包。路径上的每个路由器都使用相同的机制,数据包最终到达目的地。
实际实现利用了优化,例如缓存和自动将地址与路由表匹配的硬件功能,但以上是基本算法。
答案3
路由器有一个路由表,其中包含有关将数据包发送到何处的信息。如果它是一个简单的家用路由器,它可能有两个条目;本地网络(例如 192.168.1.0/24)直接连接到 LAN 接口,其余所有内容都通过 WAN 接口上的默认路由发送到网关地址(下一跳),该地址是 ISP 管理的路由器。
如果路由表像本例一样简单,则可以手动填充路由表,或者通过运行某些路由协议(如 BGP 或 OSPF)来与对等方通信并计算路由表的内容。