Retele de calculatoare

Important

In atentia tuturor studentilor: Va rog respectati o impartire stricta si riguroasa in semigrupe (=1/2 din grupa) pentru a nu depasi capacitatea salilor de laborator.


Titular curs: Lect. Dr. Darius Bufnea, darius.bufnea at ubbcluj punct ro

Continutul cursului si tematica activitatilor didactice

  • Retele si Internet. Modelul si stiva TCP/IP. Interfata socket();
  • Nivelul aplicatie, orientat client/server. WWW: protocolul HTTP. Protocolul FTP. Posta electronica: protocoalele SMTP, POP3, IMAP. Sistemul numelor de domenii: protocolul DNS.
  • Nivelul retea: problematica, protocolul IP, adresare IP. Protocoale conexe: ICMP, ARP, RARP, DHCP. Dirijare in Internet. Adrese private.
  • Nivelul transport. Protocoalele TCP si UDP. Controlul congestiei in Internet.
  • Nivelul fizic si legatura de date. Medii de transmisie, caracteristici, retele wireless. Problema accesului la mediu, controlul fluxului de date. Coduri detectoare si corectoare de erori.
  • Probleme generale privind securitatea retelelor, atacuri si contramasuri. Filtrarea pachetelor. Translatia de adrese. Incapsularea pachetelor. Mecanisme VPN, tunelare.

Cerinte si mod de evaluare

  • Prezenţa la laboratoare este obligatorie în proporţie de minim 90% (minim 12 laboratoare din 14). Neîndeplinirea acestor praguri minime (prin absenţe nemotivate) atrage după sine neacceptarea studentului la examene (atât în sesiunea normală cât şi în sesiunea de restanţe).
  • Nota pe activitatea de laborator minim 5
  • Nota minima la examenul din sesiune (examen grila online pe Moodle): 5
  • In nota finala laboratorul va avea o pondere de 40% iar scrisul de 60%

Bibliografie

  1. Andrew S. Tanenbaum: Retele de calculatoare, editura Byblos, 2003, traducere dupa editia a 4-a;
  2. James F. Kurose, Keith W. Ross: Computer Networking: A Top-Down Approach Featuring the Internet, Addison-Wesley, 2nd, 2000;
  3. Richard. W. Stevens: Unix Network Programming. Volume 1, 2nd edition, Prentice Hall, 1998;
  4. Documentatiile standard RFC ale protocoalelor studiate, http://www.faqs.org/rfcs.

Activitati de laborator

Tema 1a

Sa se implementeze in C o pereche de programe client/server care comunica prin socket-uri TCP/IP pentru rezolvarea urmatoarelor probleme:

  1. Un client trimite unui server un sir de numere. Serverul va returna clientului suma numerelor primite.
  2. Un client trimite unui server un sir de caractere. Serverul va returna clientului numarul de caractere spatiu din sir.
  3. Un client trimite unui server un sir de caractere. Serverul va returna clientului acest sir oglindit (caracterele sirului in ordine inversa).
  4. Un client trimite unui server doua siruri de caractere ordonate. Serverul va interclasa cele doua siruri si va returna clientului sirul rezultat interclasat.
  5. Un client trimite unui server un numar. Serverul va returna clientului sirul divizorilor acestui numar.
  6. Un client trimite unui server un sir de caractere si un caracter. Serverul va returna clientului toate pozitiile pe care caracterul primit se regaseste in sir.
  7. Un client trimite unui server un sir de caractere si doua numere (fie acestea s, i, l). Serverul va returna clientului subsirul de lungime l a lui s care incepe la pozitia i.
  8. Un client trimite unui server doua siruri de numere. Serverul va returna clientului sirul de numere comune celor doua siruri primite.
  9. Un client trimite unui server doua siruri de numere. Serverul va returna clientului sirul de numere care se regaseste in primul sir dar nu se regasesc in al doilea.
  10. Un client trimite unui server doua siruri de caractere. Serverul ii raspunde clientului cu caracterul care se regaseste de cele mai multe ori pe pozitii identice in cele doua siruri si cu numarul de aparitii ale acestui caracter.

Odata cu rezolvarea acestor probleme, studentii se vor familiariza cu utilizarea comenzilor strace si ltrace.

Exemplu client – server iterativ cu socket-uri TCP.

Tema 1b

  • Rulati o pereche de programe client-server pe calculatoare diferite. Modificati clientul astfel incat sa se poata conecta la orice server (nu neaparat la serverul care ruleaza pe localhost – 127.0.0.1), server specificat prin adresa ip si port in linia de comanda a clientului.
  • Modificati serverele de la problemele anterioare, astfel incat acestea sa fie servere concurente (vor putea deservi in paralel mai multi clienti).
  • Rescrieti cel putin un client in alt limbaj de programare (Java, Python) astfel incat aceasta sa poata comunica cu succes cu un server scris in limbajul C.

Exemplu server concurent TCP
Client Java (pentru serverele de mai sus scrise in C)
Exemplu client in C, server in Java (trimitere sir de caractere)

Tema 1c

Sa se implementeze in C o pereche de programe client/server care comunica prin socket-uri UDP pentru rezolvarea urmatoarelor probleme:

  1. Un client trimite unui server doua numere. Serverul va returna clientului suma celor doua numere.
  2. Un client trimite unui server un numar. Serverul va returna clientului un boolean care sa indice daca numarul respective este prim sau nu.
  3. Un client trimite unui server un sir de lugime cel mult 100 de caractere. Serverul va returna clientului numarul de caractere spatiu din sir.
  4. Un client trimite unui server un sir de lungime cel mult 100 de caractere. Serverul va returna clientului acest sir oglindit (caracterele sirului in ordine inversa).
  5. Un client trimite unui server un numar reprezentat pe un octet fara semn. Serverul va returna clientului sirul divizorilor acestui numar.
  6. Un client trimite unui server un sir de lungime cel mult 100 de caractere si un caracter. Serverul va returna clientului toate pozitiile pe care caracterul primit se regaseste in sir.
  7. Un client trimite unui server un sir de lungime cel mult 100 de caractere si doua numere (fie acestea s, i, l). Serverul va returna clientului subsirul de lungime l a lui s care incepe la pozitia i.
  8. Un client trimite unui server doua numere reprezentate pe doi octeti fara semn fiecare. Serverul va returna clientului cmmdc si cmmmc al numerelor primite.
  9. Un client trimite unui server o cerere prin care ii cere acestuia data si ora curenta. Serverul va returna clientului data sub forma unui intreg ce reprezinta numarul de secunde trecute de la 1 ianuarie 1970. Clientul va afisa corespunzator data pe baza acestui intreg.
  10. Un client trimite unui server un nume de calculator sub forma unui sir de caractere de lungime cel mult 100. Serverul va returna clientului un numar reprezentat pe 4 octeti fara semn ce reprezinta adresa IP a calculatorului respectiv. Clientul va afisa corespunzator adresa IP (in format zecimal cu “.”) sau un mesaj de eroare daca numele calculatorului nu poate fi translatat intr-o adresa IP.

Exemplu client – server UDP

Tema 2

Utilizare simulator de retea: Cisco Packet Tracer
Download: Cisco Packet Tracer (Windows), Cisco Packet Tracer (Linux: Ubuntu)

Probleme rezolvate

Problema rezolvata la laborator in saptamana 11 de scoala:
problema sap 11.pkt
rezolvare problema sap 11.txt

Exemplu din saptamana 12 de scoala, SNAT pe router Cisco: