路由表(Routing Table)是网络设备(如计算机、路由器、交换机等)用来确定数据包传输路径的数据库。每当网络设备收到一个数据包时,它会查找路由表,决定将数据包转发到哪个网络接口或网关。下面介绍路由表的基本组成、功能以及如何查看和管理路由表。
路由表的基本组成
路由表通常包括以下几项:
- 网络目标(Network Destination): 数据包要到达的目标网络或主机。通常以 IP 地址或子网表示。
- 网络掩码(Netmask/Subnet Mask): 用于确定网络目标中的哪一部分是网络地址,哪一部分是主机地址。
- 网关(Gateway): 数据包应该转发到的下一跳地址。如果网络目标是本地网络,网关可能为空。
- 接口(Interface): 数据包应该通过的网络接口(如以太网端口、Wi-Fi 端口)发送。
- 跃点数(Metric): 到达目标网络的代价或优先级。跃点数越低,优先级越高。
Linux中还有一个Flagsz字段:
- U(Up):表示该路由是激活的,可以使用。
- H(Host):表示目标是一个主机地址,而不是一个网络地址。
- G(Gateway):表示该路由需要通过网关发送数据。
- R(Reinstate):表示路由是重新启用的。
- D(Dynamic):表示路由是动态添加的。
- M(Modified):表示路由已经被修改。
- A(Address):表示该路由是一个广播地址。
- C(Cache):表示该路由是来自路由缓存
路由表的功能:
- 数据包转发: 根据目的 IP 地址决定数据包应该转发到哪个接口或网关。
- 路径选择: 当有多个路径可用时,根据跃点数选择最优路径。
- 网络分段: 将网络划分成不同的子网,优化网络流量和安全性。
- 动态调整: 使用动态路由协议(如 OSPF、BGP),路由表可以根据网络拓扑的变化动态更新。
windows
windows添加路由表只需要指定网关,不需要指定接口,操作系统会自动选择合适的网络接口来发送数据包,以便达到指定的目标网络。
例如你指定网关是192.168.137.1,则window会根据网卡的配置找到它的接口地址是192.168.137.2
# 打印路由表
route print
# 添加路由表: route [-p] add <目标网络> mask <子网掩码> <网关> metric <跃点数> [IF interface]
# 删除路由表
route delete <目标网络>
# 修改路由表, CHANGE 只用于修改网关和/或跃点数
route CHANGE 157.0.0.0 MASK 255.0.0.0 157.55.80.5 METRIC 2
linux
# 打印路由表
route
# 添加路由表: route add -net <目标网络> netmask <子网掩码> gw <网关>
# 删除路由表: route del -net <目标网络> netmask <子网掩码>
# 修改路由表
通常需要先删除旧路由,再添加新路由