IP în IP este un protocol de tunel IP care încapsulează un pachet IP într-un alt pachet IP. Încapsularea unui pachet IP într-un alt pachet IP înseamnă adăugarea unui antet exterior cu SourceIP ca punct de intrare în tunel și Destinație ca punct de ieșire din tunel. În același timp, pachetul intern nu a fost modificat (cu excepția câmpului TTL, care a scăzut). Câmpurile Nu fragmentați și Tipul de serviciu trebuie copiate în pachetul extern. Dacă dimensiunea pachetului este mai mare decât Path MTU , pachetul este fragmentat în încapsulator, acesta trebuie să fie în antetul exterior. Decapsulator va trebui să reasamblați pachetul.
Antet IP exterior | Antet IP intern | Informatii utile |
Antetul IP exterior are următoarele
câmpuri Versiune: 4 biți
Acest câmp conține numărul versiunii protocolului. Întotdeauna 4 deoarece IP în IP este acceptat numai pentru IPv4.
Lungimea antetului: 4 biți
Acest câmp conține lungimea antetului IP extern.
Tip de serviciu (TOS): 8 biți
Acest câmp este copiat din antetul IP intern.
Lungime totală: 16 biți
Acest câmp conține lungimea antetului IP încapsulat (inclusiv antetul IP exterior, antetul IP interior, sarcina utilă)
Identificare: 16 biți
Acest câmp este utilizat pentru a identifica fragmentele de datagramă necesare pentru ca încapsulator să reasambla fragmentele. Pentru antetul IP exterior, acesta este noul număr generat.
Steaguri: 3 biți
R | D.F. | MF |
R:1bit
Acest bit este rezervat și trebuie setat la 0.
DF: 1bit
Acest câmp indică dacă datagrama poate fi fragmentată sau nu. Dacă un bit este setat la 1 în antetul interior, atunci trebuie setat și la 1 în antetul exterior, ceea ce indică faptul că datagrama nu poate fi fragmentată. Dacă un bit este setat la 0 în antetul interior, atunci poate fi 1/0 în antetul exterior.
MF: 1 bit
Acest câmp este folosit când datagrama este fragmentată, indică faptul că datagrama conține mai multe fragmente, acest câmp nu este copiat din antetul interior.
Fragment Offset: 13 biți
Acest câmp este utilizat când sunt colectate fragmente.
Time To Live (TTL): 8 biți
Acest câmp este folosit pentru a urmări durata de viață a datagramei. Antetul TTL intern este redus înainte de încapsulare și nu se modifică în decapsulator. Antetul exterior setează valoarea TTL astfel încât datagrama să fie livrată la punctul final al tunelului.
Protocol: 8 biți
Acest câmp specifică următorul protocol de datagramă după aceea. Valoarea este setată la 4. În cele mai multe cazuri, va fi IPv4 dacă nu există antete suplimentare pentru pachetul încapsulat.
Sumă de verificare antet: 16 biți
Acest câmp conține suma de control IP a antetului exterior.
Adresă IP sursă: 32 de biți
Acest câmp conține adresa IP a încapsulatorului
Adresa IP de destinație: 32 de biți
Acest câmp conține adresa IP a decapsulatorului
Opțiuni: Lungime variabilă
Acest câmp nu este copiat din antetul IP intern. Pot fi adăugate noi opțiuni.
Padding: Variable length
Acest câmp este folosit pentru a completa datagrama, astfel încât sarcina utilă să înceapă pe o limită de 32 de biți.
După primirea datagramei, există șansa ca încapsulator să primească un mesaj ICMP de la nodurile intermediare. Încapsulator ia măsuri asupra unui mesaj ICMP în funcție de tipul și codul mesajului ICMP. Următoarele mesaje ICMP cu tip și cod și acțiunea întreprinsă de încapsulator.
Buclele în tuneluri pot apărea din următoarele motive
În ambele cazuri, routerul NU TREBUIE să trimită datagrama. În schimb, datagrama trebuie aruncată.
Pentru mesajele ICMP, routerele intermediare returnează o datagramă de 64 de biți peste antetul IP, care nu este suficientă pentru a copia antetul interior. Acest lucru împiedică încapsulator să transmită mesajul corespunzător către expeditorul inițial. Dar poate fi procesat de software-ul tunelului. Trebuie să suporte următoarele