Sunteți pe pagina 1din 39

Protocoale TCP

Mecanisme de implementare a facilitatilor asigurate de protocolul TCP in noduri de retea INTERNET Protocoale de fereastra Calitatea transferului asigurata la nivelul de transport

Grupa NECO seria A gr 454 BUCACIUC Ilie GRANZULEA George MUNTEAN Andrei NEGREA Constantin (coordonator)

UBA Larisa Protocoale TCP Complemente protocoale TCP. Mecanisme de implementare a facilitatilor asigurate de protocolul TCP in noduri de retea INTERNET(terminologie, structuri de date, stri automat TCP). Protocoale de fereastra. Calitatea transferului asigurata la nivelul de transport
1.Dezvoltarea TCP (scurt istoric) 2. Introducere in TCP si stiva de protocoale TCP/IP 3. Protocoale ale nivelului transport complementare TCP 4. Zone de aplicare a protocolului TCP 5. Folosirea TCP 6. Structura segmentului TCP 7. Modul de operare al protocolului TCP 7.1 Stabilirea conexiunii 7.2 Transmisiune out of band 7.3 Probleme de securitate 7.3.1 Inundarea cu pachete de tip SYN (Denial of service) 7.3.2 Capturarea unei conexiuni 7.4 Transferul de date 7.4.1 Transmiterea in ordine , retransmisiunea pachetelor si stergerea pachetelor duplicate 7.4.2 Transferul lipsit de erori 7.4.3 Controlul congestiilor 7.5 Controlul fluxului, ferestre TCP 7.6 Dimensionarea ferestrei TCP 7.7 Terminarea conexiunii 8. Port-uri TCP 9. Aplicatii ale protocolului TCP in cazul retelelor wireless 10. Implementari hardware ale TCP 11. Interceptari de trafic TCP (sniffere) 12. Alternative la protocolul TCP 13. TCP checksum IPv4 , IPv6 Concluzii Bibliografie

Grupa NECO seria A gr 454 BUCACIUC Ilie Cap 7 7.6 GRANZULEA George Cap 2 , 3 MUNTEAN Andrei Cap 9, 13 NEGREA Constantin Cap 1, 4, 5, 6, 7.7 , 8 UBA Larisa Cap 10, 11,12

1.Dezvoltarea TCP (scurt istoric) Protocolul TCP/IP (Transmission Control Protocol/Internet Protocol) a aparut in anii 70. A fost initial dezvoltat de Departamentul pentru Aparare din Statele Unite ( DOD Department of Defence ), intr-o incercare de a conecta diferite retele.In prezent este folosit ca un protocol standard de comunicatie folosit in numeroase retele , cea mai cunoscuta fiind Internetul. Protocolul TCP este unul complex si in continua dezvoltare. Cu toate ca sau facut imbunatatiri de-a lungul anilor, structura sa de baza nu s-a modificat semnificativ de la prima sa specificatie in Request for Comments RFC 675 in anul 1974 si de la specificarile facute in RFC 793 in 1981 la a patra varianta. In anul 1989 , in documentul oficial privind specificatiile comunitatii Internet RFC s-au clarificat cerintele necesare pentru serverele accesibile pe Internet si implemenatrea protocoalelor TCP. In 1999 se publica oficial variante imbunatatite ale algoritmilor de controlul congestiilor iar in 2001 in documentul RFC a fost descris ECN (explicit congestion notification ) un mecanism de semnalare si evitare a congestiilor. 2. Introducere in TCP si stiva de protocoale TCP/IP Comunicarea intre 2 masini de calcul a fost realizata inca de la inceputurile comunicatiilor digitale cu ajutorul unei stive de protocoale ordonata pe mai multe nivele . OSI reprezinta una dintre primele structuri de comunicare ierarhica realizata de Organizatia Internationala de Standardizare ISO. Ea a fost creata pe baza a 7 niveluri : nivelul Fizic se ocupa de perspectiva pur fizica a comunicatiilor , bitii fiind priviti ca alternari de tensiuni intr-un mediu de transmisie sau orice alt fenomen fizic care ar putea duce , prin prelucrare , la o comunicare intre 2 masini de calcul - nivelul Legatura Date(Data Link) se ocupa in principal de adresarea fizica a masinilor de calul prin folosirea unei adrese fizice numite MAC - nivelul Retea lucreaza cu protocoalele routate ( IP, AppleTalk , IPX etc) care permit o adresare logica si gasirea caii catre destinatie nivelul Transport vegheaza la consistenta comunicarii bazandu-se pe flow control si error control nivelul Sesiune stabileste , asigura buna functionare si termina sesiunea nivelul Prezentare se ocupa de reprezentarea datelor si de

criptare nivelul Aplicatie este reprezentat de diferitele aplicatii care ruleaza pe acea masina de calcul Cand o aplicatie de pe statia sursa doreste sa comunice cu o alta aplicatie de pe o statie destinatie , stiva de protocoale OSI este parcursa de sus in jos , de la niveul aplicatie spre nivelul fizic .Informatia este incapsulata in segmente , pachete , frame-uri si apoi trimisa prin intermediul nivelului fizic al statiei destinatie unde are loc procedeul invers informatia fiind dezincapsulata in timp ce trece de la nivelul fizic catre nivelul aplicatie . In momentul de fata OSI nu mai reprezinta decat o unealta didactica ea fiind inlocuita in mare parte de stiva TCP/IP care reprezinta o viziune comprimata si mai eficienta asupra comunicarii ierarhice .Cu toate acestea principiile de baza raman aceleasi . Precum se observa in figura de mai jos nivelurile Fizic si Data Link ale OSI au fost concatenate intr-un singur layer TCP/IP numit Network Access . Nivelul Network din OSI si-a pastrat componenta insa a fost redenumit Internet . Nivelul transport in TCP/IP ramane in mare acelasi ca in stiva OSI insa ia o parte din atributiile nivelului sesiune ( initierea si terminarea dialogului ) . Al patrulea si ultimul nivel al TCP/IP a reusit sa reuneasca ultimele 3 nivele OSI : Sesiune , Prezentare si Aplicatie.

Nivelul Aplicatie al TCP/IP se ocupa de problemele reprezentarii , codarii si a controlului dialogului . Stiva TCP/IP are prin intermediul nivelului Aplicatie capacitatea de a oferi suport pentru transferul de fisiere , serviciul e-mail , serviciul de management al retelei si logare de la distanta

Rolul nivelului Internet este de a selecta cea mai buna cale catre destinatie . Principalul protocol care functioneaza la acest nivel este protocolul rutabil IP . Aici are loc determinarea celei mai bune cai si switching-ul intre pachete . Printre protocoalele care functioneaza la acest nivel putem enumera : IP , Internet Control Message Protocol (ICMP) , Addess Resolution Protocol (ARP) , Reverse Address Resolution Protocol (RARP)

Nivelul Acces Retea al stivei TCP/IP in sarcina caruia cad toate detaliile de care este nevoie ca un pachet IP sa aiba o legatura fizica mediul retelei . Include detalii ale tehnologiilor LAN si WAN si toate detaliile continute in nivelurile Fizic si Data Link din stiva OSI . Serviciile ARP si RARP lucreaza incluziv la nivelul Network Access .

Desi este situat imediat sub nivelul Aplicatie nivelul Transport l-am lasat la urma deoarece el are in componenta protocolul TCP care reprezinta obiectul lucrarii de fata .

Nivelul Transport ofera servicii de transport de la statia sursa catre statia destinatie . El constituie o conexiune logica intre cele doua puncte ale retelei .Protocoalele de transport segmenteaza si reasambleaza aplicatii de nivel superior in acelasi flux de date intre punctele comunicante . Nivelul Transport lucreaza in principal cu doua protocoale : TCP si UDP TCP ( Transmition Control Protocol ) este un protocol de tipul ConectionOriented . El este protocolul de transport preferat atunci cand aplicatiile care se utilizeaza de el au nevoie de un grad ridicat de control al fluxului de date si control al erorilor .TCP realizeaza acestea prin mecanismul de Sliding Windows , prin seequence numbers si acknowledgments . Un alt detaliu care il deosebeste de UDP este acela ca TCP stabileste operatii end-to-end prin mecanismul threeway handshake . UDP ( User Datagram Protocol ) este protocolul preferat de aplicatiile ce nu necesita un control al transmisiunii deosebit . Avantajul sau fata de TCP este acela ca nu consuma resurse prin sustinearea unor procese mai putin relevante pentru acestea .

3. Protocoale ale nivelului transport complementare TCP User Datagram Protocol ( UDP ) reprezinta alaturi de TCP unul dintre cele mai importante protocoale de transport . UDP nu garanteaza corectitudinea transmisiunii asa cum o face TCP . Datagramele pot ajunge la destinatie neordonate , duplicate sau chiar lipsa fara sa se observe . Insa tocmai evitarea de a consuma resursele face ca UDP sa fie mai rapid si mai eficient petru aplicatiile care nu necesita garantarea livrarii pachetelor . Spre deosebire de TCP , UDP poate fi utilizat atat pentru transmisiuni broadcast cat si multicast . Dintre aplicatiile care folosesc UDP ca protocol de transport pot fi enumerate : Domain Name Sistem ( DNS ) si Trivial File Transfer Protocol (TFTP) Ca exemplu , protocolul UDP este folosit de protocoalele de rutare pentru a transmite up-date-uri de rutare intre ele . Aceste up-date-uri sunt folosite de rutere pentru a aduce reteaua la starea de convergenta sau pentru a mentine functionalitatea tabelelor de rutare . Este evident faptul ca in acest caz pierderea unui up-date de rutare are o mai mica importanta decat conservarea resurselor de procesare . Structura unui pachet UDP :

