Documente Academic
Documente Profesional
Documente Cultură
Un protocol orientat către conexiune este un protocol de rețea utilizat pentru a stabili o sesiune de
comunicare a datelor în care dispozitivele finale folosesc protocoale preliminare pentru a stabili conexiuni
end-to-end și apoi fluxul de date ulterioare este livrat în modul de transfer secvențial.
• Ce tipuri de aplicații beneficiază în general de utilizarea protocolului TCP?
TCP este un protocol folosit de obicei de aplicații care au nevoie de confirmare de primire a
datelor, de exemplu:
Web
SSH, FTP, telnet
SMTP, trimiterea de mail
IMAP / POP, primind mail
• Cum TCP garantează că datele vor fi transmise cu succes?
TCP împarte datele (provenind din stratul de aplicație) în bucăți de dimensiuni corespunzătoare și
apoi trece aceste bucăți în rețea. Recunoaște pachetele primite, așteaptă confirmarea pachetelor pe care le-
a trimis și stabilește timpul pentru a retrimite pachetele dacă nu sunt primite la timp.
Blocking este atunci când nu putem servi mai mult de o conexiune într-un singur thread. În mod
implicit, soclurile TCP funcționează în modul de blocare.
Non-blocking atunci când orice operație este executată imediat. I / O care nu blochează înseamnă
că cererea este pusă în coadă imediat și că funcția este returnată.
Non-Blocking single thread reprezinta procesul prin care se execută o cerere pe un singur thread și
nu este nevoie de a fi blocat, dar în blocking multithreaded exista mai multe threaduri insa se executa
secvential, unul cate unul, celelalte fiind puse in asteptare.
TCP Three Way Handshake (numit și strângere de mână TCP; strângere de mână cu trei
mesaje) este metoda folosită de TCP pentru a stabili o conexiune TCP/IP printr-o rețea bazată pe
protocolul Internet.
Cele patru apeluri de sistem necesare pentru crearea unui server TCP sunt: socket, bind, listen și
accept. Fiecare are un scop specific și ar trebui apelat în ordinea de mai sus.
Metoda bind() atribuie o adresă de protocol locală la un socket. Cu protocoalele Internet, adresa
este combinația unei adrese IPv4 sau IPv6 (32 biți sau 128 biți), împreună cu un număr de port TCP de 16
biți.
Funcția de connect() este utilizată de un client TCP pentru a stabili o conexiune cu un server TCP.
Clientul nu trebuie să apeleze metoda bind () în secțiune înainte de a apela metoda connect(), deoarece
kernel-ul va alege atât portul efemer(portu care nu durează mult), cât și IP-ul sursă, dacă este necesar.
• Ați avea vreodată nevoie să implementați un timeout într-un client sau server care
utilizează TCP?
creșterea intervalului de timp pentru utilizatori la ambele capete ale unei conexiuni TCP îi permite
să supraviețuiască perioadelor prelungite fără conectivitate end-to-end;
scăderea timpului de utilizare permite serverelor ocupate să-și anunțe în mod explicit clienții că
vor menține starea de conexiune doar pentru o perioadă scurtă de timp, fără conectivitate.
• Într-o conexiune TCP, clientul sau serverul trimite mai întâi datele?
Clientul trimite primul date către server, aceste date fiind cererea clinetului către server pentru a se
conecta și a executa o comandă dorită, fie ea de citire, sau de înscriere.
Adresa IP 127.0.0.1 este o adresă IPv4 cu scop special numită localhost sau adresă loopback.
Toate computerele folosesc această adresă ca fiind locală, și nu le permite să comunice cu alte dispozitive
așa cum o face o adresă IP reală. Ea se folosește de obicei pentru testare locală înainte de lansare.
• De unde știe un sistem de operare ce aplicație este responsabilă pentru un pachet primit
din rețea?
Un sistem de operare știe ce aplicație este responsabilă de pachetul primit din rețea datorită
informației care îl conține, astfel el în dependență de portul înscris în pachet el transmite către aplicația
respectivă care suportă astfel de port.
• Datele primite prin recv() au întotdeauna aceeași dimensiune cu datele trimise cu send()?
Nu, deoarece spre exemplu, send() trimite 25 de octeți și sunt scrise în rețea, dacă nu a apărut nicio
eroare, iar la recv(), putem primi oriunde de la 1 la 25 de octeți de date.
• Este acceptabil să închei executia programului dacă este detectată o eroare de rețea?
Nu, deoarece clientul poate sa incerce din nou sa se conecteze la retea. Incheierea executiei
programului ar costa mai multe resurse si timp decat incercarea de a se conecta din nou la retea.
Dezactivarea Nagle nu este foarte eficientă atunci când se efectuează o comunicare uni-
direcțională. În comunicarea bidirecțională, dezactivarea Nagle poate îmbunătăți debitul, deoarece
beneficiile eliminării întârzierilor se pot acumula, deoarece fiecare nod își poate trimite răspunsurile ușor
mai devreme, lăsând cealaltă parte să răspundă chiar mai devreme.
Semaphore
CountDownLatch
CyclicBarrier
Exchanger<V>
Phaser