struct rtentry 与 struct rtable的关系
时间: 2024-04-25 08:26:32 浏览: 149
Desktop_struct与class的区别_
struct rtentry和struct rtable都是用于表示Linux内核中的路由表中的一条路由。
在早期版本的Linux内核中,使用的是struct rtentry结构体来表示路由表中的一条路由。但是,随着Linux内核的不断升级和发展,struct rtentry已经逐渐被struct rtable所替代。
相比于struct rtentry,struct rtable具有更好的性能和更简单的数据结构。struct rtable中仅包含了与路由选择相关的信息,而且其数据结构更加规整,便于处理和维护。因此,在Linux内核的路由选择机制中,struct rtable更加常用,而struct rtentry则已经逐渐被淘汰。
当内核需要对一个数据包进行路由选择时,它会先根据目的IP地址在路由表中查找对应的路由,如果找到匹配的路由则返回对应的struct rtable结构体。在struct rtable中,有一个rt_dst变量保存了该数据包应该发送到的下一跳地址,有一个rt_gateway变量保存了该路由对应的网关地址。内核会将数据包发送到rt_dst指定的下一跳地址,并在数据包的IP头中加入对应的路由信息。
阅读全文