ipv6(7) Miscellaneous Information Manual ipv6(7) ipv6 - IPv6 Linux #include #include tcp6_socket = socket(AF_INET6, SOCK_STREAM, 0); raw6_socket = socket(AF_INET6, SOCK_RAW, protocol); udp6_socket = socket(AF_INET6, SOCK_DGRAM, protocol); Linux 2.2 6. IPv6, Linux glibc 2.1. BSD; socket(7). IPv6, , IPv4 ( ip(7)). . AF_INET6 in6addr_any, in6_addr. IN6ADDR_ANY_INIT, . . IPv6 (::1) in6addr_loopback. IN6ADDR_LOOPBACK_INIT. IPv4 v6 v4---v6; . . 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. 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 */ }; sin6_family AF_INET6; sin6_port ( sin_port ip(7)); sin6_flowinfo IPv6; sin6_addr 128- IPv6. sin6_scope_id , . , Linux 2.4. Linux (link local); sin6_scope_id ( netdevice(7)). IPv6 : (unicast) -- , (multicast) -- , anycast -- ( Linux), IPv4-on-IPv6 -- IPv4, . The address notation for IPv6 is a group of 8 4-digit hexadecimal numbers, separated with a ':'. "::" stands for a string of 0 bits. Special addresses are ::1 for loopback and ::FFFF: for IPv4-mapped-on-IPv6. IPv6 IPv4 . IPv6 , , setsockopt(2) getsockopt(2). (level) IPv6 IPPROTO_IPV6. 0 <<>>, -- <<>>. IPV6_ADDRFORM AF_INET6 . AF_INET. IPv6, v4---v6. AF_INET. v4- , IPv6. IPV6_ADD_MEMBERSHIP, IPV6_DROP_MEMBERSHIP (multicast) . struct ipv6_mreq. IPV6_MTU getsockopt(): MTU . . . setsockopt(): MTU, . MTU MTU MTU , MTU. . IPV6_MTU_DISCOVER MTU . IP_MTU_DISCOVER ip(7). IPV6_MULTICAST_HOPS (hop) . . -1 , 0 255. IPV6_MULTICAST_IF . SOCK_DGRAM SOCK_RAW. ( netdevice(7)) . IPV6_MULTICAST_LOOP , , . . IPV6_RECVPKTINFO ( Linux 2.6.14) IPV6_PKTINFO . struct in6_pktinfo, RFC 3542. SOCK_DGRAM SOCK_RAW. . IPV6_RTHDR, IPV6_AUTHHDR, IPV6_DSTOPTS, IPV6_HOPOPTS, IPV6_FLOWINFO, IPV6_HOPLIMIT , . IPV6_RTHDR , IPV6_AUTHHDR , IPV6_DSTOPTS , IPV6_HOPOPTS (hop), IPV6_FLOWINFO , ID , IPV6_HOPLIMIT , . , . sendmsg(2). SOCK_DGRAM SOCK_RAW. . IPV6_RECVERR . IP_RECVERR ip(7). . IPV6_ROUTER_ALERT , hop-by-hop . SOCK_RAW. , . . . , , . . IPV6_UNICAST_HOPS (unicast) (hop) . . -1 , 0 255. IPV6_V6ONLY ( Linux 2.4.21 2.6) ( 0), IPv6. IPv4 IPv6 . ( 0), IPv6 IPv4---IPv6. . /proc/sys/net/ipv6/bindv6only. 0. ENODEV bind(2) IPv6, sin6_scope_id sockaddr_in6 . Linux 2.4 sockaddr_in6 64- - in6_addr sin6_scope_id. , , sockaddr_in6 in6_addr , . 32- , i386. sin6_flowinfo Linux 2.4. / . , , . sockaddr_in6 , sockaddr. , , struct sockaddr, struct sockaddr_storage. SOL_IP, SOL_IPV6, SOL_ICMPV6, and other SOL_* socket options are nonportable variants of IPPROTO_*. See also ip(7). IPv6, RFC 2292, ; 2.2 , IPv6 glibc 2.1 . IPSec EH . (label) . . . cmsg(3), ip(7) RFC 2553: IPv6 BASIC API; Linux . RFC 2460: IPv6. Azamat Hackimov , Dmitriy S. Seregin , Yuri Kozlov ; GNU 3 , . . , , . Linux man-pages 6.06 31 2023 . ipv6(7)