Înainte de a descrie modul în care este construit protocolul TCP, să ne dăm seama de ce este nevoie de el. Deci, vrem să trimitem o cerere HTTP către orice computer la distanță. Știm că la portul 80, dar cum arată computerul despre care ne referim? Pentru el, cererea vine pur și simplu pe cartea de rețea, astfel încât numărul portului are nevoie undeva să se înregistreze.
În plus, este foarte posibil ca câteva pachete să fie pierdute, în timp ce se duc de la noi la computerul de la distanță și înapoi, așa că aș dori să primesc informațiile "întregi" - nu a fost nimic de primit sau de primit, dar este greșit.
Pentru a controla acest lucru, trebuie mai întâi să "notificați" computerul la distanță, să spuneți: "Deci, vrem să stabilim o conexiune, suntem așa și așa, vom face acest lucru".
În acest scop, este necesară indicarea numerelor porturilor și controlul integrității conexiunii și protocolul TCP. Acum ia în considerare structura sa. Este luată în întregime din RFC 793, așa cum, probabil, vă amintiți, toate protocoalele sunt descrise în standardele RFC.
Nu vă temeți de abundența textului în limba engleză, acum totul va fi clar. "Lățimea imaginii" este de 4 octeți, adică dacă portul sursă și portul de destinație din prima linie ocupă jumătate din lungimea totală, fiecare câmp are 2 octeți în mărime. În consecință, Padding are 1 octet în lungime, iar numărul secvenței este de 4 octeți.
Portul sursă și portul de destinație sunt porturile, respectiv ale noastre și destinațiile. După cum știți deja din articolele anterioare, portul din partea noastră (Sursa) - aleator, din portul serverului (destinație) - 80. Când serverul va răspunde la noi, dimpotrivă, sursa Port - 80, Portul destinatie - aceeași casual, din care am trimis o cerere.
Mai jos sunt câțiva biți rezervați (rezervat) și un set de steaguri (URG, ACK și așa mai departe). Aceste steaguri vor fi dezasamblate mai târziu.
Fereastra de câmp spune, ceea ce este dimensiunea maximă poate lua calculatorul fără știrea dumneavoastră. De exemplu, în cazul în care există este scris 16384, putem trimite la computer un maxim de 16384 bytes, atunci fie va trebui să se demonstreze că acestea sunt acceptate sau (dacă sunt primite), trimite-le din nou, sau chiar de a decide că computerul este defect. Desigur, este probabil ca vom primi o confirmare după primele 1000 de bytes - în acest caz, pur și simplu, noi credem că „fereastra a fost eliminat“, și putem trimite din nou 16384 bytes.
Câmpul CheckSum conține suma de control a pachetului. Este calculat de un algoritm, pentru noi nu este foarte important care, principalul lucru este că dacă pachetul este corupt în timpul transmisiei, suma de control nu va converge și un astfel de pachet nu va funcționa. O confirmare nu îi va fi trimisă și el va fi trimis din nou.
Câmpul Urgent Pointer a fost inițial destinat să indice că informațiile sunt "importante" și ar trebui să fie procesate mai întâi (apropo, steagul URG a fost destinat aceluiași scop). Dar odată cu dezvoltarea vitezelor pe Internet în acest domeniu, totul a fost mult uitat și nu a fost folosit.