Portul sursa indica portul atribuit aplicatiei de catre statia sursa . Avand in vedere ca in cazul UDP nu este nevoie sa se returneze nimic de la destinatie la sursa , acest cam poate fi 0 . Portul destinatie identifica aplicatia de pe statia destinatie si este absolut necesar . Lungimea este un camp de 16 biti care specifica lungimea in biti a intregii datagrame incluzand header-ul si data . CheckSum este reprezentat de un camp de 16 biti care are rolul de a oferii un control al erorii prin compararea valorii cheksum-ului cu numarul de biti primiti de statia destinatie . Campul data reprezinta informatia in sine care trebuie transmisa . Datagram Congestion Control Protocol(DCCP) DCCP este un protocol al nivelului transport de tipul message-oriented . El se foloseste de ECN (Explicit Congestion Notification) si controlul congestiei . DCCP a fost publicat in RFC-ul 4340 fiind propus ca standard IETF ( internet enginiering task force ) in marie 2006. Acest protocol ofera o cale de a obtine accesul la mecanismele de control al congestiei fara a fi nevoie de a fi implementate la nivelul Aplicatie . 9

Spre deosebire de TCP nu are nevoie de livrarea a pachetelor in ordine la destinatie . DCCP este folosit pentru aplicatiile care au constrangeri de timp la livrarea de date .Asemenea aplicatii pot fi cele de tipul stream-media si telefonie prin internet . O conexiune de tip DCCP contine acknowledgement-uri , astfel sursa este informata de catre destinatar daca pachetele sale au ajuns la destinatie sau nu si daca aceste pachete au fost marcate cu ECN . Stream Control Transmission Protocol (SCTP ) SCTP are o functionare asemanatoare TCP si UDP . Asemeni TCP asigura transportul in ordine al mesajelor cu controlul congestiilor . Termenul multi-streaming se refera la capacitatea SCTP de a transmite cateva siruri independente de mesaje in paralel . Multi-streaming poate fi privit ca un manunchi de conexiuni TCP intr-o singura asociere SCTP care lucreaza cu mesaje in loc de biti . Beneficii aduse de SCTP : livrarea de date se face pe bucati in stream-uri independente selectarea caii si monitorizarea mecanisme de validare si acknoledment care ofera notificari in cea ce priveste datele duplicate sau lipsa si protejeaza impotriva atacurilor de tip flood sistem de detectie al erorilor imbunatatit

Real-time Transport Protocol (RTP) Este folosit pentru transmisia de pachete audio , video find folosit si in aplicatiile VoIP .Nu are un a numit port TCP sau UDP prin care sa comunice . RTP foloseste prturi alese dinamic cea ce face dificila traversarea firewall-urilor . Initial a fost gandit ca protocol multicast insa intre timp a fost aplicat si la transmisiuni unicast . Folosirea lui este intensa in sistemele de tipul streaming media cat si videoconferinte . Acest protocol poate fi privit ca fundatia tehnologiei Voice over IP . Conform RFC-ului 1889 serviciile oferite de RTP include : Payload-type identification =identificarea tipului de continut care este transportat Sequence numbering =oferirea de numere de secventa de tipul PDU

10

Time stamping =permite sincronizarea Monitorizarea livrarii

Totusi livrarea neordonata este posibila doarece flow-control si controlul congestiei nu au suport in mod direct .Protocoalele totusi livreaza datele necesare aplicatiei pentru aca ceasta sa puna pachetele primite in ordinea corecta . Resource reservation protocol (RSVP ) RSVP este un protocol al nivelului transport descris in RFC-ul 2205. Rolul sau nu este de a transmite date ale aplicatiilor ci are mai mult un rol de control , din anumite privinte putand fi asemanat cu ICPM . Poate fi folosit fie de host-uri sau rutere pentru a cere sau transmite nivele specifice de calitate a serviciului . RSVP defineste cum aplicatiile rezerva sau elbereaza resursele rezervate odata ce nu mai este nevoie de ele . In urma operatiilor sale vor rezulta resurse rezervate in fiecare nod de-a lungul cai de comunicatie . Internet group management protocol (IGMP) IGMP este un protocol de comunicatii folosit pentru a controla apartenenta la grupurile de multicast . Este folosit de hosturile IP si rutere-ele multicast adiacente pentru a stabili grupuri de multicast . Poate fi folosit pentru aplicatiile video permitand o foosire mai eficienta a resurselor. 4. Zone de aplicare a protocolului TCP TCP este folosit intens de multe din cele mai cunoscute protocoale ale aplicatiilor Internet, dintre care fac parte The Web ( World Wide Web ), E-mail ( posta electronica ) , FTP ( File Transfer Protocol protocol de transfer de fisiere ), Secure Shell ( protocol de comunicatie securizata ) si cateva aplicatii de media. Aceste aplicatii vor fi prezentate pe scurt in continuare. The Web ( World Wide Web ) este un sistem de documente hypertext, interconectate ce pot fi accesate via Internet. Folosind un navigator web ( browser ) , un utilizator poate sa vizualizeze pagini ce pot contine text, imagini, secvente multimedia. E-mail-ul (posta electronica ) este un mecanism de stocare, trimitere si primire a mesajelor prin sisteme electronice de comunicatie . Termenul de e-mail se refera la sistemul de e-mail prin internet bazat pe SMTP(Simple Mail Transfer Protocol ) si deasemenea la sistemele X.400 si intranet.

11

FTP-ul este un protocol de transfer al fisierelor de la un computer la altul prin internet sau prin orice retea de tip TCP/IP , fara sa se aiba in vedere ce sisteme de operare sunt folosite.Exista o multitudine de clienti FTP si programe de servere. Secure Shell-ul este un protocol de retea ce permite trimiterea datelor de la un computer la altul printr-un canal securizat. Codarea ofera confidentialitate si integritatea datelor. Un server SSH , foloseste de obicei portul 22 al standardului TCP. Deoarece este optimizat pentru acuratetea mesajelor trimise si nu a comunicatiei rapide, protocolul TCP duce cateodata la intarzieri prin asteptarea mesajeor nesincronizate sau pierdute ceea ce il face sa nu fie potrivit pentru aplicatii in timp real cum ar fi Voice over IP. Pentru acest fel de aplicatii sunt mai potrivite protocoale ca RTP ( Real-time Transport Protocol ) pe suportul UDP ( User Datagram Protocol ). Voice over IP este un protocol optimizat pentru transmiterea vocii prin internet sau a altor retele similare. TCP este un serviciu sigur de comunicatie ce garanteaza trimiterea unui flux de date de la un utilizator la altul fara duplicarea sau piederea acestora. Din moment ce transferul prin pachete nu este de incredere, este folosita o tehnica de validare cu retransmisie pentru a garanta acuratetea pachetelor transferate. Aceasta tehnica fundamentala necesita ca destinatarul sa raspunda cu mesaj de validare la primirea datelor. Expeditorul pastreaza o copie a fiecarui pachet trimis si asteapta semnalul primirii inainte sa trimita urmatorul pachet. El tine cont deasemene de timpul trecut de la trimiterea pachetului si retransmite pachetul dupa un anumit interval. Acest cronometru este necesar in cazul in care se pierde un pachet sau este deteriorat. 5. Folosirea TCP Aplicatii aflate pe hosturi din retea pot crea conexiuni intre ele folosind TCP, si pot schimba fluxuri de date folosind socket-uri. TCP face o diferentiere a datelor pentru a putea exista multiple conexiuni ale aplicatiilor concurente ( ex: server web si de e-mail ) ce ruleaza pe acelasi host. In cazul protocoalelor de Internet, TCP este planul intermediar intre IP(Internet Protocol) care se afla inferior si aplicatia ce se afla superior. Programele au deseori nevoie de conexiuni sigure si IP-ul nu asigura aceste necesitati. TCP-ul indeplineste rolul de transport in modelul OSI de retea.

12

Aplicatiile trimit stream-uri de octeti catre TCP pentru transmitere, iar acesta le divide in segmenete de dimensiuni mai mici decat maximul asmis. TCP trimite apoi pachetele rezultate catre IP pentru trimiterea catre modulul TCP de la celalalt capat. Protocolol se asigura ca nici un pachet nu se pierde prin atasarea fiecaruia a unui identificator, care este folosit deasemenea pentru a se asigura primirea in ordine. Modulul TCP de la celalalt capat trimite un mesaj de validare ( acknowledgment ) pentru pachetele primite cu succes. 6. Structura segmentului TCP Un segment TCP este format din doua parti - header - date Header-ul TCP este format din 11 campuri din care doar 10 sunt necesare.

Portul sursa (16 biti) - identifica portul ce trimite datele Portul destinatie (16 biti) - identifica portul ce recepteaza datele Sequence number (numarul secventei) (32 biti) - are un rol dublu - daca flag-ul SYN este prezent atunci acesta este numarul initial al secventei si primul byte de date este este numarul secventei plus 1. - daca flag-ul SYN nu este prezent atunci primul byte de date este numarul secventei Acknowledgment number(32 biti) daca este setat flag-ul ACK atunci valoarea acestui camp este numarul de secventa pe care expeditorul validarii il asteapta.

13

