Laborator 1

Tematica laboratorului

1. Recapitulare notiuni de baza privind comunicarea in retea

Modelul OSI

Pentru descrierea modului de comunicare la nivelul arhitecturii de protocoale intre calculatoarele interconectate in cadrul unei retele se utilizeaza in mod curent modele structurate pe nivele (layers). Un astfel de model este modelul OSI (Open System Interconnection) structurat pe sapte nivele dupa cum urmeaza:

  1. 7. Application
  2. 6. Presentation
  3. 5. Session
  4. 4. Transport
  5. 3. Network
  6. 2. Data Link
  7. 1. Physical

Fiecare din nivelele modelului OSI include o serie de specificatii (standarde, protocoale) care descriu functionalitati ale respectivului nivel. Specificatiile prezente la un nivel fac uz de specificatiile nivelului inferior (in linii mari se poate spune ca un nivel ofera servicii nivelului superior si utilizeaza serviciile oferite de un nivel inferior). O descriere sumara a fiecaruia din cele sapte nivele care cuprinde principalele operatii ce au loc in comunicarea in cadrul unei retele de calculatoare a doua sau mai multe aplicatii rulate de utilizator ar fi urmatoarea:

  • Nivelul Aplicatie - este cel mai apropiat nivel de utilizator, aici integrandu-se in linii mari functionalitatea unei aplicatii rulate de acesta ce include o componenta care initiaza comunicarea in retea prin intermediul unui protocol ce se incadreaza la acest nivel (exemplu: initierea unui transfer de fisiere prin FTP)
  • Nivelul Prezentare - are ca rol principal stabilirea unui format de reprezentare a datelor atat dinspre nivelul Aplicatie spre nivelele inferioare pentru trimiterea in final in cadrul retelei cat si invers
  • Nivelul Sesiune - protocoalele ce actioneaza aici administreaza o sesiune intre partile ce comunica avand rol de exemplu in sincronizarea actiunilor participantilor
  • Nivelul Transport - are rolul de a oferi servicii independente de nivelele inferioare privind transferul datelor intre participantii din cadrul unei sesiuni de comunicatie catre nivelele superioare, aici fiind incluse si aspecte precum asigurarea transferului sigur, controlul fluxului, evitarea congestiei, etc
  • Nivelul Retea - are rolul de a oferi servicii efective de transfer a datelor in retea intre sursa si destinatie, fiind incluse functionalitati ce privesc rutarea, fragmentarea si reasamblarea unitatilor de date transmise, controlul erorilor, etc
  • Nivelul Legatura de Date - in linii mari asigura functionalitati in ceea ce priveste transferul datelor in retea intre echipamentele hardware prezente intre sursa si destinatie, de asemeni aici fiind incluse si detectia si corectia erorilor ce pot fi cauzate de nivelul Fizic
  • Nivelul Fizic - include specificatiile la nivel fizic in ce priveste echipamentele ce asigura transferul datelor

Informal se poate considera ca spre exemplu intre doua puncte (calculatoare) ce comunica prin intermediul retelei pe baza unei aplicatii software, un pachet ce va fi trimis de expeditor in retea parcurge un drum de la nivelul Aplicatie la nivelul Fizic, fiecare nivel adaugand prin incapsulare informatii specifice in cadrul pachetului respectiv. Destinatarul va "trece" respectivul pachet prin propria stiva de nivele de la primire la nivelul Fizic pana la Aplicatie deincapsuland pachetul, extragand si prelucrand informatiile specifice nivelului.

Modelul TCP/IP

Desi exista efectiv specificatii (in mare parte standarde/protocoale elaborate de ISO si ITU) ce se incadreaza la fiecare nivel, modelul OSI e in general mai putin folosit in comunicatiile efective inter-calculator avand in special rol conceptual (didactic). In practica se utilizeaza modelul TCP/IP bazat in mare parte pe specificatii elaborate de IETF (care pot fi in mare parte integrate la nivel de functionalitate si pe nivelele modelului OSI). Modelul TCP/IP conform definirii din RFC 1122/1123 include patru nivele (layers):

  1. 4. Application
  2. 3. Transport
  3. 2. Internet
  4. 1. Link

