sha*_*yan 0 linux routing kernel
linux的哪一部分负责在接口之间“转发”流量?
我知道“ /proc/sys/net/ipv4/ip_forward ”,但是操作系统、内核或模块的哪一部分实际上正在检查此设置并决定是否执行转发?
内核是否坐在那里并且根据路由表无意识地将任何接收到的未寻址到这台机器的数据包转发到另一个接口?
这是我一直想深入了解的一个非常基本的问题。
linux的哪一部分负责接口之间的“转发”流量?
IP 网络堆栈。所有 IP 协议——UDP、TCP 等——都运行相同的基本路由工具和行为。IPv6 也是如此,它的实现略有不同,但基本相同的架构。
内核是否坐在那里并且根据路由表无意识地将任何接收到的未寻址到这台机器的数据包转发到另一个接口?
是的。除了“无意识”部分,您的意思是“按设计”。
过程很简单:当一台确认IP规范的机器收到一个数据包时,它会做出一些非常简单的决定;基本流程是:
该ip_forward(...)
方法作为整个算法的一部分被调用,并且与您想象的一样简单。从根本上说,IP 是一个非常非常简单的协议。