Perdavimo valdymo protokolas yra labai svarbus OSI arba TCP/IP modelio transporto sluoksnio protokolas. TCP turi daug privalumų, pavyzdžiui:
- TCP persiunčia pakartotinai, jei gavėjas per tam tikrą laiką nepatvirtina išsiųstų duomenų.
- TCP užmezga tam tikrą ryšį prieš siųsdamas duomenis. Šį ryšį vadiname trijų krypčių rankos paspaudimu.
- TCP turi perkrovos valdymo mechanizmą.
- TCP gali aptikti klaidą naudodamas kai kuriuos metodus.
Daugiausia pasimokykime apie TCP 3 krypčių rankos paspaudimą. Taip pat sužinokime apie svarbius „Wireshark“ laukus, skirtus trijų krypčių rankos paspaudimui.
3 krypčių rankos paspaudimas
Yra trys kadrų mainai, vykstantys 3 krypčių rankos paspaudimu:
Pirmąjį kadrą klientas visada siunčia serveriui. Supraskime tai iš paprastos diagramos:
'KLIENTO SERVERIS'
Frame1: klientas siunčia SYN kadrą į serverį -------------------------------------><------------------------------------------- Serveris siunčia SYN+ACK kadrą klientui: Frame2
Frame3: klientas siunčia ACK kadrą į serverį ------------------------------------->
Šiuos tris kadrus galime pamatyti „Wireshark“. „tcp“ filtrą galima naudoti „Wireshark“, kad matytumėte visus TCP kadrus. Štai trijų kadrų ekrano kopija:
Dabar išsamiai supraskime visus tris kadrus:
SYN
Šiame rėmelyje yra daug informacijos apie kliento galimybes informuoti serverį. Šioje ekrano kopijoje rodomi visi svarbūs SYN rėmo laukai:
Čia yra svarbūs SYN rėmo laukai:
Šaltinio prievadas: 50602Paskirties uostas: 80
Eilės numeris: 0
Patvirtinimo numeris: 0
Antraštės ilgis: 32 baitai
Žymės: 0x002 (SYN):
Patvirtinimas: nenustatyta
Stūmimas: nenustatytas
Atstatyti: nenustatyta
Sin: rinkinys -----> Šis bitų rinkinys, nes tai yra SYN kadras.
Finas: nenustatytas
Langas: 65535
Skubus rodyklė: 0
TCP parinktis – maksimalus segmento dydis: 1460 baitų
TCP parinktis – lango skalė: 3 (padauginkite iš 8)
TCP parinktis – SACK leidžiamas
PERŽIŪRĖTI+ATKLAUSTI
Šiame rėmelyje yra daug informacijos apie serverio galimybes informuoti klientą. Šioje ekrano kopijoje rodomi visi svarbūs SYN+ACK rėmelio laukai:
Šis kadras taip pat patvirtina kliento išsiųstą SYN kadrą.
Čia yra svarbūs SYN+ACK rėmo laukai:
Šaltinio prievadas: 80Paskirties uostas: 50602
Eilės numeris: 0
Patvirtinimo numeris: 1
Antraštės ilgis: 32 baitai (8)
Žymės: 0x012 (SYN, ACK)
Patvirtinimas: Nustatyti
Stūmimas: nenustatytas
Atstatyti: nenustatyta
Jo: Nustatykite
Finas: nenustatytas
Langas: 29200
Skubus rodyklė: 0
TCP parinktis – maksimalus segmento dydis: 1412 baitų
TCP parinktis – SACK leidžiamas
TCP parinktis – lango skalė: 7 (padauginkite iš 128)
Matome, kad šiame kadre nustatyti bitai „Acknowledge“ ir „SYN“. Taip yra todėl, kad šis rėmelis yra SYN+ACK.
AK
Šis kadras yra paskutinis 3 krypčių rankos paspaudimo kadras, taip pat kliento patvirtinimas SYN+ACK. Šioje ekrano kopijoje rodomi visi svarbūs ACK rėmelio laukai:
Čia yra svarbūs ACK rėmelio laukai:
Šaltinio prievadas: 50602Paskirties uostas: 80
Eilės numeris: 1
Patvirtinimo numeris: 1
Antraštės ilgis: 20 baitų (5)
Vėliavos: 0x010 (ACK)
Skubu: nenustatyta
Patvirtinimas: Nustatyti
Stūmimas: nenustatytas
Atstatyti: nenustatyta
Sin: nenustatyta
Finas: nenustatytas
Langas: 32768
Čia nustatytas tik „Patvirtinimo“ bitas, nes tai yra ACK rėmelis.
Kai kurių svarbių bendrų laukų paaiškinimas
80 prievadas : Šioje pamokoje stebėjome vieną fiksuotą 80 prievadą. Taip yra todėl, kad tai yra HTTP fiksavimas, o 80 prievadas yra fiksuotas (serverio pusėje) HTTP ryšiui.
Eilės numeris : to kadro eilės numeris. Sinchronizavimas yra pirmasis kadras, todėl eilės numeris yra 0.
TCP vėliavėlės:
Pripažinimas – Šis bitas nustatomas, jei kadras yra ACK. Pavyzdys: SYN+ACK, ACK rėmelis.
SYN – Šis bitas nustatomas, jei kadras yra SYN. Pavyzdys: SYN.
Langas : Šiame lauke bendrinamas maksimalus siuntėjo lango dydis gavimo režimu. Pavyzdys: SYN rėmelyje turime 65535 baitų lango dydį. Tai reiškia, kad imtuvas bet kuriuo metu gali priimti didžiausius 65535 baitų TCP duomenis.
MAIŠAS Leidžiama : Šis bitas nustatomas, jei siuntimas palaiko SACK [selektyvus patvirtinimas].
Maksimalus segmento dydis : Taip pat galime vadinti MSS. Tai apibrėžia didžiausią duomenų kadrą, kurį siuntėjas gali gauti. Pavyzdys: MSS gauname kaip 1460 baitų SYN kadre.
Išvada
Sužinojome apie TCP 3 krypčių rankos paspaudimą ir visus naudingus laukus, skirtus SYN, SYN+ACK ir ACK kadrams. Jei norite sužinoti daugiau apie TCP, galite sekti šią RFC nuorodą https://tools.ietf.org/html/rfc793 .