Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • pcom/notite-cb
  • daniel.ghindea/notite-cb
  • stefania.tunaru/notite-cb
  • ioana.ionescu2209/notite-cb
  • razvan_gabriel.serb/notite-cb
  • alexandru.trifu2712/notite-cb
6 results
Show changes
Commits on Source (3)
src/curs5/configuratie_router.png

83.6 KiB

# ***Networking***
***Internet*** = conectarea mai multor rețele locale
-> există **gateways/routers** (au rol de a mișca pachetele dintr-o parte în alta)<br>
-> 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
- <u>trafic aglomerat</u> pe acelși link => routerul folosește un buffer și încearcă să salveze stream-urile
![alt text](retea_router.png)
**BEST EFFORT DELIVERY** (serviciu de bază) - încearcă să trimită pachetele, dar e posibil să eșueze din cauza pachetelor care se pierd.<br>
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:<br>
![alt text](configuratie_router.png)
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:
![alt text](stiva_ip.png)
```
if (IP.DST == R) local_packet_process();
else FORWARD(PKT);
```
R = IP router
Routerul face **longest prefix match**. <br>
Cu ajutorul **tabelei de routare** se alege portul de ieșire.
### Tabelă de routare pentru R1:
![alt text](tabela.png)
Pentru a trimite informații la R2, avem nevoie de adresa MAC.<br><br>
![alt text](eth.png)
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.<br>
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
<p style="margin-left: 33ch;">-> 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<br>
Primii 24 de biți sunt adresa de NETWORK.<br>
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)<br>
V1: P >> (32 - l) ==? D >> (32 - l)<br>
V2: Creez o mască NETMASK<br>
/24 -> primii 24 biți 1, restul 0<br>
/8 -> primii 8 biți 1, restul 0<br>
D & M ==? P<br>
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.
\ No newline at end of file
src/curs5/eth.png

24.4 KiB

src/curs5/retea_router.png

61.3 KiB

src/curs5/stiva_ip.png

16.5 KiB

src/curs5/tabela.png

43.9 KiB

# ***Nivelul IP***
## ***IP header***
![alt text](ip_header.png)
**IHL** - lungimea câmpului Options (de obicei 5 => Options are 4 * 5 octeți) <br>
**DSCP** - clasa de prioritate a pachetului; folosit în centrele de date, nu în internet<br>
**ECN** - folosit pentru congestion control<br>
**TOTAL LENGTH** - dimensiunea pachetului<br>
**TTL** - time-to-live<br>
**PROTOCOL** - spune ce protocol urmează să prelucreze pachetul<br>
**CHECKSUM** - acoperă doar headerul IP (nu și payload-ul); se recalculează după forwarding (din cauza TTL)<br>
**SRC, DST ADR**<br>
**OPTIONS**
![alt text](traseu.png)
Dimensiune frame = 9000 biți.<br>
De la S la R1 avem 9000 biți, de la R1 la R2 avem 1500 și de la R2 la D avem 536.<br>
Deoarece de la R1 la R2 sunt mai puțini biți (9000 > 1500) => ori drop, ori **IP fragmentation**.
*IP fragmentation* = sparge pachetul în bucăți dacă este mai mare.
Fragmentarea presupune copierea header-ului în întregime cu excepția: **identification, flags, fragment offset**.<br>
**flags**: 0 DF MF, DF = don't fragment, MF = more fragment. Dacă DF == 1 => drop.
Dacă avem voie să fragmentăm:
![alt text](fragmentare.png)
Destinația reasamblează pachetele.<br>
Fragmentarea este rar folosită.
**ICMP** = protocol debugging peste IP
## ***BORDER GATEWAY PROTOCOL (BGP)***
Leagă organizații care își gestionează propriile rețele.<br>
Autonomous Systems: AS, ASN.
**BGP** este un **protocol hard state** (ruta se anunță o singură dată și se ține minte).
## ***User Datagram Protocol***
**UDP** = protocl de nivel trasnport
**Porturi de nivel trasnport** = număr pe 2 octeți; a.î. pachetul să știe pe ce proces se duce.
Headerul UDP se pune după header IP.
UDP-header:
- src port
- dst port
- length
- checksum
\ No newline at end of file
src/curs6/fragmentare.png

124 KiB

src/curs6/ip_header.png

48.1 KiB

src/curs6/traseu.png

18.6 KiB