**Algoritmus pro překlad IP a ICMP mezi verzemi 4 a 6** představuje základ všech mechanismů pro přechod mezi těmito dvěma světy. Původně nesl název **Stateless IP/ICMP Translation (SIIT)** a byl definován v RFC 2765. V roce 2011 byla tato specifikace nahrazena RFC 6145, která je součástí skupiny definic kolem [[nat64]] a pojem SIIT příliš nepoužívá. Základním přínosem algoritmu je, že definuje univerzální pravidla pro překlad jednotlivých hlaviček IP datagramů a ICMP zpráv mezi verzemi 4 a 6. Postupuje při tom bezstavově - neukládá si žádné informace, každý datagram překládá zcela samostatně, bez vazeb na předchozí provoz. Překladová pravidla mají svá omezení, například nepodporují žádná rozšíření - volby ze strany IPv4 a rozšiřující hlavičky ze strany IPv6. Tyto informace se při překladu ztratí, nelze proto například provozovat IPsec či podporu mobilních zařízení mezi dvěma stroji hovořícími odlišným protokolem. Proti původní verzi byl z textu vypuštěn [[preklad_adres]], kterému je nyní věnováno samostatné RFC 6052. Mapování adres může probíhat dvěma způsoby - buď bezstavově, kdy jsou adresy vzájemně převáděny jednoduchým fixním výpočtem, nebo stavově, kdy si zařízení udržuje tabulku vztahů mezi adresami. Může se jednat i o kombinaci obou přístupů - například NAT64 převádí IPv4 adresy na IPv6 bezstavově podle RFC 6052, zatímco opačný převod je stavový. ====== Překlad IPv4 na IPv6 ====== | Verze| = 6 | | Třída provozu| = TOS | | Značka toku| = 0 | | Délka obsahu| = Celková délka z IPv4 hlavičky - délka IPv4 hlavičky | | Další hlavička| = Protokol, hodnotu 1 (ICMPv4) změnit na 58 (ICMPv6) | | Max. skoků| = TTL - 1 | | Adresa odesilatele| = podle mapování | | Cílová adresa| = podle mapování | Speciální ošetření vyžaduje [[fragmentace]]. Pokud je zakázáno fragmentovat původní IPv4 datagram (příznak Don't Fragment), přeloží se datagram 1:1 a pokud je výsledný IPv6 datagram větší než MTU odchozí linky, pošle odesilateli standardní ICMPv4 chybu. Je-li fragmentace povolena, měl by překladač generovat IPv6 datagramy velikosti maximálně 1280 B, a tedy případně fragmentovat. Doporučuje se přidávat hlavičku //Fragmentace// i nefragmentovaným datagramům jako indikaci, že odesilatel ji povolil. RFC 6145 doporučuje, aby maximální velikost datagramů i vkládání nepotřebných fragmentačních hlaviček byly konfigurovatelné. ====== Překlad IPv6 na IPv4 ====== | Verze| = 4 | | Délka hlavičky| = 5 | | TOS| = Třída provozu | | Celková délka| = Délka obsahu z IPv6 hlavičky + 20 | | Identifikace| = 0 (nebo Identifikace z hlavičky //Fragmentace//) | | Příznaky| MF=0, DF=1 (nebo MF=M z //Fragmentace// a DF=0) | | Posun fragmentu| = 0 (nebo Posun fragmentu z //Fragmentace//) | | TTL| = Max. skoků - 1 | | Protokol| = transportní protokol z IPv6 hlaviček, hodnotu 58 (ICMPv6) změnit na 1 (ICMPv4) | | Kontrolní součet| = vypočíst | | Adresa odesilatele| = podle mapování | | Cílová adresa| = podle mapování | Práce s fragmentací je v tomto případě jednodušší. Pokud IPv6 datagram neobsahuje hlavičku //Fragmentace//, příslušné položky se vynulují a IPv4 datagramu se zakáže fragmentace (příznak DF=1). V opačném případě se údaje do položek souvisejících s fragmentací převezmou z příslušné rozšiřující hlavičky. V tomto případě je další fragmentace povolena. ====== Překlad ICMPv4 a ICMPv6 ====== Pravidla pro vzájemný překlad obou verzí ICMP jsou zatížena řadou výjimek, protože některé typy zpráv existují jen v jedné verzi. Jejich základ však tvoří podobně přímočarý převod mezi odpovídajícími položkami ICMP hlaviček jako v případě IP datagramů. ====== Odkazy ====== * RFC 6145 - definice SIIT * RFC 6052 - adresace přechodových mechanismů