Nivelurile Link, Internet si Transport se suprapun ca functionalitati peste cele definite in modelul OSI. Nivelurile Sesiune, Prezentare si Aplicatie din modelul OSI se integreaza din punct de vedere al protocoalelor care ar intra in cadrul acestora in nivelul Aplicatie al modelului TCP/IP. Protocolul principal ce asigura transferul datelor intre sursa si destinatie in retelele de calculatoare bazate pe comutare de pachete ce functioneaza la nivel Internet este IP (Internet Protocol). Protocoalele cele mai intalnite in practica ce furnizeaza servicii in cadrul nivelului superior Transport si utilizeaza IP sunt TCP (Transmission Control Protocol) si UDP (User Datagram Protocol).




Categorii de adrese

Fiecare interfata de retea are asociata de producator o adresa fizica numita adresa MAC (Media Access Control). Formatul unei adrese MAC este de sase grupuri a cate doua cifre in format hexa (48 biti).

Exemplu: 08:A4:22:13:AA:F5

Adresa MAC de broadcast are toti bitii setati pe 1: FF:FF:FF:FF:FF:FF . O adresa MAC este utilizata in traficul in cadrul retelei in adresarea hop-by-hop (pentru a adresa urmatorul punct in ruta catre destinatie). Informal se poate spune ca o adresa MAC este specifica nivelului Link.

O adresa IP identifica la nivel logic o interfata de retea nefiind asociata de producator la nivel fizic ci asignata in momentul utilizarii interfetei. O adresa IP (in versiunea 4) are ca format patru valori numerice de un octet separate prin punct (32 biti).

Exemplu: 192.168.101.1

In cadrul unei adrese IP se diferentiaza doua portiuni: retea (numita si identificator retea - Network ID) si gazda (numita si identificator gazda - Host ID). Portiunea de retea identifica reteaua din care face parte echipamentul (statia/calculatorul) care are asociata adresa respectiva, iar portiunea gazdei identifica efectiv respectivul echipament. Adresele IP se impart in mai multe clase dupa cum urmeaza:

  • Clasa A: adresele in care primul octet incepe cu 0; partea de retea consta in primul octet iar partea asociata gazdelor ultimii trei
  • Clasa B: adresele in care primul octet incepe cu 10; partea de retea consta in primii doi octeti iar partea asociata gazdelor in ultimii doi
  • Clasa C: adresele in care primul octet incepe cu 110; partea de retea consta in primii trei octeti iar partea asociata gazdelor ultimul octet
  • Clasa D: adresele in care primul octet incepe cu 1110; sunt adrese de multicast (utilizate la nivel logic pentru crearea de grupuri de utilizatori prin "aderarea" la o adresa de tipul respectiv)
  • Clasa E: adresele in care primul octet incepe cu 1111; grup de adrese rezervate

Alte categorii de adrese rezervate sunt:

  • 0.0.0.0 - 0.255.255.255
  • 10.0.0.0 - 10.255.255.255
  • 127.0.0.0 - 127.255.255.255
  • 172.16.0.0 - 172.31.255.255
  • 192.168.0.0 - 192.168.255.255

Partea de host din cadrul unei adrese IP poate fi utilizata in procesul de subnetting, ce presupune utilizarea unui grup de biti din respectiva parte de host pentru crearea de subretele. Astfel spatiul de adrese IP pentru statiile dintr-o subretea - partea de host - este limitat la ceea ce ramane neutilizat din partea de host initiala. Adresa de retea (sau de subretea) se defineste ca adresa IP ce are toti bitii din partea de host setati pe 0. O masca de retea reprezinta un IP in care bitii din portiunea de retea (inclusiv extensia pentru subretea daca exista) sunt setati pe 1, iar restul pe 0. O masca de retea este specificata uzual pentru un IP prin numarul de biti setati in partea de retea.

