Pārraides kontroles protokols ir ļoti svarīgs protokols OSI vai TCP/IP modeļa transporta slānī. TCP ir daudz priekšrocību, piemēram:
- TCP veic atkārtotu pārsūtīšanu, ja uztvērējs kādu laiku neapstiprina nosūtītos datus.
- Pirms datu nosūtīšanas TCP izveido savienojumu. Mēs šo savienojumu saucam par trīsvirzienu rokasspiedienu.
- TCP ir pārslodzes kontroles mehānisms.
- TCP var noteikt kļūdu, izmantojot dažas metodes.
Mācīsimies galvenokārt par TCP trīsvirzienu rokasspiedienu. Uzzināsim arī par svarīgākajiem Wireshark laukiem trīsvirzienu rokasspiedienam.
Trīsvirzienu rokasspiediens
Ir trīs kadru apmaiņa, kas notiek 3 virzienu rokasspiedienā:
Pirmo kadru klients vienmēr nosūta serverim. Ļaujiet mums to saprast no vienkāršas diagrammas:
“KLIENTS” “SERVERIS”
Frame1: klients nosūta SYN rāmi serverim ------------------------------------><-------------------------------------------- Serveris nosūta SYN+ACK rāmi klientam: Frame2
Frame3: klients nosūta ACK rāmi serverim ------------------------------------->
Mēs varam redzēt šos trīs kadrus Wireshark. “tcp” filtru var izmantot programmā Wireshark, lai redzētu visus TCP kadrus. Šeit ir trīs kadru ekrānuzņēmums:
Ļaujiet mums tagad sīkāk izprast visus trīs kadrus:
SYN
Šis ietvars satur daudz informācijas par klienta iespējām informēt serveri. Šis ekrānuzņēmums parāda visus svarīgos SYN rāmja laukus:
Šeit ir svarīgi SYN rāmja lauki:
Avota ports: 50602Galamērķa osta: 80
Kārtas numurs: 0
Apstiprinājuma numurs: 0
Galvenes garums: 32 baiti
Karogi: 0x002 (SYN):
Apstiprinājums: nav iestatīts
Push: nav iestatīts
Atiestatīt: nav iestatīts
Syn: Set -----> Šī bitu kopa, jo tas ir SYN rāmis.
Fin: nav iestatīts
Logs: 65535
Steidzams rādītājs: 0
TCP opcija — maksimālais segmenta lielums: 1460 baiti
TCP opcija — loga skala: 3 (reizināt ar 8)
TCP opcija — SACK atļauts
SKATĪT+ATKĀRTOT
Šajā ietvarā ir daudz informācijas par servera iespējām informēt klientu. Šajā ekrānuzņēmumā ir parādīti visi svarīgie SYN+ACK rāmja lauki:
Šis rāmis apstiprina arī klienta nosūtīto SYN rāmi.
Šeit ir svarīgi lauki SYN+ACK rāmim:
Avota osta: 80Galamērķa osta: 50602
Kārtas numurs: 0
Pateicības numurs: 1
Galvenes garums: 32 baiti (8)
Karogi: 0x012 (SYN, ACK)
Apstiprinājums: Uzst
Push: nav iestatīts
Atiestatīt: nav iestatīts
Viņa: Set
Fin: nav iestatīts
Logs: 29200
Steidzams rādītājs: 0
TCP opcija — maksimālais segmenta lielums: 1412 baiti
TCP opcija — SACK atļauts
TCP opcija — loga skala: 7 (reizināt ar 128)
Mēs redzam, ka šajā kadrā ir iestatīti biti “Acknowledge” un “SYN”. Tas ir tāpēc, ka šis rāmis ir SYN+ACK.
ACK
Šis kadrs ir pēdējais trīsvirzienu rokasspiediena kadrs, kā arī klienta apstiprinājums par SYN+ACK. Nākamajā ekrānuzņēmumā ir parādīti visi svarīgie ACK rāmja lauki:
Šeit ir svarīgi ACK rāmja lauki:
Avota ports: 50602Galamērķa osta: 80
Kārtas numurs: 1
Apliecinājuma numurs: 1
Galvenes garums: 20 baiti (5)
Karogi: 0x010 (ACK)
Steidzami: nav iestatīts
Apstiprinājums: Uzst
Push: nav iestatīts
Atiestatīt: nav iestatīts
Sin: nav iestatīts
Fin: nav iestatīts
Logs: 32768
Šeit ir iestatīts tikai “Acknowledge” bits, jo tas ir ACK rāmis.
Dažu svarīgu kopīgu lauku skaidrojums
80. ports : Šajā apmācībā mēs novērojām vienu fiksēto portu 80. Tas ir tāpēc, ka šī ir HTTP tveršana un 80. ports ir fiksēts (servera pusē) HTTP saziņai.
Secības numurs : šī kadra kārtas numurs. Sinhronizācija ir pirmais kadrs, tāpēc mums ir 0 kā kārtas numurs.
TCP karogi:
Atzinība – Šis bits tiek iestatīts, ja rāmis ir ACK. Piemērs: SYN+ACK, ACK rāmis.
SYN – Šis bits ir iestatīts, ja rāmis ir SYN. Piemērs: SYN.
Logs : šis lauks koplieto sūtītāja maksimālo loga izmēru saņemšanas režīmā. Piemērs: SYN rāmī loga izmērs ir 65535 baiti. Tas nozīmē, ka uztvērējs var saņemt maksimālo TCP datu apjomu 65535 baiti jebkurā laikā.
MAISS Atļauts : Šis bits ir iestatīts, ja sūtīšana atbalsta SACK [selektīvs apstiprinājums].
Maksimālais segmenta lielums : Mēs to varam saukt arī par MSS. Tas nosaka maksimālo datu kadru, ko sūtītājs var saņemt. Piemērs: mēs saņemam MSS kā 1460 baitus SYN rāmī.
Secinājums
Mēs uzzinājām par TCP trīsvirzienu rokasspiedienu un visiem noderīgajiem laukiem SYN, SYN+ACK un ACK kadriem. Ja vēlaties uzzināt vairāk par TCP, varat sekot šai RFC saitei https://tools.ietf.org/html/rfc793 .