Offset de date (4 biti) specifica marimea header-ului TCP in cuvinte de 32 de biti. Marimea minima este 5 si cea maxima este 15 de unde rezulta o un minim de 20 biti si un maxim de 60. Acest camp isi ia numele si din faptul ca este deasemenea offsetul de la startul pachetului TCP. Rezervat (4 biti) existent pentru folosiri ulterioare si trebuie setat la 0. Flag-urile de control sunt in numar de 8 a cate un bit: CWR - Congestion Window Reduced , este flagul trimis de sursa pentru a indica ca a primit un segment TCP cu flagul ECE setat. ECE (ECN-Echo) indica faptul ca peer-ul TCP este ECN. URG indica daca campul Pointer URGent este important. ACK indica daca campul ACKnowledgment (Validare ) este important. PSH functia Push RST resetare conexiune SYN sincronizare a numerelor de secventa FIN incheierea segmentului de date Window (16 biti) marimea ferestrei destinatie ce specifica numarul de bytes ( peste numarul de secvente din campul de validare ) pe care receptorul este dispus sa il primeasca Verificare(Checksum) (16 biti) este folosit pentru verificarea existentei erorilor din header sau segmentul de date Pointer urgenta (16 biti) daca flagul URG este setat, atunci acest camp este un offset din numarul de secventa ce indica ultimul byte urgent de date. Optiuni (biti variabili) lungimea totala a campului trebuie sa fie multiplu de 32 si campul offset de date trebuie ajustat in concordanta. 0 sfarsitul listei de optiuni 1 fara operator ( NOP, Padding ) 2 lungimea maxima a segmentui 3 dimensiunea ferestrei 4 validare selectiva 5 6 7 8 timestamp Ultimul camp nu face parte din header. Continutul acestui camp ramane la latitudinea nivelului de protocol superior si face parte din header. Data aceasta este portiunea de date a pachetului TCP. Poate fi reprezentata de orice protocol de aplicatii. Cele mai des folosite sunt HTTP, Telnet, SSH, FTP.

14

7. Modul de operare al protocolului TCP Spre deosebire de UDP , TCP este un protocol de tipul corection-oriented cea ce presupune ca inainte de a se putea transmite date trebuie stabilita conexiunea. Conexiunile TCP au 3 faze : - stabilirea conexiunii - transferul de date - terminarea conexiunii

7.1 Stabilirea conexiunii Pentru ca o conexiune sa fie initializata este nevoie ca cele doua host-uri implicate sa-si sincronizeze numerele de secventa initiale ( Initial Sequence Numbers ISN ) . Sincronizarea este facuta printr-un schimb de segmente care poarta un bit de control numit SYN si ISN-urile. Sincronizarea presupune ca fiecare parte sa isi trimita propriul ISN si sa primeasca o confirmare a schimbului prin intermediul unui acknowledgment ( ACK ) . Fiecare parte trebuie sa primeasca ISN-ul de la cealalta si sa trimita un ACK . Secventa are loc in felul urmator printr-un procedeu numit three-way handshake : 1. AB SYN(A) ISN-ul este X, ACK este 0, bitul SYN este stabilit , dar bit-ul ACK nu este pus. 2. BA ACK(A) SN-ul este X + 1, (B) ISN-ul este Y,si SYN si bitul ACK este pus. 3. AB ACK(B) SN-ul este Y + 1, (A) SN-ul este X + 1, bit-ul ACK este pus , dar bit-ul SYN nu este scris .

15

Procedeul three-way handshake este necesar deoarece numerele de secventa (SN) nu au legatura cu un ceas global din cadrul retelei iar protocoalele TCP pot avea diferite mecanisme de alegere a ISN-ului . Receptorul primului SYN nu poate sti daca segmentul a fost unul vechi si intarziat , decat in cazul in care isi aminteste ultimul SN folosit pentru conexiune. 7.2 Transmisiune out of band ( in afara benzii ) Fluxul de date poate fi intrerupt , in felula cesta nu mai trebuie sa asteptam ca el sa se termine . Datele respective sunt specificate ca fiind urgente cea ce va spue programului receptor ca trebuie procesate imendiat . TCP informeaza apoi aplicatia si se intoarce la fluxul initial de date . Un exemplu in acest sens este folosit in cazul unor logari remote . Userul poate trimite secvente de la tastatura prin care poate intrerupe programul de pe statia pe care este initializata sesiunea remote . Aceste semnale sunt folosite cel mai adesea cand programul de pe o alta masina nu mai functioneaza corect . 7.3 Probleme de securitate 7.3.1 Inundarea cu pachete de tip SYN (Denial of service) Atacurile de tipul Denial of service (DOS) sunt realizate pentru a impiedica furnizarea de servicii unui host autorizat care incearca sa se coecnteze . Atacurile DoS au in comun metoda pe care hackerii o folosesc pentru a impiedica sistemul sa mai raspunda. Un tip de atacuri DoS este cunoscut ca inundare cu SYN-uri. Inundarea cu SYN-uri exploateaza procedeul three-way handshake si cauzeaza statiilor tinta transmisiuni de ACK la drese sursa care nu vor completa handshake-ul . Three-way handshake incepe cand statia care initiaza trimite un pachet de tipul SYN. Acest pachet include si adresele IP sursa si destinatie . In felul acesta 16

statia care primeste pachetul SYN va sti la ce adresa IP sa trimita raspunsul de confirmare . In atacurile de tip DoS , hacker-ul initializeaza sincronizarea iar in locul sursei pune o sursa fantoma . In felul acesta statia care primeste pachet-ul SYN trimite ACK unei statii inexistente dupa care procesul este plsat in starea de asteptare in timp ce se asteapta un raspuns de la initiatorul sincronizarii . Starea de asteptare necesita anumite resurse de sistem care sunt inutilizabile pana in momentul in care timpul de conexiune expira . Hackerii vor inunda statiile atacate cu cereri de tip SYN false acaparand astfel resursele sistemului si punandu-l in incapacitatea de a raspunde altor statii legitime . Pentru a se feri de astfel de atacuri administratorii pot sa micsorze timpul in care expira o conexiune si pot mari coada de asteptare . In afara acestor masuri mai exista si software-uri specializate care pot impiedica astfel de atacuri

7.3.2 Capturarea unei conexiuni Un atacator care este capabil sa intercepteze o sesiune TCP si sa redirectioneze pachetele poate captura acea conexiune TCP . Pentru a face asta atacatorul invata SN-urile din cadrul comunicatiei care se deruleaza si introduce un pachet fals care arata ca urmatorul pachet din fluxul de pachete .Pentru a

17

reusi aceasta tehnica trebuie combinata cu atacuri de ARP de de rutare . Dupa acceptarea pachet-ului fals la una dintre statii aceasta va trimite pachetele la cea de a treia statie . Trimiterea pachetelor la o alta adresa IP era usor de realizat in trecut , inainte de crearea standardelor amintite in RFC 1948 . ISN-ul era usor de ghicit cea ce permitea atacatorului sa pacaleasca foarte usor sistemul prin trimiterea unei secvente de pachete pe care receptorul o considera ca venind de la o alta adresa IP . In prezent capturarea conexiunii nu se poate realiza decat prin combinarea atacurilor de tip SYN , ARP si de rutare . 7.4 Transferul de date Sunt cateva trasaturi care deosebeste in mod fudamental TCP de UDP : transferul de date se face ordonat deoarece host-ul destinatie rearanjeaza pachetele in functie de SN retransmisiunea pachetelor pierdute stergerea pachetelor duplicate transferul datelor fara erori Flow control limitarea ratei de transfer astfel incat receptorul sa-I poata face fata Controlul congestiilor 7.4.1 Transmiterea in ordine , retransmisiunea pachetelor si stergerea pachetelor duplicate Protocolul de IP nivel 3 (OSI ) , nu are nici un fel de motoda de verificare prin care sa concluzioneze ca bitii au ajuns sau nu la destinatie . De acea Ip se bazeaza pe TCP protocolul de nivel superior pentru a afla daca procesele au ajuns la destinatie sau daca trebuiesc retransmise . TCP imparte datele in segmente .Dupa procesul de sincronizare si negocierea ferestreicare dicteaza numarul de biti care pot fi transmisi odata , segmentele sunt transportate de la sursa la destinatie . Caile pe care le urmeaza pachetele pot fi diferite , aceasta se intampla datorita pachet balance care arerolul de a optimiza timpul necesar mai multor pachete din acelasi mesaj sa ajunga la destinatie . Astfel segmentele transmise trebuie reasamblate la destinatie . nu exista nici o garantie ca pachetele vor ajunge la destinatie in ordinea in care au fost transmise , de acea TCP aplica sequence numbers( SN ) segmentelor astfel incat receptorul sa bitii in forma lor originala . Aceste SN si ca numere de referinta astfel incat destinatia sa cunoasca daca a primit toti bitii sau nu . Ele mai identifica si bucatile lipsa la destinatie astfel inact acesta sa instiinteze sursa despre datele care lipsesc pentru a le retransmite .

18

Fiecare segment TCP este numarat inainte de a fi transmis . Aceasta particularitate poate fi observata in structura segmentului TCP prin prezenta campului sequence number .

Astfel la destinatie TCP foloseste SN sa reasambleze mesajul. Daca un SN lipseste segmentul este retransmis . Un alt mecanism foarte important este cel datorat acknoledgement-urilor ( ACK). Acesta este un pas comun in sincronizarea preoceselor . Intr-un segment

19

