strat de transport
Stratul de transport. Protocoale TCP, UDP.
Fiecare octet în conexiunea TCP are un număr de 32 de biți. Prin urmare, chiar și în rețeaua la 10 MB / s va dura cel puțin o oră pentru a epuiza toate camerele. Etinomera folosit pentru toate pachetele pe conexiunea: notificare, windowing date.
agenți TCP face schimb de segmente de date. Fiecare segment are un antet de 20 octeți sau mai mult (opțional) și un corp de lungime arbitrară. TCP decide cât timp agentul poate fi un organism. Doi factori limitează lungimea segmentului. Originea - lungimea segmentului nu trebuie să depășească lungimea maximă a pachetului IP - bytes 65K. Al doilea - fiecare rețea are o unitate de transmisie maximă MTU, iar fiecare segment trebuie să fie plasate în MTU. În caz contrar, router-ul va trebui să se aplice fragmentare.
Protocolul de bază utilizat de către agentul TCP este un protocol de fereastră glisantă. Acest lucru înseamnă că fiecare segment este trimis trebuie să fie confirmată. În același timp, trimiterea unui cronometru segment este armat. Confirmarea va veni fie cu o serie de date regulate în direcția opusă, dacă există, sau nu există date. Confirmarea va purta numărul de serie al următorului segment așteptat. În cazul în care cronometrul se termină înainte de a primi o confirmare, segmentul este trimis din nou.
În ciuda simplității sale aparente, protocolul TCP este destul de complicată și ar trebui să abordeze următoarele aspecte-cheie:
- restabili segmentele de ordine;
- pentru a elimina segmente de duplicat, sub orice formă (fragmentare) au fost primite;
- determină o întârziere rezonabilă pentru timp pentru a primi o confirmare în segmentul;
- Configurarea conexiunii și rupe în mod fiabil;
- controlul fluxului;
- gestionarea congestiei.
- Formatul TCP-pachet
protocolul de control al transmisiei TCP (Transmission Control Protocol) este / TCP IP standard, opțional, care este descrisă în RFC documentul 793 «Transmission Control Protocol (TCP)» și oferă pachetul de încredere de livrare de servicii, orientate spre conexiune. protocolul TCP:- garantează livrarea de datagrame IP;
- efectuează împărțirea în segmente și de asamblare de blocuri mari de date trimise de programe;
- Acesta prevede livrarea de segmente de date în ordinea dorită;
- verifică integritatea datelor transmise prin intermediul sumei de control;
- Se trimite o confirmare pozitivă în cazul în care datele sunt primite cu succes. Folosind confirmare selectivă poate trimite, de asemenea confirmări negative date care nu au fost primite;
- Acesta oferă transportul preferat pentru programele care necesită transmisia de date fiabile cu stabilirea unei sesiuni de comunicare, cum ar fi o bază de date „client-server“ și programe de e-mail.
TCP se bazeaza pe conexiunea „punctul de la punctul“ între două noduri de rețea. TCP primește date de la programele și le procesează ca un flux de octeți. Bytes sunt grupate în segmente, care TCP atribuie un număr de secvență necesare pentru asamblarea corespunzătoare a segmentelor pe nodul receptor.
Pentru două noduri TCP pot comunica, ei trebuie să stabilească mai întâi o conexiune sesiune unul cu celălalt. Sesiunea TCP este inițializat printr-un proces numit trei etape stabilirea conexiunii. În acest proces, numere de secvență sincronizate și informațiile de control necesare pentru stabilirea de conexiuni virtuale între noduri.
TCP-segmente sunt încapsulate și transmise către IP-datagrame, așa cum se arată în figura următoare.
segmentul TCP-antet conține mult mai multe câmpuri decât antetul UDP, care reflectă caracteristicile mai avansate ale primului protocol.
Portul sursă de câmp (Port sursă) ocupă 2 octeți și identifică procesul de trimitere. portul de destinație Golf (Destination Port) este de 2 octeți și identifică procesul de primire. Numărul de secvență de câmp (Sequence Number) (4 octet de lungime) și un număr de confirmare (numărul de confirmare) (4 octet de lungime) sunt numerotate la fiecare trimise sau a primit un octet de date. Pus în aplicare ca numere întregi fără semn, care sunt evacuate atunci când ajung la valoarea maximă. Fiecare parte își menține propria numerotare în serie. câmp lungime antet ocupă 4 biți și reprezintă lungimea segmentului TCP-antet, măsurată în cuvinte de 32 biți. Lungimea antet nu este fixă și se poate modifica în funcție de valorile setate în câmpul de parametri.
rezerva Field (Rezervat) ocupă 6 biți.
steaguri de câmp (Cod biți) are 6 biți și conține șase steaguri 1-bit:
- Flag URG (Urgent Pointer - indicator de precizie) este setat la 1, în cazul utilizării unui pointer la datele de urgență;
- ACK (Acknowledgement - confirmare) flag este setat la 1 în cazul în care câmpul conține date numărul de confirmare. În caz contrar, acest câmp este ignorat;
- pavilion PSH (Push - scoatere) înseamnă că stiva de primire TCP trebuie să informeze imediat aplicarea datelor primite, mai degrabă decât să aștepte până când tamponul este plin;
- flag RST (Reset - resetare) este utilizat pentru a anula compuși: din cauza unor erori de aplicare, eșecul segmentului greșit încearcă să creeze o conexiune în absența serviciului solicitat;
- SYN (Sincronizare - sincronizare) este stabilită la inițierea sincronizării de conectare și secvență de numere;
- flag FIN (terminat - finalizare) este utilizat pentru a rupe conexiunea. Aceasta indică faptul că expeditorul este terminat trimiterea de date.
Dimensiunea ferestrei Field (Window) (2 octeți) conține numărul de octeți care pot fi trimise după octetul a cărui preparare este deja confirmată.
câmp Checksum (Checksum) (lungime 2 octeți) este utilizat pentru a îmbunătăți fiabilitatea. Acesta conține un antet de control, datele și pseudo prezentat în Fig. 3. În cazul în care calculul sumei de control câmp este setat la zero, iar câmpul de date este completat de un octet la zero, în cazul în care lungimea sa este un număr impar. Checksum algoritm adaugă pur și simplu, toate cuvintele de 16 biți în codul adițional, iar apoi calculează adăugarea la total. Ca urmare, atunci când receptorul consideră doar un segment de control, inclusiv câmpul de control, rezultatul dozhzhen să fie zero.
Fig. 2. Structura de pachete TCP atunci când se calculează suma de control.
Pseudo formată exclusiv pentru control și are următoarea structură.
Fig. 3. Structura unui pachet pseudo TCP.
Algoritmul ferestrei glisante în cadrul conexiunii stabilite în protocolul TCP transmiterea corectă a fiecărui segment trebuie să fie confirmat de primire de la destinatar. Recunoașteți - aceasta este una dintre metodele tradiționale pentru a asigura o comunicare de încredere. Protocolul TCP foloseste un caz special de confirmare - algoritmul de fereastră glisantă. La stabilirea unei conexiuni, ambele părți sunt de acord asupra octeții inițiale numărul cu care numărătoarea inversă se desfășoară pe tot compusul. La fiecare parte a numărului dvs. de pornire. Codul de identificare al fiecărui segment este numărul primului său octet. Numerotarea de octeți dintr-un segment este realizat astfel încât primul octet de date imediat după antetul are cel mai mic număr, iar următorii octeți după el au următoarele numere de serie (Fig. 5).
Fig. 5. Numerotarea octeților din TCP-segment.
Atunci când un expeditor trimite o TCP-segment, deoarece plasează segmentul de identificare în numărul de ordine numărul de câmp al primului octet al segmentului. De exemplu, în Fig. 6 segmente Identificatorii sunt numere 32600, 34060, 36520, etc. Pe baza acestor camere TCP-receptor nu numai distinge segmentul de celălalt, dar, de asemenea, poziționează fragmentul rezultat în raport cu debitul total. In plus, se poate concluziona că segmentul primit este un duplicat sau lipsesc date etc. obținute între cele două segmente
Fig. 6. Numărul de serie și numărul chitanței.
Ca o confirmare de primire care destinatarul trimite un segment de mesaj de răspuns (segment), în care numărul de locuri (numărul de confirmare) pe unitate, în plus față de numărul maxim de octeți al segmentului. Pentru segmentele prezentate în Fig. 6, primirea (un număr de confirmare) sunt numărul de ultimul octet al fiecărui segment 1. Deci, pentru primul segment este trimis va fi numărul 34060 la al doilea - 36520, etc. Numărul de confirmare este adesea interpretat ca numărul de următorul octet așteptat de date. Primirea (confirmare) în protocolul TCP este trimis numai în cazul recepției corecte a datelor, o confirmare negativă nu este trimis. Astfel, lipsa de încasări înseamnă o pierdere de segment sau de acceptare a unui segment distorsionat sau o pierdere de primire.
În protocolul TCP în același segment poate fi plasat, iar datele pe care aplicația trimite celeilalte părți, și o confirmare de primire, care modulul TCP confirmă primirea datelor.
Protocolul TCP este un duplex, adică, într-un singur compus reglementează procedura de schimb de date în ambele direcții. Fiecare parte acționează simultan ca expeditor și destinatar. Fiecare parte are o pereche de tampoane - unul pentru stocarea segmentele primite, cealaltă - pentru segmentul, care nu are decât să fie trimis. În plus, există un tampon pentru stocarea de copii ale segmentelor care au fost trimise, dar primirea de care nu este încă disponibil.
Și în cazul în care conexiunea este stabilită, și în cursul transmiterii de ambele părți, acționând ca un destinatar, trimite reciproc, așa-numita fereastra primi. Fiecare dintre părțile care primesc fereastra primesc, „înțelege“ cât de mulți octeți este permis să trimită o confirmare de primire a chitanței finale. Cu alte cuvinte, trimiterea fereastra primi, ambele părți încearcă să regleze fluxul de octeți în partid, spunându „omologul“ său câți bytes (începând cu numărul de octet, care a fost deja trimis o confirmare de primire) pe care sunt dispuși să accepte în acest moment.
Fig. 7 prezintă fluxul de octeți primit de la nivelul superior la protocolul TCP tampon de ieșire. Din «bucăți» TCP segmente de secvență de module de protocol octet și le pregătește să trimită o altă priză. În acest flux, puteți specifica mai multe limite logice. Prima limita separă segmentele care au fost deja trimise și care au venit deja primire. Pe de cealaltă parte a frontierei este dimensiunea octeților ferestrei W. O parte din octeți incluse în fereastra, face segmente care au fost deja trimise, dar aluneca pe ele nu sunt încă disponibile. Partea rămasă a ferestrei - un segment care încă nu a fost expediat, dar pot fi trimise ca parte din exteriorul cutiei. Și, în sfârșit, ultima frontieră indică începutul unei secvențe de segmente, dintre care niciunul nu poate fi trimisă atâta timp până când este o chitanță regulată și fereastra nu va fi deplasat spre dreapta.
În cazul în care dimensiunea ferestrei este W, iar valoarea în timp a ultimei N cuprinde o confirmare de primire, expeditorul poate trimite noi segmente, atâta timp cât următorul octet din segmentul nu va scădea cu numărul N + W. Acest segment se extinde dincolo de fereastră, iar transmisia într-un astfel de caz, trebuie să fie suspendată până la următoarea primire.
Fig. 7. Caracteristici ale algoritmului ferestrei glisante în protocolul TCP. Procedura de „start lent“
Atunci când orice rețea primește mai multe date decât se poate ocupa, congestie în rețeaua formată. Internet, în acest sens, nu este o excepție. Deci, aici considerăm un algoritm dezvoltat pentru a face față cu congestionarea rețelei. Soluția utilizată în Internet, este de a recunoaște că există două probleme potențiale: o retea de lățime de bandă îngustă și capacitatea redusă a beneficiarului - și într-o soluție separată pentru ambele probleme. Pentru a face acest lucru, fiecare expeditor are două ferestre: fereastra furnizată de către destinatar, și fereastra congestie. Mărimea fiecăreia dintre ele corespunde numărului de octeți pe care expeditorul are dreptul de a transfera. Expeditorul este ghidat de minimul dintre aceste două valori. De exemplu, destinatarul a spus, „Vă rugăm să trimiteți-mi un 8K“, dar expeditorul știe că, dacă va trimite mai mult de 4 KB, plămada este format în rețea, așa că trimite toate același 4 KB. În cazul în care expeditorul știe că rețeaua este capabilă să transfere și mai multe date, cum ar fi 32Kbayta, el va da la fel de mult ca și solicită destinatarului (de exemplu, 8K).
compus de instalare expeditor setează dimensiunea ferestrei de congestie egală cu dimensiunea maximă utilizată în segmentul de conectare. În cazul în care confirmarea de primire a acestui segment sosește înainte de expirarea perioadei de așteptare, se adaugă o dimensiune a ferestrei la dimensiunea segmentului, și anume dimensiunea ferestrei de congestie este dublată și a trimis deja două segmente. Ca răspuns la o confirmare de primire pentru fiecare dintre segmentele de expansiune se face fereastra de suprasarcină pentru o dimensiune maximă de segment. Să presupunem că n este egal cu segmentele de dimensiunea ferestrei. În cazul în care a confirmat pentru toate segmentele de vin la timp, fereastra este mărită cu numărul de octeți care corespund n segmente. De fapt, confirmarea fiecărui segment de secvență duce la o dublare a ferestrei de congestie.
Acest proces de creștere exponențială continuă atâta timp cât dimensiunea ferestrei receptorului este atinsă sau nu va fi dezvoltat indicația de semnal congestie timeout. De exemplu, în cazul în care pachetele 1024, 2048, și 4096 bytes a ajuns cu succes destinatarului, și ca răspuns la transmiterea de 8192-byte pachet de confirmare este primită în termenul prevăzut, fereastra de congestie este setat la 4096 bytes. Atâta timp cât dimensiunea ferestrei de congestie este 4096 bytes, pachetele mai lungi sunt trimise, indiferent de dimensiunea ferestrei furnizate de către destinatar. Acest algoritm se numește „start lent“.
- Formatul UDP-pachet
protocolul UDP, ca un protocol de datagrame, pune în aplicare serviciul în care este posibil, adică, nu garantează livrarea mesajului lor, și, prin urmare, în nici un fel compensează lipsa de fiabilitate a datagrama IP.
Protocol unitate de date UDP numit UDP-pachete sau utilizator datagramelor (datagramelor utilizator). Fiecare datagramă poartă un mesaj de utilizator separat. Aceasta conduce la o limitare naturală: lungimea datagrama UDP nu poate depăși câmpul lungime de date IP protocol, care la rândul său limitat dimensiunea inferioară tehnologie cadru strat. Prin urmare, în cazul în care UDP-buffer overflow, datele aplicației este eliminată. pachet UDP-header este format din patru câmpuri doi octeți, care cuprinde un câmp de port sursă, portul de destinație, lungimea UDP și control.
Fig. 8. UDP format de antet de pachete. Câmpul pentru port sursă și portul de destinație sunt identificate de transmisie și recepție a proceselor.
câmp lungime UDP conține lungimea în octeți de pachete UDP.
Câmpul de control include un control pachet UDP este calculat peste tot pachet UDP cu pseudo adăugat.
Fig. 9. Structura pachet UDP calcule CRC.
Pseudo formată exclusiv pentru control și are următoarea structură.
Fig. 10. Structura unui pseudo pachet UDP