Het Transmission Control Protocol is een zeer belangrijk protocol in de transportlaag voor het OSI- of TCP/IP-model. Er zijn veel voordelen in TCP, zoals:
- TCP verzendt opnieuw als verzonden gegevens niet binnen enige tijd door de ontvanger worden bevestigd.
- TCP brengt een verbinding tot stand voordat de gegevens worden verzonden. We noemen die verbinding een 3-weg handdruk.
- TCP heeft een congestiecontrolemechanisme.
- TCP kan op bepaalde manieren fouten detecteren.
Laten we vooral leren over TCP 3-way handshake. Laten we ook meer te weten komen over de belangrijke velden in Wireshark voor 3-weg handshake.
3-weg handdruk
Er zijn drie frame-uitwisselingen die plaatsvinden in een 3-way handshake:
Het eerste frame wordt altijd door de client naar de server gestuurd. Laten we dit begrijpen aan de hand van een eenvoudig diagram:
'CLIENT SERVER'
Frame1: Client stuurt SYN-frame naar server --------------------------------------------------><---------------------------------------------------------Server verzendt SYN+ACK-frame naar opdrachtgever: Frame2
Frame3: Client stuurt ACK-frame naar server -------------------------------------------------->
We kunnen deze drie frames zien in Wireshark. Het 'tcp' -filter kan in Wireshark worden gebruikt om alle TCP-frames te zien. Hier is het screenshot voor de drie frames:
Laten we nu alle drie de frames in detail begrijpen:
SYN
Dit frame bevat veel informatie over de mogelijkheden van de client om de server te informeren. De volgende schermafbeelding toont alle belangrijke velden van het SYN-frame:
Dit zijn de belangrijke velden voor het SYN-frame:
Bronpoort: 50602Bestemmingshaven: 80
Volgnummer: 0
Bevestigingsnummer: 0
Koplengte: 32 bytes
Vlaggen: 0x002 (SYN):
Bevestiging: niet ingesteld
Push: niet ingesteld
Resetten: niet ingesteld
Syn: Set ----> Deze bit is ingesteld omdat dit een SYN-frame is.
Fin: niet ingesteld
Venster: 65535
Dringende aanwijzer: 0
TCP-optie - Maximale segmentgrootte: 1460 bytes
TCP-optie - Vensterschaal: 3 (vermenigvuldig met 8)
TCP-optie - SACK toegestaan
BEKIJK+ACK
Dit frame bevat veel informatie over de mogelijkheden van de server om de client te informeren. De volgende schermafbeelding toont alle belangrijke velden van het SYN+ACK-frame:
Dit frame bevestigt ook het SYN-frame dat door de client is verzonden.
Dit zijn de belangrijke velden voor het SYN+ACK-frame:
Bronpoort: 80Bestemmingspoort: 50602
Volgnummer: 0
Bevestigingsnummer: 1
Koplengte: 32 bytes (8)
Vlaggen: 0x012 (SYN, ACK)
Bevestiging: ingesteld
Push: niet ingesteld
Resetten: niet ingesteld
Zijn: ingesteld
Fin: niet ingesteld
Venster: 29200
Dringende aanwijzer: 0
TCP-optie - Maximale segmentgrootte: 1412 bytes
TCP-optie - SACK toegestaan
TCP-optie - Vensterschaal: 7 (vermenigvuldig met 128)
We kunnen zien dat de bits 'Acknowledge' en 'SYN' in dit frame zijn ingesteld. Dit komt omdat dit frame SYN+ACK is.
AK
Dit frame is het laatste frame van de 3-way handshake en ook de bevestiging van de SYN+ACK door de client. De volgende schermafbeelding toont alle belangrijke velden van het ACK-frame:
Dit zijn de belangrijke velden voor het ACK-frame:
Bronpoort: 50602Bestemmingspoort: 80
Volgnummer: 1
Bevestigingsnummer: 1
Koplengte: 20 bytes (5)
Vlaggen: 0x010 (ACK)
Dringend: niet ingesteld
Bevestiging: ingesteld
Push: niet ingesteld
Resetten: niet ingesteld
Syn.: niet ingesteld
Fin: niet ingesteld
Venster: 32768
Hier wordt alleen de 'Acknowledge'-bit ingesteld omdat dit een ACK-frame is.
Uitleg voor enkele belangrijke gemeenschappelijke velden
Poort 80 : We hebben één vaste poort 80 waargenomen in deze zelfstudie. Het is omdat dit een HTTP-capture is en poort 80 vast is (serverzijde) voor HTTP-communicatie.
Volgnummer : Het volgnummer van dat frame. Sync is het eerste frame, dus we hebben 0 als volgnummer.
TCP-vlaggen:
Erkenning – Deze bit is ingesteld als het frame een ACK is. Voorbeeld: SYN+ACK, ACK-frame.
SYN – Deze bit is ingesteld als het frame een SYN is. Voorbeeld: SYN.
Raam : Dit veld deelt de maximale venstergrootte van de afzender in de ontvangstmodus. Voorbeeld: we hebben de venstergrootte van 65535 bytes in het SYN-frame. Dit betekent dat de ontvanger op elk moment maximaal TCP-gegevens van 65535 bytes kan ontvangen.
ZAK Toegestaan : Deze bit is ingesteld als verzenden SACK [selectieve bevestiging] ondersteunt.
Maximale segmentgrootte : We kunnen het ook MSS noemen. Dit definieert het maximale dataframe dat de afzender kan ontvangen. Voorbeeld: we krijgen MSS als 1460 bytes in het SYN-frame.
Conclusie
We leerden over de TCP 3-way handshake en alle bruikbare velden voor SYN-, SYN+ACK- en ACK-frames. Als u meer wilt weten over TCP, kunt u deze RFC-link volgen https://tools.ietf.org/html/rfc793 .