Exemplu: 192.168.101.0/24

Astfel avand dat un IP si masca de retea, se poate determina adresa retelei (subretelei) prin intermediul unui "si" logic intre cele doua. Adresa de broadcast in cadrul unei subretele se obtine prin setarea bitilor din partea de host pe 1 (Pentru exemplul anterior: 192.168.101.255).
Informal se poate spune ca adresarea prin IP-uri e specifica nivelului Internet.

Unitati de date la nivel de protocol sau nivel in modelul TCP/IP

Asemeni descrierii facute in ceea ce priveste modelul OSI, si in cadrul modelului TCP/IP datele plecate de la nivelul Aplicatie pana la trimiterea in retea trec prin nivelele modelului, in cadrul fiecaruia fiindu-le adaugate informatii specifice (in functie de protocoalele utilizate in comunicatie). Datele "incapsulate" de un protocol (primite deseori "din partea" unui alt protocol) sunt referite uzual prin termenul de "payload".
Astfel la nivel Transport, in functie de protocolul utilizat payloadul primit din partea nivelului Aplicatie este incapsulat in segmente TCP sau datagrame UDP prin adaugarea unui header dupa cum urmeaza (segmentele TCP sau datagramele UDP mai sunt referite in literatura de specialitate si simplu sub termenul de "pachete" comun unitatilor de date de la nivelurile Internet, Transport si Aplicatie):

Headerul TCP

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |          Source Port          |       Destination Port        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                        Sequence Number                        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                    Acknowledgment Number                      |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |  Data |           |U|A|P|R|S|F|                               |
   | Offset| Reserved  |R|C|S|S|Y|I|            Window             |
   |       |           |G|K|H|T|N|N|                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |           Checksum            |         Urgent Pointer        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                    Options                    |    Padding    |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                             data                              |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Headerul UDP

                  0      7 8     15 16    23 24    31
                 +--------+--------+--------+--------+
                 |     Source      |   Destination   |
                 |      Port       |      Port       |
                 +--------+--------+--------+--------+
                 |                 |                 |
                 |     Length      |    Checksum     |
                 +--------+--------+--------+--------+
                 |
                 |          data octets ...
                 +---------------- ...

Se observa ca la nivelul Transport headerele specifice celor doua protocoale nu includ nici o adresa din cele amintite (IP sau MAC). In schimb se observa prezenta unor campuri ce specifica porturile (sursa si destinatie). Daca dupa cum s-a precizat in cele anterioare la nivel Link se poate vorbi de adresare la nivel de MAC, iar la nivelul Internet de adresare la nivel de IP, in ceea ce priveste nivelul transport se poate vorbi de adresare la nivel de porturi. Acestea sunt specificate prin intermediul unor intregi pe 16 biti si pot fi considerate informal ca un punct de legatura (acces) al unui anumit serviciu oferit in retea (Exemplu: HTTP - port 80)

La nivelul Internet, unitatile de date amintite mai sus la nivelul Transport (considerate ca "payload" - date), sunt mai departe incapsulate in datagrame (pachete) IP, prin adaugarea unui header cu urmatoarea structura:

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |Version|  IHL  |Type of Service|          Total Length         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |         Identification        |Flags|      Fragment Offset    |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |  Time to Live |    Protocol   |         Header Checksum       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                       Source Address                          |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                    Destination Address                        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                    Options                    |    Padding    |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

La nivelul Link datagramele IP sunt incapsulate in frameuri, existand mai multe standarde in acest sens cel mai comun format pentru comunicatiile intre calculatoare ce folosesc IP ca protocol la nivel Internet fiind formatul Ethernet II (specificat in standardul 802.3) ce se compune din:

- un header format din adresa MAC destinatie, adresa MAC sursa si un camp de 2 octeti ce indica tipul protocolului din payloadul incapsulat

