Analiză TCP 3-Way Handsake în Wireshark

Analiza Tcp 3 Way Handsake In Wireshark



Transmission Control Protocol este un protocol foarte important în stratul de transport pentru modelul OSI sau TCP/IP. Există multe avantaje în TCP, cum ar fi:

  • TCP retransmite dacă orice date trimise nu sunt confirmate de receptor într-un interval de timp.
  • TCP stabilește o conexiune înainte de a trimite datele. Numim această conexiune ca strângere de mână în 3 căi.
  • TCP are mecanism de control al congestiei.
  • TCP poate detecta erori folosind unele metode.

Să învățăm în principal despre strângerea de mână în trei căi TCP. Să învățăm, de asemenea, despre domeniile importante din Wireshark pentru strângerea de mână în trei căi.







Strângere de mână în 3 căi

Există trei schimburi de cadre care au loc într-o strângere de mână în trei căi:



  1. SYN
  2. VIEW+ACK
  3. ACK

Primul cadru este întotdeauna trimis de client către server. Să înțelegem asta dintr-o diagramă simplă:



'CLIENT SERVER'

Frame1: Clientul trimite cadru SYN către server------------------------------------>

<-------------------------------------------Serverul trimite cadru SYN+ACK către client: Frame2

Frame3: Clientul trimite un cadru ACK către server------------------------------------>

Putem vedea aceste trei cadre în Wireshark. Filtrul „tcp” poate fi folosit în Wireshark pentru a vedea toate cadrele TCP. Iată captura de ecran pentru cele trei cadre:





Să înțelegem acum toate cele trei cadre în detalii:



SYN

Acest cadru conține multe informații despre capacitățile clientului de a informa serverul. Următoarea captură de ecran arată toate câmpurile importante ale cadrului SYN:

Iată câmpurile importante pentru cadrul SYN:

Port sursă: 50602
Port de destinație: 80
Numărul secvenței: 0
Număr de confirmare: 0
Lungimea antetului: 32 de octeți
Indicatori: 0x002 (SYN):
Confirmare: nesetat
Push: Nu setat
Resetare: nesetat
Syn: Setați  -----> Acest bit setat deoarece acesta este un cadru SYN.
Fin: Nu setat

Fereastra: 65535
Indicator urgent: 0
Opțiunea TCP - Dimensiunea maximă a segmentului: 1460 de octeți
Opțiunea TCP - Scara ferestrei: 3 (înmulțire cu 8)
Opțiunea TCP - SACK permis

VIEW+ACK

Acest cadru conține multe informații despre capacitățile serverului de a informa clientul. Următoarea captură de ecran arată toate câmpurile importante ale cadrului SYN+ACK:

Acest cadru recunoaște, de asemenea, cadrul SYN care este trimis de client.

Iată câmpurile importante pentru cadrul SYN+ACK:

Port sursă: 80
Port de destinație: 50602
Numărul secvenței: 0
Numărul de confirmare: 1

Lungimea antetului: 32 de octeți (8)
Indicatori: 0x012 (SYN, ACK)
Confirmare: Setat
Push: Nu setat
Resetare: nesetat
Lui: Set
Fin: Nu setat

Fereastra: 29200
Indicator urgent: 0
Opțiunea TCP - Dimensiunea maximă a segmentului: 1412 octeți
Opțiunea TCP - SACK permis
Opțiunea TCP - Scara ferestrei: 7 (înmulțire cu 128)

Putem vedea că biții „Acknowledge” și „SYN” sunt setați în acest cadru. Acest lucru se datorează faptului că acest cadru este SYN+ACK.

ACK

Acest cadru este ultimul cadru al strângerii de mână în 3 căi și, de asemenea, confirmarea SYN+ACK de către client. Următoarea captură de ecran arată toate câmpurile importante ale cadrului ACK:

Iată câmpurile importante pentru cadrul ACK:

Port sursă: 50602
Port de destinație: 80
Numărul secvenței: 1
Numărul de confirmare: 1
Lungimea antetului: 20 octeți (5)
Indicatori: 0x010 (ACK)
Urgent: nesetat
Confirmare: Setat
Push: Nu setat
Resetare: nesetat
Syn: Nu setat
Fin: Nu setat

Fereastra: 32768

Aici, doar bitul „Confirmare” este setat deoarece acesta este un cadru ACK.

Explicație pentru unele câmpuri comune importante

Portul 80 : Am observat un port fix 80 în acest tutorial. Se datorează faptului că aceasta este o captură HTTP și portul 80 este fix (partea server) pentru comunicarea HTTP.

Număr de secvență : numărul de secvență al acelui cadru. Sincronizarea este primul cadru, așa că avem 0 ca număr de secvență.

Indicatori TCP:

Confirmare – Acest bit este setat dacă cadrul este un ACK. Exemplu: SYN+ACK, cadru ACK.

SYN – Acest bit este setat dacă cadrul este un SYN. Exemplu: SYN.

Fereastră : Acest câmp împărtășește dimensiunea maximă a ferestrei expeditorului în modul de primire. Exemplu: Avem dimensiunea ferestrei de 65535 octeți în cadrul SYN. Aceasta înseamnă că receptorul poate primi un maxim de date TCP de 65535 octeți în orice moment.

SAC Permis : Acest bit este setat dacă trimiterea acceptă SACK [acknowledgement selectiv].

Dimensiunea maximă a segmentului : Îl putem numi și MSS. Aceasta definește cadrul maxim de date pe care expeditorul îl poate primi. Exemplu: obținem MSS ca 1460 de octeți în cadrul SYN.

Concluzie

Am aflat despre handshake-ul TCP în trei căi și despre toate câmpurile utile pentru cadrele SYN, SYN+ACK și ACK. Dacă doriți să aflați mai multe despre TCP, puteți urma acest link RFC https://tools.ietf.org/html/rfc793 .