可以安全地假设Linux系统上的环回网络适配器将始终被称为“lo” - 这只是一个可能不遵守的命名约定,或者必须始终如此?
答案 0 :(得分:8)
我不知道任何具有除lo
以外的环回接口的Linux系统。如果我编写一个特定于系统的脚本,我会依赖这个命名约定,但是在编写可移植程序时却不会。例如,OSX中的环回是lo0
。
C中一种可靠的方法是在套接字上调用SIOCGIFCONF
ioctl
,迭代接口,在每个接口上调用SIOCGIFFLAGS
ioctl
,并检查哪些接口有设置IFF_LOOPBACK
标记(请参阅/usr/include/linux/if.h
)。
SIOCGIFCONF
还会为您提供界面名称。
答案 1 :(得分:1)
根据我的经验,这是一个普通的名字,尽管你不应该总是相信它。也许枚举接口并寻找地址为127.0.0.1的接口将是要走的路?
答案 2 :(得分:1)
这是一个非常古老的惯例,事实上我还没有看过一个没有把它称为'lo'的Linux盒子/发行版。
但是,* nix系统中的设备名称非常多样化,可以假设它们会发生变化。如果您想要可移植性(在本例中为127.0.0.1),请使用标准。
答案 3 :(得分:1)
接口可以重命名为你想要的任何东西 - 但重命名环回接口的任何人都非常愚蠢,并且应该拥有一个非工作系统:)
是的,您可以枚举接口,并获取其名称。但也许只是假设它会变成“lo”就好了。
答案 4 :(得分:0)
使用127.0.0.1可能是一种安全的方法。
答案 5 :(得分:-1)
RFC3330将127.0.0.0/8
定义为永远是环回子网。
然而,在localhost
中的Windows和c:\windows\system32\drivers\etc\hosts
中的Linux中定义的/etc/hosts
的使用纯粹是惯例。此外,名称lo
是Linux中localhost 接口的典型名称。
如果您必须绝对确定,请使用127.0.0.1
。