我知道,在Linux和许多其他操作系统上,环回TCP接口是一种特殊情况:校验和数据是禁用的,数据在一个过程中被原子复制到下一个过程,整个网络堆栈的整个部分都忽略了等。 我的问题,我能够超越所有链接告诉我这种优化的存在是:Linux可以检测到回环等效吗?它是否可以检测到与
server1
的连接实际上是路由到注册到本地接口的IP地址,因此可以使用等效的环回?这是TCP标准允许的,如果是的,则规则是什么?
我认为我从未见过这种发现发生在现实生活中,而且很明显,我不能第一个想到这一点。如果标准可以允许这种优化,是否有原因没有执行?这是如何统治的?
它自己的地址是局部的,并且默认情况下确实通过它不必检测到这一点,因为它
knows
lo
接口进行了路由。
$ ip addr show to 10.35.14.3
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP>
inet 10.35.14.3/16 brd 10.35.255.255 scope global dynamic noprefixroute wlan0
$ ip route get 10.35.14.3 fibmatch
local 10.35.14.3 dev wlan0 table local proto kernel scope host src 10.35.14.3
$ ip route get 10.35.14.3
local 10.35.14.3 dev lo table local src 10.35.14.3 uid 1000
^^^^^^
通过环回接口对IP数据包进行路由对TCP没有影响 - 这样做并不意味着其他TCP级优化还可以进行 - 因此不受TCP标准的控制。