Я портировал приложение для поддержки IPv6, используя популярные обучающие программы. Я решил использовать только один прослушиватель сокетов для обоих протоколов. Теперь я понял, что должен правильно установить IPV6_V6ONLY
(он работает только на моем x86-Linux, но не на моей ARM).Слушатель сокетов для IPv6 и IPv4
Действительно ли это путь? Некоторые говорят, что IPV6_V6ONLY
не должен использоваться (видимо, он устарел, из-за сопоставления IPv4 через провод), некоторые говорят, что использование одного сокета для обоих протоколов в порядке.
Итак, я смущен. Каково текущее состояние этой проблемы? Я неправильно понял проблему?
Немного разъяснений: V6ONLY влияет на то, как программное обеспечение обрабатывает пакеты. Это не влияет на биты на проводе. Со стороны программного обеспечения все выглядит как пакет IPv6. Если на проводе это фактически пакет IPv4, то программная сторона делает его похожим на пакет IPv6 и сопоставляет адреса IPv4 с адресами IPv6, которые являются «:: ffff:», за которыми следуют 32 бита адреса IPv4. V6ONLY только изменяет это в программном обеспечении. На проводе они являются обычными пакетами IPv4 и IPv6. Адреса ':: ffff:' никогда не видны на проводе. –
Ах, да, для уточнения. Так что это только устарело на проводе, и возможно использование «IPV6_V6ONLY». Как обращаться с ним, если он поддерживается или нет, это другое обсуждение :) – duedl0r