最近我在使用IPv6的伯克利套接字API,并注意到IPv6地址(sockaddr_in6
)有一个名为sin6_scope_id
的字段,而这个字段不是IPv4地址的一部分。
经过一番搜索,我了解到scope_id
旨在标识网络接口,因为多个网络接口可以具有相同的链路本地IPv6地址。这很有道理,但我不明白的是,如果IPv4中没有类似于scope ID的东西,那么IPv4如何处理这个问题呢?
内核中是否有机制防止将多个IPv4接口分配给相同的链路本地地址?
如果是这样的话,那么为什么需要发明IPv6的scope ID,而不采用与IPv4相同的解决方案呢?
此外,scope_id是否仅用于区分具有相同链路本地地址的接口,还是还有其他用途?