尤其是 CentOS。假设机器位于 1.2.3.4 上运行 httpd 并发出请求http://1.2.3.4,机器是否立即知道该请求是发给自己的,因此在内部路由它,或者它是出去又回来?
我有兴趣了解这是如何工作的。
答案1
是的,机器立即知道该请求是发给它自己的。它通过将数据包的目标地址与分配给网络接口的所有已知 IP 地址进行比较,将数据包标记为当地的,查询一个特殊的路由表 ( ip route show table local
),该表会根据本地分配的 IP 地址的规则自动更新,并替换网络接口以传递它lo
,即使目标地址不是(在 ping 本地地址时127.0.0.1
尝试)。tcpdump -ni lo
您还可以使用它ip route get 1.2.3.4
来显示 Linux 内核如何对路由 ( local
) 进行分类,以及它将通过什么接口传递数据包,以及网关等其他信息。