12.4. ΠΠ°ΠΊΡΠΎΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π°Π΄ΡΠ΅ΡΠ° IPv6
Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΊΠ»Π°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ IPv6, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π·Π½Π°ΡΡ, Ρ ΠΊΠ°ΠΊΠΈΠΌ ΡΠΎΠ±Π΅ΡΠ΅Π΄Π½ΠΈΠΊΠΎΠΌ ΠΎΠ½ΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΡΡΡ (IPv4 ΠΈΠ»ΠΈ IPv6). ΠΡΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π·Π½Π°ΡΡ, ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΈ Π°Π΄ΡΠ΅Ρ ΡΠΎΠ±Π΅ΡΠ΅Π΄Π½ΠΈΠΊΠ° Π°Π΄ΡΠ΅ΡΠΎΠΌ IPv4, ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½Π½ΡΠΌ ΠΊ Π²ΠΈΠ΄Ρ IPv6. ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ Π΄Π²Π΅Π½Π°Π΄ΡΠ°ΡΡ ΠΌΠ°ΠΊΡΠΎΡΠΎΠ², ΠΏΡΠΎΠ²Π΅ΡΡΡΡΠΈΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π° Π°Π΄ΡΠ΅ΡΠ° Ipv6.
#include <netinet/in.h>
int IN6_IS_ADDR_UNSPECIFIED(const struct in6_addr *aptr);
int IN6_IS_ADDR_LOOPBACK(const struct in6_addr *aptr);
int IN6_IS_ADDR_MULTICAST(const struct in6_addr *aptr);
int IN6_IS_ADDR_LINKLOCAL(const struct in6_addr *aptr);
int IN6_IS_ADDR_SITELOCAL(const struct in6_addr *aptr);
int IN6_IS_ADDR_V4MAPPED(const struct in6_addr *aptr);
int IN6_IS_ADDR_V4COMPAT(const struct in6_addr *aptr);
int IN6_IS_ADDR_MC_NODELOCAL(const struct in6_addr *aptr);
int IN6_IS_ADDR_MC_LINKLOCAL(const struct in6_addr *aptr);
int IN6_IS_ADDR_MC_SITELOCAL(const struct in6_addr *aptr);
int IN6_IS_ADDR_MC_ORGLOCAL(const struct in6_addr *aptr);
int IN6_IS_ADDR_MC_GLOBAL(const struct in6_addr *aptr);
ΠΡΠ΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ: Π½Π΅Π½ΡΠ»Π΅Π²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, Π΅ΡΠ»ΠΈ Π°Π΄ΡΠ΅Ρ IPv6 ΠΈΠΌΠ΅Π΅Ρ ΡΠΊΠ°Π·Π°Π½Π½ΡΠΉ ΡΠΈΠΏ, 0 Π² ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅
ΠΠ΅ΡΠ²ΡΠ΅ ΡΠ΅ΠΌΡ ΠΌΠ°ΠΊΡΠΎΡΠΎΠ² ΠΏΡΠΎΠ²Π΅ΡΡΡΡ Π±Π°Π·ΠΎΠ²ΡΠΉ ΡΠΈΠΏ Π°Π΄ΡΠ΅ΡΠ° IPv6. ΠΡ ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΠΈΠΏΡ Π°Π΄ΡΠ΅ΡΠΎΠ² Π² ΡΠ°Π·Π΄Π΅Π»Π΅ Π.5. ΠΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ ΠΏΡΡΡ ΠΌΠ°ΠΊΡΠΎΡΠΎΠ² ΠΏΡΠΎΠ²Π΅ΡΡΡΡ ΠΎΠ±Π»Π°ΡΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Π°Π΄ΡΠ΅ΡΠ° ΠΌΠ½ΠΎΠ³ΠΎΠ°Π΄ΡΠ΅ΡΠ½ΠΎΠΉ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ IPv6 (ΡΠΌ. ΡΠ°Π·Π΄Π΅Π» 19.2).
ΠΠ»ΠΈΠ΅Π½Ρ IPv6 ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ·Π²Π°ΡΡ ΠΌΠ°ΠΊΡΠΎΡ IN6_IS_ADDR_V4MAPPED Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π°Π΄ΡΠ΅ΡΠ° IPv6, Π²ΠΎΠ·Π²ΡΠ°ΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°ΡΠ΅Π»Π΅ΠΌ. Π‘Π΅ΡΠ²Π΅Ρ IPv6 ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ·Π²Π°ΡΡ ΡΡΠΎΡ ΠΌΠ°ΠΊΡΠΎΡ Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π°Π΄ΡΠ΅ΡΠ° IPv6, Π²ΠΎΠ·Π²ΡΠ°ΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ accept ΠΈΠ»ΠΈ recvfrom.
ΠΠ°ΠΊ ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΠΎΠΌΡ Π½ΡΠΆΠ΅Π½ ΡΡΠΎΡ ΠΌΠ°ΠΊΡΠΎΡ, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ FTP ΠΈ Π΅Π³ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Ρ PORT. ΠΡΠ»ΠΈ ΠΌΡ Π·Π°ΠΏΡΡΡΠΈΠΌ FTP-ΠΊΠ»ΠΈΠ΅Π½Ρ, Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΡΠ΅ΠΌΡΡ Π½Π° FTP-ΡΠ΅ΡΠ²Π΅ΡΠ΅ ΠΈ Π²ΡΠΏΠΎΠ»Π½ΠΈΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρ FTP dir, FTP-ΠΊΠ»ΠΈΠ΅Π½Ρ ΠΏΠΎΡΠ»Π΅Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ PORT FTP-ΡΠ΅ΡΠ²Π΅ΡΡ ΡΠ΅ΡΠ΅Π· ΡΠΏΡΠ°Π²Π»ΡΡΡΠ΅Π΅ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅. ΠΠ½Π° ΡΠΎΠΎΠ±ΡΠΈΡ ΡΠ΅ΡΠ²Π΅ΡΡ IP-Π°Π΄ΡΠ΅Ρ ΠΈ ΠΏΠΎΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°, Ρ ΠΊΠΎΡΠΎΡΡΠΌ Π·Π°ΡΠ΅ΠΌ ΡΠ΅ΡΠ²Π΅Ρ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅. (Π Π³Π»Π°Π²Π΅ 27 [111] ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡΡ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΡΠ΅ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΎ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ FTP.) ΠΠΎ FTP-ΠΊΠ»ΠΈΠ΅Π½Ρ IPv6 Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π½Π°ΡΡ, Ρ ΠΊΠ°ΠΊΠΈΠΌ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ ΠΈΠΌΠ΅Π΅Ρ Π΄Π΅Π»ΠΎ β IPv4 ΠΈΠ»ΠΈ IPv6, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠ΅ΡΠ²Π΅Ρ IPv4 ΡΡΠ΅Π±ΡΠ΅Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π² ΡΠΎΡΠΌΠ°ΡΠ΅ PORT a1, a2, a3, a4, p1, p2 (Π³Π΄Π΅ ΠΏΠ΅ΡΠ²ΡΠ΅ ΡΠ΅ΡΡΡΠ΅ ΡΠΈΡΠ»Π°, ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΎΡ 0 Π΄ΠΎ 255, ΡΠΎΡΠΌΠΈΡΡΡΡ 4-Π±Π°ΠΉΡΠΎΠ²ΡΠΉ Π°Π΄ΡΠ΅Ρ IPv4, Π° Π΄Π²Π° ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡ β 2-Π±Π°ΠΉΡΠΎΠ²ΡΠΉ Π½ΠΎΠΌΠ΅Ρ ΠΏΠΎΡΡΠ°), Π° ΡΠ΅ΡΠ²Π΅ΡΡ IPv6 Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° EPRT (RFC 2428 [3]), ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ°Ρ ΡΠ΅ΠΌΠ΅ΠΉΡΡΠ²ΠΎ Π°Π΄ΡΠ΅ΡΠ°, Π°Π΄ΡΠ΅Ρ Π² ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠΌ ΡΠΎΡΠΌΠ°ΡΠ΅ ΠΈ ΠΏΠΎΡΡ Π² ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠΌ ΡΠΎΡΠΌΠ°ΡΠ΅. Π ΡΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΠΈ 12.1 ΠΏΡΠΈΠ²ΠΎΠ΄ΡΡΡΡ ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΎΠ±Π΅ΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄.
12.5. ΠΠ΅ΡΠ΅Π½ΠΎΡΠΈΠΌΠΎΡΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°
ΠΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΡ ΡΠ΅ΡΠ΅Π²ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π°ΠΏΠΈΡΠ°Π½Ρ Π΄Π»Ρ IPv4. Π‘ΡΡΡΠΊΡΡΡΡ sockaddr_in ΡΠ°Π·ΠΌΠ΅ΡΠ°ΡΡΡΡ Π² ΠΏΠ°ΠΌΡΡΠΈ ΠΈ Π·Π°ΠΏΠΎΠ»Π½ΡΡΡΡΡ, Π° ΡΡΠ½ΠΊΡΠΈΡ socket Π·Π°Π΄Π°Π΅Ρ AF_INET Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°. ΠΡΠΈ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π΅ ΠΎΡ Π»ΠΈΡΡΠΈΠ½Π³Π° 1.1 ΠΊ Π»ΠΈΡΡΠΈΠ½Π³Ρ 1.2 ΠΌΡ Π²ΠΈΠ΄Π΅Π»ΠΈ, ΡΡΠΎ ΡΡΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ IPv4 ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ IPv6 Π±Π΅Π· ΠΎΡΠΎΠ±ΡΡ ΡΡΠΈΠ»ΠΈΠΉ. ΠΠ½ΠΎΠ³ΠΈΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π½Π½ΡΠ΅ Π½Π°ΠΌΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠ΅Π½Π°ΡΠΈΠΈ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π±ΠΎΠ»Π΅Π΅ Π·Π°Π²ΠΈΡΡΡΠΈΠ΅ ΠΎΡ IPv4, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΠ΅ ΡΠ°ΠΊΠΈΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π°, ΠΊΠ°ΠΊ ΠΌΠ½ΠΎΠ³ΠΎΠ°Π΄ΡΠ΅ΡΠ½Π°Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ°, ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ IP ΠΈΠ»ΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½ΡΠ΅ (Π½Π΅ΡΡΡΡΠΊΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅) ΡΠΎΠΊΠ΅ΡΡ, ΠΏΠΎΡΡΠ΅Π±ΡΡΡ Π±ΠΎΠ»ΡΡΠΈΡ ΡΡΠΈΠ»ΠΈΠΉ ΠΏΡΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠΈ.
ΠΡΠ»ΠΈ ΠΌΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ IPv6 ΠΈ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΠΈΠΌ Π΅Π³ΠΎ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄, Π½Π°ΠΌ ΠΏΡΠΈΠ΄Π΅ΡΡΡ Π΄ΡΠΌΠ°ΡΡ ΠΎ ΡΠΎΠΌ, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π»ΠΈ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡΠ°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° ΠΏΡΠΎΡΠΎΠΊΠΎΠ» IPv6. Π’ΠΈΠΏΠΈΡΠ½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ β ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ Π² ΠΊΠΎΠ΄Π΅ #ifdef, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΏΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ IPv6 (ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΌΡ Π²ΠΈΠ΄Π΅Π»ΠΈ Π² ΡΡΠΎΠΉ Π³Π»Π°Π²Π΅, ΡΡΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ IPv6 ΠΌΠΎΠΆΠ΅Ρ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ Ρ ΡΠ΅ΡΠ²Π΅ΡΠ°ΠΌΠΈ IPv4 ΠΈ Π½Π°ΠΎΠ±ΠΎΡΠΎΡ). ΠΡΠΎΠ±Π»Π΅ΠΌΠ° ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π° Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΊΠΎΠ΄ ΠΎΡΠ΅Π½Ρ Π±ΡΡΡΡΠΎ Π·Π°ΡΠΎΡΡΠ΅ΡΡΡ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π°ΠΌΠΈ #ifdef, ΠΈ Π΅Π³ΠΎ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΡΠ»ΠΎΠΆΠ½Π΅Π΅ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°ΡΡ ΠΈ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°ΡΡ.
ΠΠ°ΠΈΠ»ΡΡΡΠΈΠΌ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΎΠΌ Π±ΡΠ΄Π΅Ρ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π° Π½Π° IPv6 ΠΊΠ°ΠΊ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΠ΄Π΅Π»Π°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π΅ Π·Π°Π²ΠΈΡΡΡΠ΅ΠΉ ΠΎΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π°. ΠΠ΅ΡΠ²ΡΠΌ ΡΠ°Π³ΠΎΠΌ Π·Π΄Π΅ΡΡ Π±ΡΠ΄Π΅Ρ ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Π²ΡΠ·ΠΎΠ²ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΉ gethostbyname ΠΈ gethostbyaddr ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΉ getaddrinfo ΠΈ getnameinfo, ΠΎΠΏΠΈΡΠ°Π½Π½ΡΡ Π² ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΉ Π³Π»Π°Π²Π΅. ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ Π½Π°ΠΌ ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡΡ ΡΠΎ ΡΡΡΡΠΊΡΡΡΠ°ΠΌΠΈ Π°Π΄ΡΠ΅ΡΠΎΠ² ΡΠΎΠΊΠ΅ΡΠΎΠ² ΠΊΠ°ΠΊ Ρ Π½Π΅ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΡΠΌΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ, ΡΡΡΠ»Π°ΡΡΡΡ Π½Π° ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ ΠΈ ΡΠ°Π·ΠΌΠ΅ΡΠ°, ΡΡΠΎ ΠΊΠ°ΠΊ ΡΠ°Π· ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠΎΠΊΠ΅ΡΠΎΠ²: bind, connect, recvfrom ΠΈ Ρ.Π΄. ΠΠ°ΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ sock_XXX ΠΈΠ· ΡΠ°Π·Π΄Π΅Π»Π° 3.8 ΠΏΠΎΠΌΠΎΠ³ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Π½ΠΈΠΌΠΈ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ IPv4 ΠΈ IPv6. ΠΡΠ΅Π²ΠΈΠ΄Π½ΠΎ, ΡΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ #ifdef Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ IPv4 ΠΈ IPv6, Π½ΠΎ Π΅ΡΠ»ΠΈ ΠΌΡ ΡΠΊΡΠΎΠ΅ΠΌ ΡΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ ΠΎΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° Π² Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΡΡ , Π½Π°Ρ ΠΊΠΎΠ΄ ΡΡΠ°Π½Π΅Ρ ΠΏΡΠΎΡΠ΅. Π ΡΠ°Π·Π΄Π΅Π»Π΅ 21.7 ΠΌΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π΅ΠΌ ΡΡΠ΄ ΡΡΠ½ΠΊΡΠΈΠΉ mcast_XXX, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠΌΠΎΠ³ΡΡ ΡΠ΄Π΅Π»Π°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΌΠ½ΠΎΠ³ΠΎΠ°Π΄ΡΠ΅ΡΠ½ΠΎΠΉ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π½Π΅ Π·Π°Π²ΠΈΡΡΡΠΈΠΌΠΈ ΠΎΡ Π²Π΅ΡΡΠΈΠΈ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° IP.
ΠΡΡΠ³ΠΎΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π½ΡΠΆΠ½ΠΎ ΡΡΠ΅ΡΡΡ, β ΡΡΠΎ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ, Π΅ΡΠ»ΠΈ ΠΌΡ ΠΎΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΠΌ Π½Π°Ρ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΠ΅ΠΉ ΠΈ IPv4, ΠΈ IPv6, Π·Π°ΡΠ΅ΠΌ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΠΈΠΌ Π»ΠΈΠ±ΠΎ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΉ ΠΊΠΎΠ΄, Π»ΠΈΠ±ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ (Π½ΠΎ Π½Π΅ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄) ΠΈ ΠΊΡΠΎ-ΡΠΎ Π·Π°ΠΏΡΡΡΠΈΡ Π½Π°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅, Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΠ΅ΠΉ IPv6. ΠΡΡΡ Π²Π΅ΡΠΎΡΡΠ½ΠΎΡΡΡ, ΡΡΠΎ ΡΠ΅ΡΠ²Π΅Ρ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ ΠΈΠΌΠ΅Π½ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π·Π°ΠΏΠΈΡΠΈ ΡΠΈΠΏΠ° AAAA ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΊΠ°ΠΊ Π·Π°ΠΏΠΈΡΠΈ ΡΠΈΠΏΠ° AAAA, ΡΠ°ΠΊ ΠΈ Π·Π°ΠΏΠΈΡΠΈ ΡΠΈΠΏΠ° Π Π½Π΅ΠΊΠΎΠ΅ΠΌΡ ΡΠΎΠ±Π΅ΡΠ΅Π΄Π½ΠΈΠΊΡ, Ρ ΠΊΠΎΡΠΎΡΡΠΌ ΠΏΡΡΠ°Π΅ΡΡΡ ΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡΡΡΡ Π½Π°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. ΠΡΠ»ΠΈ Π½Π°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΡΠ°Π±ΠΎΡΠ°ΡΡΠ΅Π΅ Ρ IPv6, Π²ΡΠ·ΠΎΠ²Π΅Ρ ΡΡΠ½ΠΊΡΠΈΡ socket Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠΎΠΊΠ΅ΡΠ° IPv6, ΠΎΠ½Π° Π½Π΅ Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ, Π΅ΡΠ»ΠΈ ΡΠ·Π΅Π» Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ IPv6. ΠΡ ΡΠ΅ΡΠ°Π΅ΠΌ ΡΡΠΎΡ Π²ΠΎΠΏΡΠΎΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ, ΠΎΠΏΠΈΡΠ°Π½Π½ΡΡ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ Π³Π»Π°Π²Π΅, ΠΈΠ³Π½ΠΎΡΠΈΡΡΡ ΠΎΡΠΈΠ±ΠΊΡ ΡΡΠ½ΠΊΡΠΈΠΈ socket ΠΈ ΠΏΡΡΠ°ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ Π°Π΄ΡΠ΅Ρ Π² ΡΠΏΠΈΡΠΊΠ΅, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠΌ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ ΠΈΠΌΠ΅Π½. ΠΡΠ»ΠΈ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΡΡ, ΡΡΠΎ Ρ ΡΠΎΠ±Π΅ΡΠ΅Π΄Π½ΠΈΠΊΠ° ΠΈΠΌΠ΅Π΅ΡΡΡ Π·Π°ΠΏΠΈΡΡ ΡΠΈΠΏΠ° Π ΠΈ ΡΡΠΎ ΡΠ΅ΡΠ²Π΅Ρ ΠΈΠΌΠ΅Π½ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π·Π°ΠΏΠΈΡΡ ΡΠΈΠΏΠ° Π Π² Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ Π»ΡΠ±ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ ΡΠΈΠΏΠ° AAAA, ΡΠΎ ΡΠΎΠΊΠ΅Ρ IPv4 ΡΡΠΏΠ΅ΡΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡΡΡ. ΠΡΠΎΡ ΡΠΈΠΏ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΠΈ ΠΈΠΌΠ΅Π΅ΡΡΡ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΡΠ½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ, Π½ΠΎ Π½Π΅ Π² ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
Π§ΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΡ ΡΠΎΠΊΠ΅ΡΠΎΠ², ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°ΠΌ, ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΠΌ ΡΠΎΠ»ΡΠΊΠΎ Ρ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΎΠ², Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ΅ RFC 2133 [37] ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΡΠΎΠΊΠ΅ΡΠ° IPV6_ADDRFORM, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠΉ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΠ΅ΠΌΠ΅ΠΉΡΡΠ²ΠΎ ΡΠΎΠΊΠ΅ΡΠ°. ΠΠ΄Π½Π°ΠΊΠΎ ΡΠ΅ΠΌΠ°Π½ΡΠΈΠΊΠ° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° Π½Π΅ Π±ΡΠ»Π° ΠΎΠΏΠΈΡΠ°Π½Π° ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ, Π΄Π° ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΎΠ½ ΠΌΠΎΠ³ ΡΠΎΠ»ΡΠΊΠΎ Π² ΠΎΡΠ΅Π½Ρ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠΈΡΡΠ°ΡΠΈΡΡ , ΠΏΠΎΡΡΠΎΠΌΡ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ Π²Π΅ΡΡΠΈΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΡΠΎΠΊΠ΅ΡΠΎΠ² Π΄Π°Π½Π½ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ Π±ΡΠ» ΠΎΡΠΌΠ΅Π½Π΅Π½.
12.6. Π Π΅Π·ΡΠΌΠ΅
Π‘Π΅ΡΠ²Π΅Ρ IPv6 Π½Π° ΡΠ·Π»Π΅ Ρ Π΄Π²ΠΎΠΉΠ½ΡΠΌ ΡΡΠ΅ΠΊΠΎΠΌ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ ΡΠ΅ΡΠ²ΠΈΡ ΠΊΠ°ΠΊ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°ΠΌ IPv4, ΡΠ°ΠΊ ΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°ΠΌ IPv6. ΠΠ»ΠΈΠ΅Π½Ρ IPv4 ΠΏΠΎΡΡΠ»Π°Π΅Ρ ΡΠ΅ΡΠ²Π΅ΡΡ Π΄Π΅ΠΉΡΠ°Π³ΡΠ°ΠΌΠΌΡ IPv4, Π½ΠΎ ΡΡΠ΅ΠΊ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΎΠ² ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅Ρ Π°Π΄ΡΠ΅Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΠΊ Π²ΠΈΠ΄Ρ IPv6, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠ΅ΡΠ²Π΅Ρ IPv6 ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠΎ ΡΡΡΡΠΊΡΡΡΠ°ΠΌΠΈ Π°Π΄ΡΠ΅ΡΠΎΠ² ΡΠΎΠΊΠ΅ΡΠΎΠ² IPv6.
ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ, ΠΊΠ»ΠΈΠ΅Π½Ρ IPv6 Π½Π° ΡΠ·Π»Π΅ Ρ Π΄Π²ΠΎΠΉΠ½ΡΠΌ ΡΡΠ΅ΠΊΠΎΠΌ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ Ρ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ IPv4. Π Π°ΡΠΏΠΎΠ·Π½Π°Π²Π°ΡΠ΅Π»Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π°Π΄ΡΠ΅ΡΠ° IPv4, ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΊ Π²ΠΈΠ΄Ρ IPv6, Π΄Π»Ρ Π²ΡΠ΅Ρ Π·Π°ΠΏΠΈΡΠ΅ΠΉ ΡΠ΅ΡΠ²Π΅ΡΠ° ΡΠΈΠΏΠ° Π, ΠΈ Π²ΡΠ·ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΈ connect Π΄Π»Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· ΡΡΠΈΡ Π°Π΄ΡΠ΅ΡΠΎΠ² ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΡΠΎΠΌΡ, ΡΡΠΎ Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ ΡΡΠ΅ΠΊ ΠΏΠΎΡΡΠ»Π°Π΅Ρ ΡΠ΅Π³ΠΌΠ΅Π½Ρ SYN IPv4. Π’ΠΎΠ»ΡΠΊΠΎ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΌ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΌ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°ΠΌ ΠΈ ΡΠ΅ΡΠ²Π΅ΡΠ°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π·Π½Π°ΡΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ», ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ ΡΠΎΠ±Π΅ΡΠ΅Π΄Π½ΠΈΠΊΠΎΠΌ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, FTP), ΠΈ ΡΡΠΎΠ±Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ, ΡΡΠΎ ΡΠΎΠ±Π΅ΡΠ΅Π΄Π½ΠΈΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ IPv4, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠ°ΠΊΡΠΎΡ IN6_IS_ADDR_V4MAPPED.
Π£ΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΡ
1. ΠΠ°ΠΏΡΡΡΠΈΡΠ΅ FTP-ΠΊΠ»ΠΈΠ΅Π½Ρ IPv6 Π½Π° ΡΠ·Π»Π΅ Ρ Π΄Π²ΠΎΠΉΠ½ΡΠΌ ΡΡΠ΅ΠΊΠΎΠΌ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΎΠ². Π‘ΠΎΠ΅Π΄ΠΈΠ½ΠΈΡΠ΅ΡΡ Ρ FTP-ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ IPv4, Π·Π°ΠΏΡΡΡΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ debug, Π° Π·Π°ΡΠ΅ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρ dir. ΠΠ°Π»Π΅Π΅ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΡΠ΅ ΠΆΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, Π½ΠΎ Π΄Π»Ρ ΡΠ΅ΡΠ²Π΅ΡΠ° IPv6, ΠΈ ΡΡΠ°Π²Π½ΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ PORT, ΡΠ²Π»ΡΡΡΠΈΠ΅ΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄ dir.
2. ΠΠ°ΠΏΠΈΡΠΈΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΡΡΠ΅Π±ΡΡΡΡΡ Π²Π²ΠΎΠ΄Π° ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ Π°Π΄ΡΠ΅ΡΠΎΠΌ IPv4 Π² ΡΠΎΡΠ΅ΡΠ½ΠΎ-Π΄Π΅ΡΡΡΠΈΡΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ. Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ TCP-ΡΠΎΠΊΠ΅Ρ IPv4 ΠΈ ΡΠ²ΡΠΆΠΈΡΠ΅ ΡΡΠΎΡ Π°Π΄ΡΠ΅Ρ ΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ 8888, Ρ ΡΠΎΠΊΠ΅ΡΠΎΠΌ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ bind. ΠΡΠ·ΠΎΠ²ΠΈΡΠ΅ ΡΡΠ½ΠΊΡΠΈΡ listen, Π° Π·Π°ΡΠ΅ΠΌ pause. ΠΠ°ΠΏΠΈΡΠΈΡΠ΅ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΡΠ΅ΡΡΠ½Π°Π΄ΡΠ°ΡΠ΅ΡΠΈΡΠ½ΡΡ ΡΡΡΠΎΠΊΡ IPv6 ΠΈ ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΏΡΠΎΡΠ»ΡΡΠΈΠ²Π°Π΅ΠΌΡΠΉ TCP-ΡΠΎΠΊΠ΅Ρ IPv6. ΠΠ°ΠΏΡΡΡΠΈΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ IPv4, Π·Π°Π΄Π°Π² Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΠΉ Π°Π΄ΡΠ΅Ρ. ΠΠ°ΡΠ΅ΠΌ ΠΏΠ΅ΡΠ΅ΠΉΠ΄ΠΈΡΠ΅ Π² Π΄ΡΡΠ³ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ ΠΈ Π·Π°ΠΏΡΡΡΠΈΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ IPv6, Π·Π°Π΄Π°Π² Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΠΉ Π°Π΄ΡΠ΅Ρ IPv6. ΠΠΎΠΆΠ΅ΡΠ΅ Π»ΠΈ Π²Ρ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ IPv6, Π΅ΡΠ»ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° IPv4 ΡΠΆΠ΅ ΡΠ²ΡΠ·Π°Π½Π° Ρ ΡΡΠΈΠΌ ΠΏΠΎΡΡΠΎΠΌ? ΠΠΎΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΈ ΡΠ°Π·Π½ΠΈΡΠ° ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΡΠΎΠΊΠ΅ΡΠ° SO_REUSEADDR? Π§ΡΠΎ Π±ΡΠ΄Π΅Ρ, Π΅ΡΠ»ΠΈ Π²Ρ ΡΠ½Π°ΡΠ°Π»Π° Π·Π°ΠΏΡΡΡΠΈΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ IPv6, Π° Π·Π°ΡΠ΅ΠΌ ΠΏΠΎΠΏΡΡΠ°Π΅ΡΠ΅ΡΡ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ IPv4?
ΠΠ»Π°Π²Π° 13
ΠΡΠΎΡΠ΅ΡΡΡ-Π΄Π΅ΠΌΠΎΠ½Ρ ΠΈ ΡΡΠΏΠ΅ΡΡΠ΅ΡΠ²Π΅Ρ inetd
13.1. ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅
ΠΠ΅ΠΌΠΎΠ½ (daemon) β ΡΡΠΎ ΠΏΡΠΎΡΠ΅ΡΡ, Π²ΡΠΏΠΎΠ»Π½ΡΡΡΠΈΠΉΡΡ Π² ΡΠΎΠ½ΠΎΠ²ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅ ΠΈ Π½Π΅ ΡΠ²ΡΠ·Π°Π½Π½ΡΠΉ Ρ ΡΠΏΡΠ°Π²Π»ΡΡΡΠΈΠΌ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»ΠΎΠΌ. Π‘ΠΈΡΡΠ΅ΠΌΡ Unix ΠΎΠ±ΡΡΠ½ΠΎ ΠΈΠΌΠ΅ΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² (ΠΎΡ 20 Π΄ΠΎ 50), ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ²Π»ΡΡΡΡΡ Π΄Π΅ΠΌΠΎΠ½Π°ΠΌΠΈ, ΡΠ°Π±ΠΎΡΠ°ΡΡ Π² ΡΠΎΠ½ΠΎΠ²ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅ ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΈΠ²Π½ΡΠ΅ Π·Π°Π΄Π°ΡΠΈ.
ΠΠ΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ ΠΎΡ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π° ΠΎΠ±ΡΡΠ½ΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠΎΠ±ΠΎΡΠ½ΡΠΌ ΡΡΡΠ΅ΠΊΡΠΎΠΌ Π·Π°ΠΏΡΡΠΊΠ° ΠΈΠ· ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΡΠ΅Π½Π°ΡΠΈΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ°). ΠΡΠ»ΠΈ ΠΆΠ΅ Π΄Π΅ΠΌΠΎΠ½ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ°, ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ ΠΎΡΠΊΠ»ΡΡΠΈΡΡΡΡ ΠΎΡ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π° Π²ΠΎ ΠΈΠ·Π±Π΅ΠΆΠ°Π½ΠΈΠ΅ Π½Π΅ΠΆΠ΅Π»Π°ΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ ΡΠΈΡΡΠ΅ΠΌΠ°ΠΌΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π·Π°Π΄Π°ΡΠ°ΠΌΠΈ, ΡΠ΅Π°Π½ΡΠ°ΠΌΠΈ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»ΠΎΠ², Π° ΡΠ°ΠΊΠΆΠ΅ Π²ΡΠ²ΠΎΠ΄Π° Π½Π° ΡΠ΅ΡΠΌΠΈΠ½Π°Π» ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Π² ΡΠΎΠ½ΠΎΠ²ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅.