Stările sesiunii tcp

Cartea este dedicată familiei sistemelor de operare UNIX și conține informații despre principiile organizării, ideologiei și arhitecturii, care combină diferite versiuni ale acestui sistem de operare.







Cartea cuprinde: arhitectura nucleului UNIX (O, managementul memoriei, și de proces, precum și subsistemul I / fișier), interfață de programare UNIX (apeluri de sistem și funcții de bibliotecă de bază), mediul utilizator (shell shell, comenzile de bază și utilități) și rețea suport în UNIX (protocoalele familiei TCP / IP, arhitectura subsistemului de rețea, API socket și TLI).

Pentru o gamă largă de utilizatori

Carte: sistem de operare UNIX

Starea sesiunilor TCP

După cum sa menționat deja, transferul de date utilizând protocolul TCP asigură o conexiune preliminară sau crearea unui canal logic TCP. Această fază preliminară este concepută pentru a spori fiabilitatea protocolului. În cursul acestei faze este determinată de la începutul TCP-fluxuri în ambele direcții, caracteristicile lor (de exemplu, maxim dimensiunea ferestrei), în același timp, pot fi detectate „mărunțire“ TCP-canale sesiuni de transmisie anterioare închise în mod corect, de exemplu, din cauza de oprire de urgență unul dintre părți. Părțile selectează numerele secvențiale inițiale arbitrare ale fluxurilor pentru a reduce probabilitatea de prelucrare a segmentelor aparținând sesiunilor "vechi". [71]

Faza inițială a sesiunii de transmisie a fost numită "strângere de mână în trei direcții", care reflectă destul de bine procesul de împărțire a segmentelor de servicii între părți. Acest proces este asimetric - una dintre părți, numită client, inițiază începutul sesiunii, trimițând segmentul SYN către cealaltă parte - serverul. [72] Acest segment este, de obicei, un număr de serviciu, adică nu conține date utile, antetul său specifică numărul portului și numărul de serie inițial al fluxului client-server. Dacă serverul este gata să primească date de la client, acesta creează un canal logic (plasând structurile de date corespunzătoare) și trimite segmentul cu numărul inițial inițial de server-client și cu simbolurile SYN și ACK clientului. confirmând primirea segmentului SYN și exprimând dorința serverului de a primi date. În sfârșit, și aceasta este cea de-a treia strângere de mână, clientul răspunde cu un segment cu setul de pavilion ACK. confirmând primirea unui răspuns de la server și finalizarea etapei de creare a canalului TCP. Procesul de stabilire a unei conexiuni într-o sesiune TCP este prezentat în Fig. 6.12.







Stările sesiunii tcp

Fig. 6.12. Stabiliți o conexiune, trimiteți date și încheiați o sesiune TCP

După aceea, ambele părți încep să transmită segmente TCP, fiecare conținând confirmarea datelor primite și o nouă valoare a ferestrei. Începând cu octetul confirmat, sursa poate transmite, fără a aștepta confirmarea, cantitatea de date determinată de valoarea ferestrei. Dacă expeditorul nu primește confirmarea datelor trimise într-o anumită perioadă de timp, el crede că datele sunt pierdute și transmiterea acestora este repetată, începând cu ultimul octet confirmat. Deoarece fiabilitatea transferului este garantată de protocol, pentru datele aplicației trimise, dar neacceptate, protocolul stochează o copie care este distrusă după primirea confirmării sau este re-transmisă dacă nu există nici o copie. Obținerea datelor duplicate este, de asemenea, confirmată, deși datele în sine sunt distruse, deoarece duplicarea ar putea fi cauzată de nerecunoaștere. Dacă una dintre părți primește date neordonate, ele sunt de obicei stocate până la primirea segmentelor consecutive lipsă. Bineînțeles, primirea unor astfel de date neordonate nu este confirmată, deoarece confirmarea este trimisă numai la fluxul continuu serial de octeți primit.

Terminarea unei sesiuni în TCP are loc în mai multe etape. Oricare parte poate finaliza transferul de date prin trimiterea unui segment cu setul de semnalizare FIN (Figura 6.12). Primirea unui astfel de segment este confirmată de cealaltă parte și este echivalentă cu atingerea sfârșitului fișierului atunci când este citită. Cu toate acestea, cealaltă parte poate continua să transmită date, completând ulterior transmiterea de către segmentul FIN. Confirmarea acestui segment distruge complet canalul și încheie sesiunea. Pentru a garanta sincronizarea sfârșitului sesiunii, partea care trimite confirmarea ultimului segment FIN. trebuie să mențină sesiunea suficient de lungă pentru a putea reconfirma segmentele FIN repetate ale sesiunii în cazul în care confirmarea nu a fost primită de cealaltă parte.

În Fig. 6.12 ilustrează de asemenea starea nodurilor de comunicare ale canalului TCP.

După cum se poate vedea din figură, starea inițială a nodului (server sau client) este ÎNCHISĂ. Disponibilitatea serverului de a procesa inițierea cererilor de la client este determinată de trecerea lui la starea LISTEN. De acum încolo, serverul poate primi și procesa segmente SYN de inițiere a sesiunii. Atunci când trimiteți un astfel de segment, clientul merge în starea SYN-SENT și așteaptă un răspuns de la server. Când segmentul este primit, serverul trimite de asemenea un segment SYN cu confirmare ACK și merge în starea SYN-RECEIVED. O confirmare din partea clientului finalizează strângerea de mână și sesiunea trece în starea ESTABLISHED. După încheierea schimbului de date, una dintre părți (de exemplu, clientul) trimite segmentul FIN, trecând la starea FIN-WAIT-1. Prin adoptarea acestui segment al celeilalte părți (de exemplu, un server) trimite un ACK, ajungând în CLOSE-WAIT, alezajul devine simplex - Transmisia de date este posibilă numai în direcția de la server la client. Când clientul primește confirmarea, merge în starea FIN-WAIT-2, care este înainte de primirea segmentului FIN. După confirmarea primirii acestui segment, canalul se prăbușește în cele din urmă.

Decodificarea statelor este dată în Tabelul. 6.5.

Tabelul 6.5. Starea sesiunilor TCP







Articole similare

Trimiteți-le prietenilor: