Transmission Control Protocol är ett mycket viktigt protokoll i transportlager för OSI- eller TCP/IP-modell. Det finns många fördelar med TCP som:
- TCP återsänder om någon sänd data inte bekräftas av mottagaren inom en viss tid.
- TCP upprättar en anslutning innan data skickas. Vi kallar den anslutningen som 3-vägs handskakning.
- TCP har trängselkontrollmekanism.
- TCP kan upptäcka fel med vissa metoder.
Låt oss lära oss främst om TCP 3-vägs handskakning. Låt oss också lära oss om de viktiga fälten i Wireshark för 3-vägs handskakning.
3-vägs handslag
Det finns tre ramutbyten som sker i ett 3-vägs handslag:
Den första ramen skickas alltid av klienten till servern. Låt oss förstå detta från ett enkelt diagram:
'KLIENT-SERVER'
Ram1: Klienten skickar SYN-ram till server------------------------------------------><--------------------------------------------Server skickar SYN+ACK-ram till klient: Frame2
Ram3: Klienten skickar ACK-ramen till servern ------------------------------------------>
Vi kan se dessa tre ramar i Wireshark. 'tcp'-filtret kan användas i Wireshark för att se alla TCP-ramar. Här är skärmdumpen för de tre ramarna:
Låt oss nu förstå alla tre ramarna i detalj:
SYN
Denna ram innehåller mycket information om klientens möjligheter att informera servern. Följande skärmdump visar alla viktiga fält i SYN-ramen:
Här är de viktiga fälten för SYN-ramen:
Källport: 50602Destinationshamn: 80
Sekvensnummer: 0
Kvittensnummer: 0
Rubrikens längd: 32 byte
Flaggor: 0x002 (SYN):
Bekräftelse: Ej inställd
Push: Ej inställd
Återställ: Ej inställd
Syn: Set -----> Denna bit är inställd eftersom detta är en SYN-ram.
Fin: Ej inställd
Fönster: 65535
Brådskande pekare: 0
TCP-alternativ - Maximal segmentstorlek: 1460 byte
TCP-alternativ - Fönsterskala: 3 (multiplicera med 8)
TCP-alternativ - SACK tillåtet
SYN+ACK
Denna ram innehåller mycket information om serverns möjligheter att informera klienten. Följande skärmdump visar alla viktiga fält i SYN+ACK-ramen:
Denna ram bekräftar också SYN-ramen som skickas av klienten.
Här är de viktiga fälten för SYN+ACK-ramen:
Källport: 80Destinationshamn: 50602
Sekvensnummer: 0
Bekräftelsenummer: 1
Rubrikens längd: 32 byte (8)
Flaggor: 0x012 (SYN, ACK)
Bekräftelse: Ställ in
Push: Ej inställd
Återställ: Ej inställt
Hans: Set
Fin: Ej inställd
Fönster: 29200
Brådskande pekare: 0
TCP-alternativ - Maximal segmentstorlek: 1412 byte
TCP-alternativ - SACK tillåtet
TCP-alternativ - Fönsterskala: 7 (multiplicera med 128)
Vi kan se att 'Acknowledge' och 'SYN' bitar är inställda i denna ram. Detta beror på att denna ram är SYN+ACK.
ACK
Den här ramen är den sista ramen i 3-vägshandskakningen och även bekräftelsen av SYN+ACK av klienten. Följande skärmdump visar alla viktiga fält i ACK-ramen:
Här är de viktiga fälten för ACK-ramen:
Källport: 50602Destinationshamn: 80
Sekvensnummer: 1
Bekräftelsenummer: 1
Rubrikens längd: 20 byte (5)
Flaggor: 0x010 (ACK)
Brådskande: Ej inställt
Bekräftelse: Ställ in
Push: Ej inställd
Återställ: Ej inställd
Syn: Ej inställd
Fin: Ej inställd
Fönster: 32768
Här är bara 'Acknowledge'-biten inställd eftersom detta är en ACK-ram.
Förklaring till några viktiga vanliga fält
Port 80 : Vi observerade en fast port 80 i denna handledning. Det beror på att detta är en HTTP-insamling och port 80 är fixerad (serversidan) för HTTP-kommunikation.
Sekvensnummer : Sekvensnumret för den ramen. Sync är den första bilden så vi har 0 som ett sekvensnummer.
TCP-flaggor:
Bekräftelse – Denna bit ställs in om ramen är en ACK. Exempel: SYN+ACK, ACK-ram.
SYN – Denna bit ställs in om ramen är en SYN. Exempel: SYN.
Fönster : Det här fältet delar avsändarens maximala fönsterstorlek i mottagningsläge. Exempel: Vi har fönsterstorleken 65535 byte i SYN-ramen. Detta innebär att mottagaren kan ta emot maximalt TCP-data på 65535 byte vid vilken tidpunkt som helst.
SÄCK Tillåten : Denna bit ställs in om sändning stöder SACK [selektiv bekräftelse].
Maximal segmentstorlek : Vi kan också kalla det MSS. Detta definierar den maximala dataram som avsändaren kan ta emot. Exempel: Vi får MSS som 1460 byte i SYN-ramen.
Slutsats
Vi lärde oss om TCP 3-vägs handskakning och alla användbara fält för SYN-, SYN+ACK- och ACK-ramar. Om du vill lära dig mer om TCP kan du följa denna RFC-länk https://tools.ietf.org/html/rfc793 .