我是一名程序员,正在努力填补我对网络基础知识理解的巨大空白。我一直在读一本好书(网络圣经作者:Sosinki),但我发现其中包含大量“假设”信息,其中术语/概念被抛给读者而没有进行适当的介绍。
我理解“路由”是网络中的一条路径。但我很难想象一些基于路由的概念。即:
- 路由实际上是如何在硬件中体现出来的?它们只是在网络层计算然后由传输层执行的 IP 地址列表吗?
- 所谓的路由表中存在什么样的数据?路由表只是保存这些 IP 地址列表的机制吗(请参阅上文)?
- 与动态路由相比,静态路由的性能优点/缺点是什么?
答案1
路由不是由任何硬件定义的。路由器的工作是查看 IP 并确定数据包是属于其网络还是其他网络,然后根据其决定将其发送。路由器实际上只关心下一步,而不关心之后的事情,没有任何单个设备可以路由数据包的整个路径。
路由表包含路由器需要知道的信息,以决定数据包是否属于其自己的网络,以及如果需要将其发送到其他地方,则将其发送到的下一跳。从维基百科:
The routing table consists of at least three information fields:
-the network id: i.e. the destination network id
-cost: i.e. the cost or metric of the path through which the packet is to be sent
-next hop: The next hop, or gateway, is the address of the next station to which the packet is to be sent on the way to its final destination
Depending on the application and implementation, it can also contain
additional values that refine path selection:
-quality of service associated with the route. For example, the U flag indicates that an IP route is up.
-links to filtering criteria/access lists associated with the route
-interface: such as eth0 for the first Ethernet card, eth1 for the second Ethernet card, etc.
选择静态路由或动态路由完全取决于应用。静态路由的容错能力不强,但由于路由永远不会改变,因此可能更容易排除某些网络问题。
答案2
在网络术语中,“路由”(用作名词时)是指可用于到达特定目的地(由 IP 地址标识)的可能的下一跳列表(中间路由器(第 3 层设备)的 IP 地址)。作为动词,“路由”与“发送”相同。
假设您想从 host1 向 host2 发送 IP 数据包:host1[20.0.0.1]====router1[1.1.1.1]====router2[2.2.2.2]====router3[3.3.3.3]====host2[40.0.0.1]
因此,从主机 1 到主机 2 的“路由”或路径是:1.1.1.1>2.2.2.2>3.3.3.3
笔记:
- 从给定的源到目的地可以有多条“路由”。这是因为每个路由器都决定下一个将数据包发送到哪里(即,它决定谁将成为下一跳路由器)。这些下一跳构成了到达目的地的“路由”。
- 在路由表中,“路由”指的是网络。路由表基本上包含“网络”和这些网络的“下一跳地址”。它还包含其他信息,例如成本(通常在给定网络有多个下一跳可用时使用)。
问题 1 的答案:路由“写入”在路由设备的数据包转发引擎 (ASIC) 中。它以位的形式存储,当数据包进行路由时,会发生以下情况:a 对不同的校验和和以太网类型进行基本检查。b 如果接收帧中的 DMAC(目标 MAC)与接收该帧的端口的 MAC 地址匹配,则考虑对数据包进行路由。c 转发表(它与每个“网络”只有一个“下一跳”的路由表相同)用于决定下一个将数据包发送到哪里。传入数据包中的 DIP(目标 IP)用于对转发表中存在的“网络”条目执行逐位 AND 运算。[有关更多详细信息,请参阅问题 2 的答案]
问题 2 的答案:示例路由表如下所示:
IPv4 路由表
活跃路线:
Network Destination Netmask Gateway Metric 20.0.0.0 255.255.255.0 30.0.0.1 25
这意味着所有 DIP(目标 IP)位于网络 20.0.0.0/24 中的数据包都将被转发(路由)到路由器 30.0.0.1。
假设传入数据包的 DIP 为:20.0.0.2。为了“路由”此数据包,需要检测目标网络:
20.0.0.2 和第一个路由表条目的网络掩码(即 255.255.255.0)
0001 0100.0000 0000.0000 0000.0000 0010 AND 1111 1111.1111 1111.1111 1111.0000 0000 = 0001 0100.0000 0000.0000 0000.0000 0000 即 20.0.0.0 [这与路由表中的“网络”条目匹配,数据包将发送到地址为 30.0.0.1 的路由器
问题 3 的答案:当您明确希望采用特定的下一跳,而不是将其留给配置的路由协议(如 ospf)时,可以使用静态路由。此外,使用静态路由扩展网络很困难,因为需要付出更多努力。而且,正如 MaQleod 所说,它不具有容错能力。