cs:bsd_sockets_-_kompatibilita_s_uzly_ipv4

Chrabří uživatelé síťových aplikací IPv6 jistě nestojí o to, aby se tím znemožnila nebo i jen zhoršila možnost komunikace se stávajícím Internetem. V části Převody mezi jmény a adresami jsme si ukázali, jak je možné pomocí funkce getaddrinfo() a příznaku AI_V4MAPPED zajistit, aby se jméno DNS resolvovalo alespoň pomocí záznamu typu A, pokud nejsou k dispozici žádně záznamy typu AAAA. Síťová aplikace IPv6 ale může navázat komunikaci s uzlem IPv4 sama tím, že v adresové struktuře sockaddr_in6 použije IPv4-mapovanou adresu IPv6. Příslušná knihovna implementující API BSD Sockets pak musí za běhu překládat mezi protokoly IPv4 a IPv6 tak, aby uzel IPv4 dostával jen datagramy IPv4 a naopak ty, které od něj přijdou, musí být zase převedeny na IPv6 s IPv4-mapovanými adresami.

Aplikace používající sokety IPv6 proto obvykle vůbec nepotřebují vědět, jestli komunikují pomocí nativních adres IPv6 anebo IPv4-mapovaných adres. Ty aplikace, které to z nějakého důvodu chtějí vědět, mohou použít makro IN6_IS_ADDR_V4MAPPED definované v hlavičkovém souboru netinet/in.h.

Poslední úprava:: 25.07.2019 13:11