- un trailer format din patru octeti suma de control

Dimensiunea obisnuita a datelor din cadrul unui frame de formatul precizat e limitata la 1500 octeti (exista insa definite prin standard si frameuri Ethernet de dimensiuni mai mari - jumbo frames). Aceasta valoare (ce poate varia in functie de standard) se defineste ca dimensiune maxim transmisibila (MTU - Maximum Transmission Unit) la nivel Link.


2. Aplicatii pentru monitorizare si simulare trafic

In cadrul unor simulari care se vor desfasura pe parcursul urmatoarelor laboratoare vom utiliza o serie de utilitare printre care:

  • Wireshark - utilitar pentru captura si analiza trafic retea
  • Ettercap - utilitar pentru interceptie/trimitere pachete
  • NetWag (Netwox) - utilitar pentru interceptie/trimitere pachete
  • Scapy - utilitar complex pentru diverse operatii ce implica manipulare de pachete

3. Instalarea unei distributii Linux pe o masina virtuala pentru simulare de atacuri in retea

Pentru lucrul in cadrul laboratorului este recomandata utilizarea unei masini virtuale Linux sub VirtualBox (cu Extension Pack). Se prefera o distributie Ubuntu. O optiune care are un cosum redus de resurse este Lubuntu.
Nota: Pe Windows, e posibil ca instalarea VirtualBox sa necesite instalarea preliminara a unui pachet Visual C++ Redistributable.

Dupa instalarea distributiei este necesara instalarea unei serii de pachete:

sudo apt-get install make
sudo apt-get install gcc
sudo apt-get install netwox
sudo apt-get install wireshark
sudo apt-get install net-tools
sudo apt-get install ettercap-graphical
sudo apt-get install telnetd
sudo apt-get install openbsd-inetd
sudo apt-get install vsftpd
sudo apt-get install python3-pip
sudo apt install python3-scapy

Se mai recomanda optional (posibil utile in anumite laboratoare) si urmatoarele:

sudo apt-get install curl
sudo apt-get install traceroute
sudo apt-get install whois
sudo apt-get install openssh-server
sudo apt-get install conntrack
sudo apt-get install resolvconf
sudo apt-get install gcc-multilib
sudo apt-get install libpcap-dev
sudo apt install python3-pycryptodome

Pentru eventuala necesitate de a programa anumite scripturi sau alte programe se poate folosi VS Code:

sudo snap install --classic code

De asemeni se recomanda instalarea pachetelor Guest Additions pentru o integrare mai buna cu sistemul de operare gazda (meniul Devices->Insert Guest Additions CD image si rulare ./VBoxLinuxAdditions.run in locatia unde imaginea a fost montata). Pentru redimensionarea automata a ecranului e posibil necesara pe langa Guest Additions si activarea 3D acceleration din Settings->Display pe masina virtuala.


Pentru simularea de atacuri in retea este necesara clonarea acestei masini in inca doua copii. In VirtualBox aceasta se face prin click dreapta pe masina urmata de optiunea Clone. Atentie: este necesara alegerii optiunii de generare de noi adrese MAC pentru fiecare interfata de retea. De asemeni in Virtual Box, meniul principal File->Preferences (sau Tools), sectiunea Network, se va defini un nou NAT Network (de exemplu cu numele "MyNAT"). Se va bifa suportul DHCP si se va seta adresa de retea: 192.168.56.0/24.


Dupa clonare, pentru fiecare masina se va seta in Settings, optiuni Network, primul adaptor de retea, atasarea la Nat Network pentru reteaua creeata la pasul anterior ("MyNAT").


Pentru a afla adresele IP ale fiecarei masini se poate rula pe acestea comanda ifconfig. La acest moment ar trebui ca pe toate statiile pornite sa se poate executa cu succes comanda ping pentru testarea conectivitatii intre acestea.

© 2026 Emanuel Onica. Parts of design by W3Layouts