Networking
Internet = conectarea mai multor rețele locale
-> există gateways/routers (au rol de a mișca pachetele dintr-o parte în alta)
-> oferă datagram services (posibilitatea de a trimite un pachet între sursă și destinație)
Când NU se poate trimite pachetul?
- nu există legăturile necesare între routers
- bit errors => pachet aruncat
- router configurat greșit
- trafic aglomerat pe acelși link => routerul folosește un buffer și încearcă să salveze stream-urile

BEST EFFORT DELIVERY (serviciu de bază) - încearcă să trimită pachetele, dar e posibil să eșueze din cauza pachetelor care se pierd.
Pachetele se pierd dacă:
- nu există legătură la destinație
- există buclă infinită
- se schimbă biții și nu mai corespunde
ADRESA IP = identificator unic global
Configurația unui router:

Routerul așteaptă pachete de la cele 3 rețele:
if (MAC.DST != r1) DROP
else if (MAC.ETHER_TYPE == IP) => IP PROCESSING
Stiva IP:

if (IP.DST == R) local_packet_process();
else FORWARD(PKT);
R = IP router
Routerul face longest prefix match.
Cu ajutorul tabelei de routare se alege portul de ieșire.
Tabelă de routare pentru R1:

Pentru a trimite informații la R2, avem nevoie de adresa MAC.

Prin protocolul ARP se face match între IP - MAC. Pentru a afla adresa lui R2 se trimite un pachet broadcast și se întoarce un UNICAST.
Ajungem la R2:
- se uită la ETH.DST
- se uită la ETH.TYPE (IP) => IP processing
- se uită la IP.DST => e pentru mine?-> da, păstrez
-> nu, trimit la IP.DST prin lookup și forwarding
Adresele IP sunt globale (nu se schimbă) => avem nevoie de adrese locale (ETH) între rețele.
Costul/pachet nu depinde de mărimea pachetului, ci de capacitatea de pachete.
Planul de date = DATA PLANE se ocupă să trimită pachetele la destinația corectă.
Control plane controlează procesele de matching și forwarding. Are două tipuri de rute (statice și dinamice - adăugate folosind protocoale de routare: BGP, OSPF, ISIS, RIP).
Utilitare:
- ping (ICMP)
- traceroute -> calea completă până la destinație
192.168.240.0/24 => 11000000.10101000.11110000.00000000
Primii 24 de biți sunt adresa de NETWORK.
Dacă ultimii 8 biți sunt 0, atunci adresa nu e validă pentru host. Dacă ultimii 8 biți sunt 1 înseamnă că e broadcast.
Algoritmul de longest prefix match
P - prefix de lungime l (adresa la care trebuie să ajung)
V1: P >> (32 - l) ==? D >> (32 - l)
V2: Creez o mască NETMASK
/24 -> primii 24 biți 1, restul 0
/8 -> primii 8 biți 1, restul 0
D & M ==? P
Se alege adresa cu prefixul cel mai lung.
Headerul IP are un TTL (time to leave). La fiecare hop, TTL-ul scade și atunci când ajunge la 0, pachetul este aruncat pe jos. Se folosește pentru a evita ciclarea.