TCP , campul de SN este urmat de campul de ACK care se mai numeste si campul de cod . ACK pozitive si retransmisia (PAR) sunt tehnici comune de a da consistenta dialogului. Cu PAR sursa trimite un pachet, porneste un cronometru si asteapat un ACK inainte de a trimite urmatorul pachet. Daca timpul expira inainte ca sursa sa primeasca un ACK , sursa retransmite pachetele si incepe din nou cronometrul . TCP foloseste ACK in expectativa deoarece numarul ACK se refera la urmatorul octet care este asteptat .

7.4.2 Transferul lipsit de erori Pentru a asigura corectitudinea pachetului primit un checksum este inclus Checksum-ul TCP este o verificare detul de slaba avand in vedere standardele moderne .Astfel nivelul Data Link cu o probabilitatea de biti eronati mai mare ar putea necesita mecanisme de corectare a erorilor suplimentare . Problema checksum-ului provine din faptul ca este pe doar 16 biti iar cerintele actuale ar necesita un checksum pe 32 de biti. Cu toate acestea checksum-ul nu este redundant , el fiind complementar cu procedeul de cyclic redundancy check ( CRC ) .

20

7.4.3 Controlul congestiilor Unul dintre principalele aspecte ale TCP este controlul congestiilor . TCP foloseste un numar de mecanisme in acest sens . Aceste mecanisme controleaza rata datelor care intra in retea , pastrand fluxul de date sub un anumit nivel . ACK sau lipsa lor este folosita de destinatie pentru a instiinta sursa dacaeste sau nu in stare de a primi pachetele . Implementarile moderne de TCP contin 4 algoritmi care se imbina in acest sens si care sunt przentate in RFC-ul 2581 : - slow-start - congestion avoidance - fast retransmit - fast recovery Pe langa acestea sursa se foloseste si de un cronometru .Acesta are la baza timpul maxim estimat pentru acea conexiune round-trip time (RTT) 7.5 Controlul fluxului, ferestre TCP TCP foloseste controlul fluxului de date ( flow control ) de la un cap la altul ( end-to-end ) pentru a evita ca sursa sa trimita date pe care destinatarul nu le poate prelua si prelucra intr-un mod consistent . Acest mecanism este esential mai ales intr-un mediu in care comunica statii de diferite viteze . Pentru a realiza acest deziderat TCP se foloseste de ferestre (sliding windows ) . In fiecare segment TCP , receptorul specifica in campul pentru fereastra ( window) cantitatea date pe care este dispus sa o accepte . Sursa poate trimite odata maxim acea cantitate de date dupa care trebuie sa astepte un nou ACK de la sursa .

21

Cand destinatia ii face cunoscuta o marime a ferestrei egala cu 0 , sursa se opreste din transmis date si porneste un cronometru ( persist timer ). Acest cronometru este folosit pentru a proteja TCP de situatia in care up-date-ul marimei ferestrei de la destinatar este pierdut iar destinatarul nu mai trimite nici un pachet , astfel sursa ar astepta un up-date care nu ar mai veni . Punand in functiune acest cronometru , la expirarea timpului sursa trimite un pachet care obliga destinatarul sa raspunda cu un ACK care contine noua marime a ferestrei. 7.6 Dimensionarea ferestrei TCP Pentru folosirea mai eficienta a largimii mare de banda a retelelor , se poate folosi o dimensiune a ferestrei mai mare . Campul TCP window size controleaza fluxul de date si este limitat 2 si 65535 biti . Din moment ce dimensiunea campului nu poate fi marita , se foloseste un factor scalar . Optiunea Window scale , asa cum este definita inRFC-ul 1323 , este o optiune folosita pentru a mari dimensiunea ferestrei pana la 1 Gb . Optiunea window scale este folosita numai in timpul procesului de 3-wayhandshake. Multe rutere si firewal-uri rescriu factorul window scaling in timpul transmisiei . Aceasta cauzeaza ca sursa si destinatia sa-si asume marimi ale ferestrei diferite . Rezultatul este un trafic instabil .

22

7.7 Terminarea conexiunii Operatia de terminare a conexiunii (close) are semnificatia nu mai am date de transmis. Privita mai simplu, operatiunea de terminare a conexiunii are situatia in care userului care inchide conexiunea poate continua sa primeasca date pana cand este anuntat ca celalalt capat si-a a incheiat deasemenea conexiunea. Astfel un program ar putea initia mai multe operatiuni de trimitere urmate de una de inchidere (close) si apoi sa continue sa primeasca pana este anuntat ca acea conexiune s-a incheiat la celalalt capat. TCP va transmite toate bufferele trimise pana cand conexiunea s-a incheiat astfel ca un user care nu asteapta date, trebuie doar sa asteapte validarea ca conexiunea s-a incheiat cu succes pentru a sti ca toate datele au fost primite la destinatie. Exista trei situatii esentiale: 1) Userul incepe anuntand TCP sa inchida conexiunea. 2) TCP destinatie incepe prin trimiterea unui semnal de control FIN 3) Ambii useri inchid conexiunea simultan Cazul 1 Userul local initializeaza incheierea conexiunii In acest caz, un segment FIN poate fi construit si introdus in semnalul de iesire. TCP nu va accepta alte date de la acest user si se intra in starea FIN-WAIT-1. In aceasta stare sunt acceptate date primite. Toate segmentele ce preced FIN si inclusiv acesta vor fi retransmite pana la validarea acestora. Daca TCP de la destinatie a validat FIN si a trimis deasemenea un FIN, primul TCP poate sa valideze acest FIN. Un TCP ce primeste FIN va valida insa nu va trimite FIN-ul sau pana cand utilizatorul inchide conexiunea. Cazul 2 TCP primeste un FIN din retea Daca un segment FIN nesolicitat este primit din retea, TCP poate sa il valideze si sa spuna userului ca conexiunea se inchide. Userul va raspunde cu terminarea conexiunii, dupa care TCP poate sa trimita un FIN catre celalalt TCP dupa trimiterea datelor ramase netransmise. Apoi, TCP asteapta pana cand FIN-ul este validat si inchide conexiunea. Daca nu este validat in timp util , conexiunea este inchisa pe motiv de timeout (neraspundere). Cazul 3 Ambii useri inchid simultan conexiunea La o inchidere simultana a conexiunii se shimba segmente FIN intre utilizatori. Dupa ce toate datele ce preced FIN-urile au fost procesate si validate, fiecare TCP poate valida FIN-ul si inchide conexiunea. - Request for Comments - RFC-793 Section 3.5 Closing a Connection -

23

Faza de terminare a conexiunii foloseste de obicei o legatura in patru directii ( four-way handshake ), fiecare parte a conexiunii putand fi incheiata independent. Cand un capat doreste sa incheie jumatatea sa de conexiune transmite un pachet FIN, pe care destinatarul aflat la celalalt capat il valideaza cu un ACK. Astfel, este necesara o pereche de pachete FIN si ACK O conexiune poate fi deschisa pe jumatate ( half-open ) , caz in care un capat este inchis iar celalalt deschis. Partea inchisa nu mai poate sa trimita date in retea insa cea deschisa inca mai poate. Este deasemenea posibila inchiderea conexiunii printr-o legatura in trei directii ( three way handshake ) cand host-ul A trimite un pachet FIN iar host-ul B raspunde cu un FIN si ACK ( combinand cei doi pasi ) si host-ul A raspunde cu un ACK. Aceasta este cea mai folosita metoda. Este posibil ca ambele host-uri sa trimita FIN-uri simultan si apoi ambii valideaza transmisia printr-un ACK. Aceasta ar putea fi considerata o legarura in doua directii din moment ce secventa FIN/ACK este realizata in paralel pentru ambele directii. Unele stive ale unor host-uri TCP implementeaza o secventa de inchidere semi-duplex precum Linux sau HP-UX.Daca o astfel de statie inchide conexiunea insa nu a citit toate datele primite de stiva , ea va trimite un pachet RST in locul unui pachet FIN. 8. Port-uri TCP Fiecare host dintr-o retea are cel putin o adresa IP. In plus, fiecare host bazat pe Linux ruleaza mai multe procese. Fiecare proces are posibiliotatea de a fi client de retea, server de retea sau amandoua. Evident, daca destinatia unui pachet ar fi desemnata numai prin adresa IP, sistemul de operare nu ar putea sti carui proces trebuie sa trimita continutul pachetului. Pentru a rezolva aceasta problema, TCP/IP adauga o componenta care identifica portul TCP( sau UDP ). Fiecare conexiune de la un host la altul are un port sursa si un port destinatie. Fiecare port este etichetat cu un intreg intre 0 si 65535. Pentru a identifica in mod unic fiecare conexiune posibila, intre doua hosturi, sistemul de operare urmareste patru informatii: adrsa IP a sursei, adresa IP a destinatiei, numarul de port al sursei si numarul de port al destinatiei. Combinatia acestor valori este in mod cert unica, intre toate conexiunile host-lahost.( De fapt sistemul de operare urmareste o multme de informatii legate de conexiune, dar numai aceste patru elemente sunt necesare identificarii unice a conexiunii) Hostul care initiaza o conexiune specifica adresa IP a destinatiei si un numar de port. Evident adresa IP a sursei este deja cunoscuta. Dar numarul de port al sursei, valoare care face conexiunea unica, este atribuit de catre sistemul de operare al sursei. Acesta cauta intr-o lista de conexiuni deja deschise si atribuie urmatorul numar de port disponibil. Prin conventie, acest numar este

24

