.\" -*- coding: UTF-8 -*- .\" Copyright 2000, Andi Kleen .\" Copyright, the authors of the Linux man-pages project .\" .\" SPDX-License-Identifier: Linux-man-pages-1-para .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH ipv6 7 "8 февраля 2026 г." "Справочные страницы Linux 6.17" .SH НАИМЕНОВАНИЕ ipv6 \- реализация протокола IPv6 в Linux .SH ОБЗОР .nf \fB#include \fP \fB#include \fP .P \fItcp6_socket\fP\fB = socket(AF_INET6, SOCK_STREAM, 0);\fP \fIraw6_socket\fP\fB = socket(AF_INET6, SOCK_RAW, \fP\fIprotocol\fP\fB);\fP \fIudp6_socket\fP\fB = socket(AF_INET6, SOCK_DGRAM, \fP\fIprotocol\fP\fB);\fP .fi .SH ОПИСАНИЕ В Linux 2.2 реализован протокол Интернета версии 6. Эта справочная страница содержит описание основного программного интерфейса IPv6, который реализован в ядре Linux и в glibc 2.1. Программный интерфейс основан на интерфейсе сокетов BSD; смотрите \fBsocket\fP(7). .P Программный интерфейс IPv6, по большей части, совместим с IPv4 (смотрите \fBip\fP(7)). В этой справочной странице описаны только различия между ними. .P Чтобы привязать сокет \fBAF_INET6\fP к любому процессу нужно скопировать локальный адрес из переменной \fIin6addr_any\fP, имеющей тип \fIin6_addr\fP. При статической инициализации также может быть использован макрос \fBIN6ADDR_ANY_INIT\fP, который раскрывается в константное выражение. В обоих значениях используется сетевой порядок байт. .P Адрес устройства обратной петли IPv6 (::1) доступен в глобальной переменной \fIin6addr_loopback\fP. Для инициализации нужно использовать \fBIN6ADDR_LOOPBACK_INIT\fP. .P Соединения IPv4 могут обрабатываться программным интерфейсом v6 с помощью адресного типа v4\-преобразованный\-в\-v6; то есть программе необходимо поддерживать только данный тип программного интерфейса для работы с обоими протоколами. Прозрачная работа с адресами реализована в функциях библиотеки Си. .P IPv4 and IPv6 share the local port space. When you get an IPv4 connection or packet to an IPv6 socket, its source address will be mapped to v6. .SS "Формат адреса" .in +4n .EX struct sockaddr_in6 { sa_family_t sin6_family; /* AF_INET6 */ in_port_t sin6_port; /* port number */ uint32_t sin6_flowinfo; /* IPv6 flow information */ struct in6_addr sin6_addr; /* IPv6 address */ uint32_t sin6_scope_id; /* Scope ID (new in Linux 2.4) */ }; \& struct in6_addr { unsigned char s6_addr[16]; /* IPv6 address */ }; .EE .in .P Значение \fIsin6_family\fP всегда устанавливается в \fBAF_INET6\fP; в \fIsin6_port\fP указывается порт протокола (смотрите \fIsin_port\fP в \fBip\fP(7)); в \fIsin6_flowinfo\fP указывается идентификатор потока IPv6; в \fIsin6_addr\fP указывается 128\-битный адрес IPv6. Значением \fIsin6_scope_id\fP является идентификатор, зависящий от области адреса. Это новое поле, появившееся в версии Linux 2.4. Linux поддерживает его только для адресов локальной связи (link local); в этом случае \fIsin6_scope_id\fP содержит индекс интерфейса (смотрите \fBnetdevice\fP(7)). .P IPv6 поддерживает несколько типов адресов: однозначные (unicast) — для адресации одного узла, многоадресные (multicast) — для адресации группы узлов, anycast — для адресации ближайшего члена группы узлов (не реализовано в Linux), IPv4\-on\-IPv6 — для адресации узла IPv4, и несколько других зарезервированных типов адресов. .P The address notation for IPv6 is a group of 8 4\-digit hexadecimal numbers, separated with a \[aq]:\[aq]. \&"::" stands for a string of 0 bits. Special addresses are ::1 for loopback and ::FFFF: for IPv4\-mapped\-on\-IPv6. .P В IPv6 используется единое с IPv4 пространство портов. .SS "Параметры сокета" See \fBIPPROTO_IPV6\fP(2const). .SH ОШИБКИ .TP \fBENODEV\fP Пользователь пытался выполнить \fBbind\fP(2) на адрес локальной связи IPv6, но \fIsin6_scope_id\fP в переданной структуре \fIsockaddr_in6\fP содержит некорректный индекс интерфейса. .SH ВЕРСИИ В Linux 2.4 сломана двоичная совместимость \fIsockaddr_in6\fP у 64\-битных узлов из\-за изменения выравнивания \fIin6_addr\fP и добавления дополнительного поля \fIsin6_scope_id\fP. Интерфейс ядра остался совместимым, но программа, включающая \fIsockaddr_in6\fP или \fIin6_addr\fP в другие структуры, уже может не быть совместимой. Это не является проблемой для 32\-битных узлов, например с архитектурой i386. .P Поле \fIsin6_flowinfo\fP является нововведением в Linux 2.4. Оно прозрачно передаётся/считывается ядром в длине переданного адреса. Некоторые программы, которые передают более длинный буфер адреса и затем проверяют длину исходящего адреса, могут перестать работать. .SH ПРИМЕЧАНИЯ Структура \fIsockaddr_in6\fP по размеру больше, чем обычная \fIsockaddr\fP. Программы, которые допускают, что все типы адреса могут без проблем сохраняться в \fIstruct sockaddr\fP, нужно изменить использовав вместо неё \fIstruct sockaddr_storage\fP. .P \fBSOL_IP\fP, \fBSOL_IPV6\fP, \fBSOL_ICMPV6\fP, and other \fBSOL_*\fP socket options are nonportable variants of \fBIPPROTO_*\fP. See also \fBip\fP(7). .SH ОШИБКИ Расширенный программный интерфейс IPv6, описанный в RFC\ 2292, к настоящему времени реализован частично; хотя ядро версии 2.2 имеет почти полную поддержку параметров приёма, макросы для генерации параметров IPv6 в glibc 2.1 отсутствуют. .P Поддержка IPSec для заголовков EH и АХ отсутствует. .P Описание управления потоком на основе меток (label) не завершено и здесь не описано. .P Эта справочная страница не полна. .SH "СМОТРИТЕ ТАКЖЕ" \fBIPPROTO_IPV6\fP(2const), \fBip\fP(7) .P RFC\ 2553: IPv6 BASIC API; Linux пытается быть совместимым с этим стандартом. RFC\ 2460: спецификация IPv6. .PP .SH ПЕРЕВОД Русский перевод этой страницы руководства разработал(и) Azamat Hackimov , Dmitriy S. Seregin , Yuri Kozlov и Иван Павлов . .PP Этот перевод является свободной программной документацией; он распространяется на условиях общедоступной лицензии GNU (GNU General Public License - GPL, .UR https://www.gnu.org/licenses/gpl-3.0.html .UE версии 3 или более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ. .PP Если вы обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите об этом разработчику(ам) по его(их) адресу(ам) электронной почты или по адресу .MT списка рассылки русских переводчиков .ME .