mereu mai mare de 1024( numerele de port de la 0 la 1023 sunt rezervate pentru utilizarea de catre sistem ) Din punct de vedere tehnic, hostul sursa isi poate selecta si numarul de port sursa. Totusi, pentru a face acest lucru, nu este posibil ca un alt proces sa fi preluat deja portul. In general, cele mai multe aplicatii lasa sistemul de operare sa aleaga pantru ele numarul de port. Intelegand acestea, se poate intelege cum o sursa Host A poate deschide mai multe conexiuni la un singur serviciu de pe destinatia Host B. Adresa IP a hostului B si numarul de port vor fi mereu constante, dar numarul de port al hostului A va fi diferit, pentru conexiune. Aceasta combinatie ( cvadruplu ) de IPuri si numere de port sursa si destinatie este unica si ambele sisteme pot avea mai multe fluxuri de date ( conexiuni) independente intre ele. - Administrarea Red Hat Linux (cunostinte esentiale) de Michale Turner, Steve Shah, Editura B.I.C All , 2004 , cap. Intelegerea TCP/IP si a securitatii in retea Numerele de port sunt impartite in trei categorii de baza: servicii cunoscute (well-known), inregistrate (registered) si dinamice/private (dynamic/private). Porturile cunoscute sunt asignate de catre Internet Assigned Numbers Authority si sunt de regula folosite de procese de sistem. Aceste porturi sunt folosite de aplicatiile raspandite si bine cunoscute. Printre acestea se numara: FTP (21), SSH (22), TELNET (23), SMTP (25) si HTTP(80). Porturile inregistrate sunt de obicei folosite de aplicatii pentru a se putea conecta la anumite servere si sunt supuse schimbarilor. Porturile dinamice/private pot fi deasemenea folosite pentru aplicatii insa sunt rar intalnite, ele neavand relevanta in afara anumitor conexiuni TCP. O lista a porturilor cunoscute reglementate de Internet Assigned Numbers Authority (IANA) poate fi vizualizata la adresa: http://www.iana.org/assignments/port-numbers 9. Aplicatii ale protocolului TCP in cazul retelelor wireless Protocolul TCP a fost optimizat pentru internetul wired (cu fir).Orice pierdere de pachete ( are loc atunci cand unul sau mai multe pachete de date ce se transmit intr-o retea de internet nu ajung la destinatie) este rezultatul unei congestii.Marimea ferestrei congestiei este micsorata foarte mult din motive de precautie. Totusi, linkurile wireless sunt cunoscute ca intampina pierderi temporare intr-un mod constant in timpul schitarii, transmiterii etc. ce nu pot fii considerate congestii. Back-offul eronat al congestiei dimensiunii ferestrei in timpul pierderii pachetelor de date wireless este urmat de o faza de evitare a congestiei cu o

25

scadere mica a dimensiunii ferestrei ceea ce face ca link-ul radio sa fie folosit mai putin.Pe baza acestui subiect s-au facut nenumarate cercetari, cu scopul de a combate efectele negative. Solutiile sugerate pot fii: solutii end-to-end ce necesita modificari la client si/sau la server; solutii linklayer ca RLP (Radio Link Protocol) in CDMA 2000- RLP(inventat in 1990 de catre Phil Karn) este un protocol cu o cerere automata de repetare (ARQ) folosit la o interfata wireless.Daca majoritatea interfetelor wireless sunt setate sa obtina o pierdere de pachete de date de 1%, RLP detecteaza aceste pachete si executa retransmiterea datelor, aducand astfel rata de pierdere pana la 0,1%. RLP de asemenea implementeaza uneori transmiterea datelor in ordine.

Noile forme de RLP asigura si organizarea si compresia , in timp ce formele vechi ale acestui protocol se bazeaza pe protocoalele PPP(Point-to-Point Protocol) sa le asigure aceste functii. Un transport RLP nu stie niciodata cad de mare va fi packetul trimis de interfata.In schimb, programatorul interfetei determina marimea packetului si ii cere protocolului sa formeze un packet necesar pentru transmitere. Majoritatea altor fragmentari si organizari de protocoale wireless , cum sunt 802.11b si TCP/IP folosesc marimi fixe ale fragmentelor.Aceste protocoale nu sunt la fel de flexibile ca protocolul RLP si uneori pot bloca transmisia in timpul estomparii intrun mediu wireless. - solutii bazate pe proxy ce necesita modificari la reteaua de internet fara modificarea nodurilor finale. 10. Implementari hardware ale TCP Ca un raspuns la exigentele de putere in crestere puse pe server de conexiunile de ordinul giga bitilor au venit implementarile hardware cunoscute ca TCP Offload Engines(TOE). Prima companie care a dezvoltat un astfel de dispozitiv a fost Alacritech.Este folosit pentru interfete de network de mare viteza ca gigabit Ethernet si 10 gigabit Ethernet. Original TCP a fost creat pentru retele nesigure de mica viteza (ca modemurile dial-up timpurii); insa o data cu dezvoltarea internetului (a vitezei de transmitere) (ca Optical Carrier, gigabit Ethernet si 10 gigabit Ethernet) si o data cu mecanismele mai rapide si si cu accesul mai sigur (ca Digital Subscriber Line si modemurile cu cablu) protocolul se foloseste in datacentre si in medii desktop PC la viteze de peste 1 gigabit pe secunda.Implementariile softwarelor TCP pe sisteme gazda necesita mai multa putere. Comunicatiile gigabit TCP ce folosesc doar software de procesare sunt suficiente pentru a incarca complet un procesor Pentium 4 de 2.4 GHz

26

neramanand astfel nici o resursa ca aplicatiile sa functioneze.In 2006 foarte putini consumatori de interfete de network suportau TOE. Aceasta tehnologie tinde sa scoata procesul de I/O al serverului CPU transferand sarcinile procesate adaptorului de internet sau dispozitivului de stocare. Aceasta lasa CPU-ul liber sa ruleze aplicatiile astfel incat userii primesc datele mai repede . Ideea de a descarca protocolul de TCP/IP de la sisteme CPU la harware specializate nu este noua pentru adaptoarele sau mediile principale ale serverelor retelelor de internet dar este noua pentru dipozitivele de stocare. Nevoia implementarii TOE a devenit foarte mare o data cu aparitia standardului iSCSI-standard pentru transportul blocurilor orientate de date prin intermediul retelelor gigabit Ethernet. Tipuri de implementari TOE NAC, IPP, NP, PA, NA, ASIC reprezinta doar cateva din implementarilor utilizate pentru descrierea numeroaselor arhitecturi si caracteristici ale unui TOE. NAC(network accelerator card), PA(protocol accelerator) si NP(network processor) sunt solutii bazate pe CPU. Introducerea TOE-ului NAC- un NAC special, creat sa ia povara CPU-ului de a procesaTCP/IP-ul, astfel ca mai multe cicluri CPU sunt disponibile pentru aplicatii.Exista diferente substantiale de arhitectura, performanta si de capabilitatea de descarcare a CPU-ului intre cardurile de accelerare curente. PA1000 SuperHBA este un card ethernet multi-port gigabit pentru OEMuri capabil sa sustina pana la 4 gigabiti pe secunda in timp ce descarca protocoalele TCO/IP si Iscsi de la serverul central CPU. NP este un dispozitiv hardware special programabil care este conectat la serverul TCP printr-un link de mare viteza.NP-urile combina costurile mici si flexibilitatea procesoarelor generale cu viteza solutiilor de silicon.In plus NP descarca atat memoriile intensive cat si CPU-urile intensive procesate de la serverul TCP. Descarcarea protocolului TCP se poate face pe 2 entitati de retea : o gazda TCP si un procesor network retras.Acest lucru se obtine folosind o conectie TCP divizata, o tehnica bine cunoscuta pentru marirea performantelor TCP. In divizarea TCP doua conectii independente TCP acopera o sesiune: una de la client la NP si a doua de la NP la server. NP-ul amortizeaza datele pana cand soseste o recunoastere(ACK) de la client . In absenta recunoasterii NP-ul executa managementul timpului ca sa retransmita segmentele TCP spre client.Folosire recunoasterilor locale apara de asemenea serverul TCP si de orice congestie de retea si de intarzaieri excesive intre NP si client. NP-ul executa de asemenea si traducerea adresei retelei de net (NAT) dela NP la client facand checksum.

27

In contrast cu aplicatiile traditionale NP, aplicatiile de descarcare a TCPului necesita dependenta intre packete si mecanisme bazate pe conexiune. Aceste optiuni sunt totusi limitate de un consum foarte mare de electricitate, o lipsa de evolutie sau pur si simplu ele nu descarca in totalitate CPU-ul de multimea de TCP/IP. Abordarea ASIC este mai robusta si mai evoluata decat alternativa bazata pe CPU.TOE-ul societatii SBE, toePCI-2Gx, isi datoreaza succesul principiului masiniilor paralele furnizand un tratament de linie complet, ceea ce permite un numar mai mare de sesiuni simultane, descarcarea protocolului TCP/IP full-duplex, o segmentare si o reasamblare a pachetelor, retransmisia acestora, schimbare marimii ferestrei, toate acestea fara utilizarea nici macar al unui CPU. Alacritech STA2000 Internet Protocol Processor (IPP) este a patra generatie de TOE ASIC bazata pe arhitectura tehnologiei SLIC a firmei Alacritech(R) Inc (inovatoarea solutiilor de accelerare care ofera cea mai mare performanta si eficacitate pentru sistemele de retea de internet.Este cea mai mica , cea mai puternica versiune de multi-gigabit TOE ASIC de pe piata si este disponibila acum OEM-urilor pentru serverele viitoarelor generatii, NetworkAttached Storage (NAS) sau dispozitivelor iSCSI. Exista patru puncte de masura permanente cu ajutorul carora se stabileste eficienta unui protocol TOE intr-o retea data:debitul gigabit Ethernet egal cu banda disponibila,descarcarea maxima a utilizarii CPU-ului, un timp de asteptare minim intre tranzactii si un numar mare de sesiuni terminate simultan Pentru ca un TOE sa fie complet eficace acesta trebuie sa indeplineasca cel putin 2 conditii: -sa descarce intr-o maniera semnificativa CPU-ul (mai mult de 50%); -sa maximizeze debitul gigabit. TOE are multi oponenti, mai ales in comunitatea F/LOSS.Lucrurile de care ei nu sunt multumiti sunt: -Securitatea-pentru ca TOE este implementat in hardware, patch-urile trebuie aplicate pentru TOE firmware, in loc de doar software, pentru a adresa orice vulnerabilitate de securitate gasita intr-o implementare particulara a protocolului TOE. -Limitarea hardware-pentru caconectiile sunt amortizate si procesate pe un chip TOE ,diminuarea resurselor poate aparea mult mai usor comparat cu generosul CPU si memorie disponibila sistemului de operare. -Complexitatea-TOE contrazice multe presupuneri ca kernel-urile inseamna sa ai acces oricand la toate resursele.TOE necesita si schimbari foarte mari la o stiva de retea pentru ca acesta sa fie bine suportat si chiar cand se face lucrul asta QoS si filtrarea packetelor nu functioneaza. -Dreptul de proprietate-TOE este implementata diferit de fiecare vanzator de hardware.Aceasta inseamna ca mai multe coduri trebuie rescrise pentru a face fata numeroaselor versiuni de implementare ale protocolului TOE cu costul securitatii.

28

11. Interceptari de trafic TCP (sniffere) Un pachet de sniffere (cunoscut ca un analizator de retea sau de protocol sau pentru retelele de net specifice ca ethernet sniffer sau wireless sniffers) este un soft de computer sau hard care poate intercepta si loga traficul trecand peste o retea digitala de internet sau peste o parte de retea de internet. Cum stivele de date se transmit prin retea snifferul capteaza fiecare pachet si eventual decodeaza si analizeaza continutul in concordanta cu cel mai apropiat RCF sau alte specificatii. Pe LAN-uri wired, in functie de structura retelei ( hub sau switch) se poate capta intreg traficul sau doar parti din acesta de la o singura masina; totusi exista cateva metode de evitare a limitarii traficului de schimbari pentru a castiga trafic de la alte sisteme pe retea( ARP spoofing). In scopul monitorizarii retelei poate fi utila si monitorizarea pachetelor de date intr-un LAN folosind un swich de retea cunoscut si ca port de monitorizare, al carui scop este de a reflecta toate pachetele ce trec prin toate porturile swichului.Cand calculatoarele sunt conectate la un port swich si nu la un hub, analizorul nu poate sa citeasca datele datorita naturii intrinsece ale retelelor ce folosesc switchul.In acest caz trebuiecreat un port ascuns pentru ca sniffer-ul sa poata capta datele. Pe LAN_urile wireless se poate capta traficul pe un canal special. In cazul transmisiuniilor live wired si a LAN-urilor wireless, pentru a capta traficul si nu de a-l trimite unei singure destinatii (masinii care ruleaza softul snifferului), traficul multicast trimis unui grup multicast, si traficul broadcast, adaptorul de retea fiind folosit sa capteze traficul trebuie pus intr-un mod promiscuu;unele sniffere suporta acest lucru iar altele nu. In cazul LAN_urilor wireless, chiar daca adaptorul este intr-un mod promiscuu, pachetele care nu sunt pentru setul service pentru care adaptorul este configurat for fi de cele mai multe ori ignorate; pentru ca aceste pachete sa fie vazute adaptorul trebuie sa fie pus in monitor mode. Un pachet de sniffere care intercepteaza traficul TCP pe un link network poate fi util in cazul retelelor de trafic, multimea de retele si aplicatii ce folosesc protocolul TCP aratandu-i userului de pachete trec printr-un link. Unele stive de retea de internet suporta optiunea mufelor SO_DEBUG. Aceasta optiune descarca toate pachetele, starile si rezultatele TCP asupra mufei care vor fi utile in cazul interceptarii de trafic. Net stat este o alta utilitate ce poate fi folosita pentru interceptarea de trafic TCP. Este o unealta care expune conexiunile network(cele de intrare si cele de iesire) si numar de statistici de interfete network. Este disponibila pe Unix, Unixlike si Windows NT.

29

12. Alternative la protocolul TCP Pentru multe aplicatii protocolul TCP nu este potrivit. O mare problema cel putin pentru implementarile normale este ca aplicatia nu poate ajunge la pachetele venite dupa un pachet pierdut pana cand copia retransmisa a pachetului pierdut este primita. Acest lucru creeaza probleme aplicatiilor in timp real cum ar fi radioul pe internet, jocurile in timp real cu mai multi jucatori si vice over IP(VoIP) unde este uneori mai util sa primesti datele intr-o maniera timpurie decat sa le primesti in ordine. Complexitatea protocolului TCP poate fi o problema si pentru sistemele incastrate si pentru serverele care trateaza cerinte simple de la un numar foarte mare de clienti(exemplu serverele DNS-domain name system). In final unele trucuri precum transmiterea datelor intre doua gazde, ambele in urma NAT(Network Adress Transmision) sunt mult mai simple fara un protocol relativ complex ca protocolul TCP. In mod obisnuit acolo unde protocolul TCP nu se potriveste este folosit protocolul UDP(User Datagram Protocol). Folosind acest protocol programele sau calculatoarele aflate in reteaua de internet pot trimite mesaje scurte, uneori numite datagrame, unul altuia. Acesta a fost creat in 1980 de catre David P. Reed. UDP-ul a fost creat pentru aplicatiile unde nu este nevoie sa pui secventele datagramelor impreuna.Se potriveste cu sistemul mult mai bine ca TCP-ul.Exista un header UDP. Softul de retea pune header-ul UDP in fata datelor.Apoi UDP-ul trimite datele protocolului de intenet, care adauga headerul IP, punand numarul protocolului UDP in fisierul protocolului in loc sa-l puna in numarul protocolului TCP. Protocolul UDP nu garanteaza fiabilitate cum face protocolul TCP. Datagramele pot sosi neordonate, duplicate sau sa dispara fara preaviz.UDP-ul nu tine evidenta datelor trimise pentru ca in cazul in care acestea nu ajung la destinatie sa le poata retransmite. Tot ceea ce poate oferi UDP-ul este numarul porturilor pentru ca mai multe programe sa poata folosi UDP-ul in acelasi timp.Numerele porturilor UDP se folosesc la fel ca si numarul porturilor TCP.Exista numere de porturi pentru servere foarte cunoscute care folosesc UDP.Headerul UDP este mai scurt decat header-ul TCP.Nu contine decat sursa si destinatia numerelor porturilor si un checksum. UDP este folosit de protocoalele care se ocupa de cautarea numelor(ca IEN 116, RFC 882, si RFC 883) plus inca cateva protocoale asemanatoare. Evitand supraincarcarea survenita in urma verificarii daca fiecare pachet a ajuns, face ca UDP-ul sa fie mai rapid si eficient cel putin in cazul aplicatiilor ce nu necesita livrarea asigurata. Aplicatiile sensibile la timp deseori folosesc

30

protocolul UDP pentru ca este de preferat ca packetele sa nu ajunga decat sa ajunga cu intarziere. MTP( Multipurpose Transaction Protocol) este o alternativa la protocolul TCP care foloseste lungimea de banda mai eficient. MTP/IP-ul a fost creat ca scratch-urile sa functioneze in medii congestionate unde pierderea de packete si alte probleme de retea sunt comune. MTP identifica repede prin UDP daca s-au pierdut date si apoi le recupereaza fara nici o schimbare.MTC foloseste ca baza UDP-UL dar are mecanisme care sa asigure si integritatea datelor. MTP/IP este un protocol de mare viteza care este compatibil cu standardele de retea existente, nu necesita nici o schimbare a retelei sau a sistemului de operare si este vizibil user-ului final.Acesta ofera programatorilor de aplicatii network si managerilor IT multe beneficii si anume:reduce timpul de asteptare in cazul transferului mare de date, creste volumul tranzactiilor, costuri mai mici de operare. SCTP(Stream Control Transmission Protocol) este un alt protocol IP ce opereaza similar cu TCP sau UDP. Acesta asigura transportul fiabil al mesajelor fara controlul congestiei. Este mai nou si mai complex ca TCP-ul, creat special pentru a fi folosit in situatii unde siguranta si consideratiile real time sunt importante. Cum este un protocol nou, nici o aplicatie criminala nu a fost dezvoltata, dar a fost dezvoltata tinandu-se cont de anumite aplicatii de telefonie, de exemplu H.323, SIP si alte aplicatii care au nevoie de servicii mai sofisticate decat le poate oferi protocolul TCP. SCTP este un protocol sigur, ceea ce inseamna ca detecteaza datele pierdute, duplicate si pe cele ce nu sunt in ordine si care contine pierderea si controlul congestiei( cum face si TCP). Este un protocol foarte bine creat care combina trasaturile protocoalelor UDP si TCP intr-un protocol care ( cel putin in teorie) este mult mai bun decat celelalte doua. VTP(Venturi Transport Protocol) a fost creat sa inlocuiasca TCP-ul pentru a depasi problemele referitaore la transportul de date wirreless. Este detinut de Venturi Wireless. O alta alternativa de protocol este ICMP(Internet control messege protocol). ICMP este folosit pentru mesajele cu erori si alte mesaje destinate TCP/IP software. De exemplu daca incerci sa te conectezi la o gazda, sistemul tau poate primi inapoi un mesaj care spune Host unreachable. ICMP poate fi folosit de asemenea pentru a gasi unele informatii despre retea. ICMP este similar cu UDP, deoarece se ocupa cu mesaje care intra intr-o datagrama. Oricum este mai simplu decat UDP(nici nu are numar de port in interfata).

31

Din moment ce toate mesajele ICMP sunt interpretate de software-ul de retea, nu are nevoie de numar de port sa spuna unde trebuie sa mearga mesajul ICMP. Algoritmul de evitare al congestiei TCP merge foarte bine pentru mediile ad-hoc unde nu se stie cine va trimite datele dar daca mediul este previzibil, se poate folosi un protocol bazat pe sincronizare si anume ATM (Asynchronous Transfer Mode). Se stabileste o conexie logica intre doua puncte finale inainte sa inceapa schimbul propriu-zis de date. ATM-ul este o retea de schimb de celule, de inversare de pachete si un layer protocol de link de date care codifica traficul de date in celule mici de marime fixata (53 de byti din care 48 byti de date si 7 byti de informatie a headerului). ATM defineste doua formate diferite de celule: NNI (Network-Network Interface) si UNI (User-Network Interface). Majoritatea linkurilor ATM foloseste formatul de celule UNI . ATM a avut mare succes in cazul scenariilor WAN(Wide Area Network) si multi furnizori de telecomunicatii au implementat ATM-ul pentru retelele lor cu suprafata mare. De asemenea si implementarile ADSL (Asymmetric Digital Subscriber Line) folosesc ATM. Totusi ATM nu a reusit sa obtina o utilizare mare ca o tehnologie LAN, iar complexitatea sa a intarzaiat desfasurarea sa completa ca unica tehnologie de integrare a retelei,in maniera in care inventatorii sai au gandit-o initial. Multe persoane, mai ales in comunitatea de design al protocolului de internet, considera ca aceasta viziune este gresita.Astfel ca nevoia de celule pentru reducerea jitter-ului s-a transformat in cresterea vitezei de transport,iar imbunatatirile in Voice over IP(VoIP) au facut ca integrarea sunetului si a datelor sa fie posibila pe layerul IP.Majoritatea ariilor Telcos palnuiesc sa integreze activitatiile sonore ale retelei in IP-ul retelelor, decat sa integreze IP-ul retelelor in infrastructura sunetului. ATM se va desfasura inca ceva timp in interconectii de mare viteza unde expeditorii s-au inregistrat deja in ATM-urile existente; ATM-ul este folosit aici ca o modalitate de unificare a traficului PDH/SDH si a traficului pachetelor comutate sub o singura infrastructura. Totusi ATM-ul va ramane in permanenta provocare datorita schimbarilor cerintelor de viteza si de trafic ale retelelor convertibile.In particular, complexitatea SAR (Segmentation and Reassembly) o performanta gat de sticla, datorita faptului ca cel mai rapid SAR cunoscut functioneaza la 10Gbit/s si are capacitati limitate de modificare a traficului . In prezent pare posibil ca implementarile gigabit Ethernet( 10gigabit Ethernet, Metro Ethernet) sa inlocuiasca ATM-ul ca tehnologie a alegeriilor in noi implementari WAN.

32

13. TCP checksum IPv4 , IPv6 TCP checksum IPv4 Cand protocoloul TCP ruleaza pe IPv4 metoda folosita pentru verificarea sumei este definita in Rfc793. Versiunea 4 a IP-ului este a patra iteratie a acestuia si prima versiune care se desfasoara pe un spatiu mare. IPv4 este protocolul layer-ului network dominant pe internet si in afara de IPv6 este singurul standard pe care protocolul il foloseste pe internet. Este un prorocol de date orientate folosit asupra unui packet. Acesta nu garanteaza ajungerea datelor la destinatie si nici corectitudinea acestora. Datele pot ajunge in packete duplicate sau in packete neordonate. IPv4 foloseste adrese pe 32 de biti (4 byti)ce limiteaza spatiul acestora la 232 adrese unice posibile. Totusi unele sunt rezervate in scopuri speciale cum ar fi retelele private(11 milioane de adrese) sau adrese multicast(1 milion de adrese). Acest lucrureduce numarul adreselor ce pot fi alocate ca adrese de internet publice. O data ce adresele diponibile sunt consumate, o lipsa a adreselor IPv4 pare a fi inevitabila, totusi Network Adress Translation (NAT) intarzie oarecum acest lucru. Toate cuvintele de 16 biti sunt insumate impreuna folosind complementul unu(cu canpul de verificat setat la zero). Suma este atunci complementul lui unu. Acerasta valoare finala este atunci inserata ca un camp de verificare. Algoritmic vorbind aceasta e la fel ca pentru IPv6, diferenta este ca datele folosite sa faca verificarea. Sursa si destinatia adreselor sunt cele din iterfata IPv4. Protocolul este acelasi ca la TCP. Lungimea campului TCP este aceeasi cu lungimea colectorului si datelor TCP. Cand se scriu adresele IPv4 pentru a putea fi descifrate de oameni , cea mai comuna notatie este cea de forma punct-zecimala.Sunt si alte notatii bazate pe valoriile 200.100 in notatia punct-zecimala care cuprinde patru octeti in zecimala separati de perioade. O forma finala nu este totusi o notatie din moment ce este foarte rar scrisa in ASCII.Acea forma este o forma binara a notatiei hexadecimala in binar. Initial adresele IP au fost impartite in doua parti: -Network ID- primul octet; -Host ID- ultimii 3 octeti. Acest lucru a creat o limita superioara de 256 de retele. Pentru a depasi aceasta limita s-au definit diferite clase de retele, intr-un sistem ce a devenit cunoscut mai tarziu sub numele de classful networking.S-au creat 5 clase (A,B,C,D,E) trrei dintre care (A,B,C) au avut diferite marimi pentru retele.Restul continutului celor trei clase a fost folosit pentru identificarea unei

33

gazde pe retea, ceea ce insemna ca fiecare clasa de retea avea un numar maxim diferit de gazde. Existau cateva retele cu putine adrese de retea si multe retele cu doar cateva adrese. Clasa D era pentru adrese multicast iar clasa E era rezervata. In anul 1993 aceste clase au fost inlocuite cu schema Classless Inter Domain Routing (CIDR) si vechea schema a fost denumita prin contrast classful. Primul avantaj al CIDR-ului este sa aloce redivizarea claselor A,B si C retelelor , astfel incat blocurile adreselor mai mici (sau mai mari) pot fi alocate entitatiilor ( ca furnizorii de servicii de internet sau utilizatorii acestora.) sau retelelor alocate. Actuala repartizare a adreselor nu se facearbitrar. Principiul fundamental al rutarii este ca adresele codeaza informatia despre locatia dispozitivelor intr-o retea.Acest lucru implica ca o adresa repartizata unei parti ale unei retele nu va functiona intr-o alta parte a retelei. O structura ierarhica creata de CIDR si supravegheata de Internet Assigned Numberss Auttority(IANA) si registrele de internet regionale(RIR) se ocupa de repartizarea adreselor de internet Nortdwide.Fiecare RIR mentine o baza de date WHOIS ce ofera informatii despre repartizarea adreselor;Informatiile acestei baze de date joaca un rol esential pentru multele unelte ce incearca sa localizeze geografic adresele IP. Retele private Din cele 4 milioane de adrese permise in IPv4, 4 linii de adrese sunt rezervate doar pentru retelele private.Aceste linii nu pot fi rutate in afara retelelor private iar masinile private nu pot comunica direct cu retelele private.Totusi acestea poate sa treaca prin traducerea adreselor de retea. Liniile 10.0.0.0/8, 172.16.0.0/12 si 192.168.0.0/16 sunt rezervate pentru retelele private de RFC 1918 in timp ce linia 169.254.00/16 este rezervata pentru aderesarea Link-local definita in RFC 3927. Este o conceptie gresita ca adresele IP ce se termina in 255 nu pot fi repartizate gazdelor pe un subnet.In classful adressing (CIDR) exista 3 subneturi posibile: 255.0.0.0(clasa A), 255.255.0.0(clasa B), 255.255.255.0(clasa C). O adresa broadcast este o adresa IP ce permite informatiei sa fie trimisa tuturor masinilor pe un subintenet dat de o masina specifica.In mod normal adresa broadcast este gasita luandu-se complementul bitului subnetului. O data cu aparitia CIDR-ului , este posibil ca adresele broadcast sa nu mai fie nevoite sa se sfarseasca in 255. In mod normal prima si ultima adresa IP intr-un subnet sunt folosite caq identificator de retea si ca adresa broadcast.Toate celelalte adrese IP din subnet pot fi repartizate gazdelor pe subnet. Internetul nu este cunoscut cel mai bine datorita adreselor IP ci dupa nume.Rutarea pachetelor IP pe internet este imposibila pentru aceste nume.Acest lucru necesita traducerea(sau rezolvarea) numelor pentru adresele IP .

34

Sistemul domeniului numelor(DNS-Domain Name System) asigura ca un astfel de sistem sa converteasca numele pentru adresele IP si adresele IP pentru nume.Ca si CIDR numirea DNS-ului este tot ierarhica si permite subddelegarea spatiilor numelor altor severe DNS. Epuizarea Inca din 1980 exista o preocupare cu privire la epuizarea adreselor IP.Acesta a fost factorul de decizie pentru crearea retelelor classful si mai tarziu a CIDR-ului. La ora actuala sunt cateva imbunatatiri pentru solutionarea alocarii adreselor: - dispozitie mobile- laptop-uri, PDA, telefoane mobile - dispozitive always-on- modemuri ADSL - cresterea rapida a numarului utilizatorilor de internet. Cea mai simpla solutie este sa se foloseasca IPv6. TCP checksum IPv6 Cand protocolul TCP ruleaza pe IPv6, metoda folosita pentru verificarea sumei este definita in RFC2460. Versiunea a sasea a internet protocolului este un layer de retea pentru actiunile internet. A fost creata ca un succesor al versiunii 4, versiunea curenta a internet protocolului pentru folosirea generala a internetului. Majoritatea layerelor de transport si de aplicatii necesita putine modificari sau nici o modificare pentru a putea functiona pe Ipv6; exceptii fac aplicatiile protocoalelor care incastreaza adresele layerelor de retea (ca FTP sau NTPv3). Totusi aplicatiile au nevoie de mici schimbari pentru a functiona pe IPv6. Principala modificare adusa de IPv6 este un spatiu de adresa mult mai mare, care ofera flexibilitate ridicata in alocarea adreselor. Lungimea extinsa a adresei elimina nevoia utilizarii NAT-ului (folosit la IPv4 pentru evitarea epuizarii adreselor); de asemenea simplifica modalitatea de alocare a adreselor si renumerarea acestora cand se schimba furnizorii. Totusi nu a fost intentia creatorilor IPv6 de a oferi adrese unice permanente fiecarui individ si fiecarui computer. IPv6 suporta 2128 adrese sau aproximativ 5*1028 adrese pentru fiecare persoana din cele 6,5 miliarde oameni in viata . Numarul mare de adrese permite alocarea ierarhica a acestora ce poate face ca renumerotarea sa fie foarte simpla. Cu IPv4 tehnicile CIDR(Classles Inter Domain Routing) complexe erau create sa foloseasca cat mai bine spatiu restrans al adreselor. Renumerotarea, atunci cand se schimba furnizorii poate fi un efort mult prea mare pentru IPv4, insa cu IPv6 renumerotarea devine automata pentru ca identificatorii gazda sunt decuplati de la identificatorul furnizorului de retea. Gazdele IPv6 pot fi automat configurate cand se conecteaza la o retea rutata IPv6 folosind ruterul ICMPv6 de descoperire a mesajelor.Cand o gazda se

35

conecteaza prima oara la o retea el trimite o cerere de ruter link-local multicast pentru configurarea parametriilor sai ;daca sunt configurati convenabil,ruterele raspund la o astfel de cerinta printr-un pachet de avertizare a ruteruluice contine parametrii de configurare a layer-ului de retea. Daca autoconfigurarea versiunii a sasea a IP-ului nu este convenabila, o gazda poate folosi o configurare de stare (DHCPv6) sau poate fi configurata manual. Multicast este o parte a specificatiilor de baza a IPv6, spre deosebire de IPv4, unde a fost introdusa mai tarziu.IPv6 nu are o facilitate de link-local broadcast; acelasi efect se poate obtine prin multicastingul tuturor grupurilor de gazde. Totusi, majoritatea mediilor nu au pana in prezent infrastructurile de retea configurate sa foloseasca multicast-uri. Interfetele IPv6 au adrese Link-local pe langa adresele globale pe care aplicatiile le folosesc in mod normal. Aceste adrese sunt prezente mereu si nu se schimba niciodata, ceea ce usureazza crearea protocoalelor de configurare si configurare. In IPv4 pachetele sunt limitate la 64KiB.Cand este folosita intre parteneri de comunicatie capabili i intre linkurile de comunicatie cu o unitate de maxima transmitere(MTU) ,mai mare decat 65.576 octeti, IPv6 are suport optional pentru pachetele ce depasesc aceasta limita, numite jumbograf care poate fi de maxim 4 GiB.Folosirea jumbogramelor poate imbunatatii perfrmatele retelelor de maxima transmisie(MTU). Ipsec, protocolul pentru criptarea si autentificarea IP-ul layerelor de retea, este o parte integrala a protocolului de bazafolosit la IPv6;acest lucru este diferit de IPv4 unde este optional.Totusi IPsec nu este prea des folosit in prezent ,decat pentru a securiza traficul dintre ruterele IPv6 Border Gateway Protocol-ului. Spre deosebire de mobilul IPv4, Mobile IPv6(MIPv6) evita routarea triunghiulara si de aceea este la fel de eficienta ca versiunea normala IPv6.Acest avantaj este mai mult ipotetic, deoarece nici MIP si nici MIPv6 nu sunt folosite asa de mult in prezent. IPv4 are un verificator de suma care foloseste toti bitii header-ului pentru a crea si pentru a verifica.Cand unele domenii(ca TTL) ar putea si ar vrea sa se schimbe intre fiecare router , verificatorul trebuie sa fie refacut in fiecare dinte routere.Se crede ca greseli(erori) sunt foarte rare in retelele din prezent. Pentru acest motiv, IPv6 nu are nici o verificare de erori in protocolul lui , insa in schimb se bazeaza pe layerul de link al protocoalelor sa faca verificarea erorilor.In cazul in care headerul este corupt, cel mai rau lucru care se poate intampla este ca pachetul sa fie trimis unei late gazde. Forumul IPv6 a fost creat ca un spin-off al IETF IPv6 Deployment WG care a fost condus de Jim Bound in iulie 1999.Si pana in noiembrie 2007, IPv6 se luda cu un foarte mic procentaj din adresele live folosit in internetul accesibil publicului, care este inca dominat de IPv4. Cu exceptia auto-configuratiei fara cetatenie, mai multe adrese flexibile si Secure Neighbor Discovery(SEND), multe din caracteristicile IPv6 au fost

36

transmise IPv4 intr-o maniera mai mult sau mai putin eleganta.Desfasurarea IPv6 este folosita de epuizarea spatiului adreselor a IPv4, care a fost incetinita de introducerea CIDR-ului si folosirea NAT-ului. Feluri de adrese IPv6 Adresele IPv6 sunt impartite in trei categorii: -adrese unicast -adrese multicast -adrese anycast O adresa unicast identifica os ingura interfata de retea.Un pachet trimis unei adrese unicast este trimisa calculatorului specificat.Urmatoarele tipuri de adrese sunt adrese Ipv6 unicast: -adrese globale unicast -adrese link-local -adrese site-local -adrese locale unici IPv6 unicast -adrese speciale Adresele multicast sunt folosite pentru a defini un set de interfete care in mod normal ar apartine diferitor noduri in locul unuia singur.Cand un pachet este trimis unei adrese multicast, protocolul trimite pachetul tuturor interfetelor identificate de adresa.Adresele multicast incep cu FF00::/8 si al doile octet identifica scopul adresei(lini peste care adresa multicast este propagata).Scopuri folosite in mod normal includ link-local(0x2), site-local(0x5) si global(0xE). Adresele unicast sunt de asemenea repartizate mai multor interfete ce apartin diferitor noduri.Totusi, un pachet trimis unei adrese anycast este distribuita doar unui membru al interfetei, in mod normal cel mai apropriat in conformitate cu ideea protocolului despre distanta. Adresele anycast nu pot fi identificate asa de usor: ele au structura unor adrese normale unicast si difera numai prin faptul ca sunt injectate in protocolul routing la multiple puncte in retea. Adrese speciale Exista cateva adrese cu semnificatii speciale in IPv6: Link local - ::/128 adresa cu toate zerourile este una nespecificata si se foloseste doar pentru softuri - ::1/128 adresa loopback este o adresa localhost. - fe80::/10 prefixul link-local specifica ca adresa este valida doar in lincul fizic local.

37

Site local - fc00::/7 adrese locale unice (ULA) sunt rutabile doar cu un set de site-uri cooperante. IPv4 - ::ffff:0:0/96 acest prefix este folosit pentru adrese mapped IPv4 - 2002::/16- se foloseste pt adresarea 6la4 Multicast - ff00::/8- prefixul multicast este folosit pentru adrese multicast Folosite in exemple - ::/96- prefixul zero a fost folosit pt adresele compatibile IPv4 - 2001:db8::/32 este folosit in documentare fec0::/10- prefixul site-ului local specifica ca adresa este valida numai in interiorul organizzatiei locale.

38

Concluzie Protocolul TCP este unul de baza in arhitectura Internetului datorita necesitatii tot mai mari de a transmite la distanta informatii, intr-un mod cat mai coerent, sigur si lipsit de erori. Cu toate ca este mai lent decat protocolul UDP, siguranta transmiterii datelor il pun in postura de favorit in solutionarea necesitatilor din retelele din intreaga lume. Bibliografie Documentele RFC http://tools.ietf.org/ http://www.rfc-editor.org/categories/rfc-standard.html Internet Assigned Numbers Authority http://www.iana.org/assignments/port-numbers Administrarea Red Hat Linux (cunostinte esentiale) de Michale Turner, Steve Shah, Editura B.I.C All , 2004

39