Transmission Control Protocol er en meget vigtig protokol i transportlag for OSI- eller TCP/IP-modeller. Der er mange fordele ved TCP som:
- TCP gentransmitterer, hvis nogen sendte data ikke bliver bekræftet af modtageren inden for et stykke tid.
- TCP etablerer en forbindelse, før dataene sendes. Vi kalder den forbindelse som 3-vejs håndtryk.
- TCP har overbelastningskontrolmekanisme.
- TCP kan opdage fejl ved hjælp af nogle metoder.
Lad os hovedsageligt lære om TCP 3-vejs håndtryk. Lad os også lære om de vigtige felter i Wireshark til 3-vejs håndtryk.
3-vejs håndtryk
Der er tre rammeudvekslinger, der sker i et 3-vejs håndtryk:
Den første frame sendes altid af klienten til serveren. Lad os forstå dette ud fra et simpelt diagram:
'KLIENT' 'SERVER'
Ramme1: Klient sender SYN-ramme til server------------------------------------------><--------------------------------------------Server sender SYN+ACK-ramme til klient: Frame2
Ramme3: Klienten sender ACK-ramme til server----------------------------------->
Vi kan se disse tre rammer i Wireshark. 'tcp'-filteret kan bruges i Wireshark til at se alle TCP-rammer. Her er skærmbilledet til de tre frames:
Lad os nu forstå alle tre rammer i detaljer:
SYN
Denne ramme indeholder mange oplysninger om klientens muligheder for at informere serveren. Følgende skærmbillede viser alle de vigtige felter i SYN-rammen:
Her er de vigtige felter for SYN-rammen:
Kildeport: 50602Destinationshavn: 80
Sekvensnummer: 0
Kvitteringsnummer: 0
Headerlængde: 32 bytes
Flag: 0x002 (SYN):
Kvittering: Ikke indstillet
Push: Ikke indstillet
Nulstil: Ikke indstillet
Syn: Indstil -----> Denne bit er indstillet, fordi dette er en SYN-ramme.
Finne: Ikke sat
Vindue: 65535
Urgent pointer: 0
TCP Option - Maksimal segmentstørrelse: 1460 bytes
TCP-indstilling - Vinduesskala: 3 (gang med 8)
TCP Option - SACK tilladt
VIEW+ACK
Denne ramme indeholder mange oplysninger om serverens muligheder for at informere klienten. Følgende skærmbillede viser alle de vigtige felter i SYN+ACK-rammen:
Denne ramme anerkender også den SYN-ramme, der sendes af klienten.
Her er de vigtige felter for SYN+ACK-rammen:
Kildeport: 80Destinationshavn: 50602
Sekvensnummer: 0
Kvitteringsnummer: 1
Headerlængde: 32 bytes (8)
Flag: 0x012 (SYN, ACK)
Kvittering: Indstil
Push: Ikke indstillet
Nulstil: Ikke indstillet
Hans: Sæt
Finne: Ikke sat
Vindue: 29200
Urgent pointer: 0
TCP Option - Maksimal segmentstørrelse: 1412 bytes
TCP Option - SACK tilladt
TCP Option - Vindues skala: 7 (multiplicer med 128)
Vi kan se, at 'Acknowledge' og 'SYN' bits er sat i denne ramme. Dette skyldes, at denne ramme er SYN+ACK.
ACK
Denne ramme er den sidste ramme i 3-vejs håndtrykket og også klientens bekræftelse af SYN+ACK. Følgende skærmbillede viser alle de vigtige felter i ACK-rammen:
Her er de vigtige felter for ACK-rammen:
Kildeport: 50602Destinationshavn: 80
Sekvensnummer: 1
Kvitteringsnummer: 1
Overskriftslængde: 20 bytes (5)
Flag: 0x010 (ACK)
Haster: Ikke indstillet
Kvittering: Sæt
Push: Ikke indstillet
Nulstil: Ikke indstillet
Syn: Ikke indstillet
Finne: Ikke sat
Vindue: 32768
Her er kun 'Acknowledge'-bitten indstillet, fordi dette er en ACK-ramme.
Forklaring på nogle vigtige almindelige felter
Port 80 : Vi observerede en fast port 80 i denne øvelse. Det er fordi dette er en HTTP-optagelse, og port 80 er fast (serversiden) til HTTP-kommunikation.
Sekvensnummer : Sekvensnummeret for det billede. Sync er den første frame, så vi har 0 som et sekvensnummer.
TCP-flag:
Anerkendelse – Denne bit indstilles, hvis rammen er en ACK. Eksempel: SYN+ACK, ACK-ramme.
SYN – Denne bit indstilles, hvis rammen er en SYN. Eksempel: SYN.
Vindue : Dette felt deler afsenderens maksimale vinduesstørrelse i modtagetilstand. Eksempel: Vi har vinduesstørrelsen på 65535 bytes i SYN-rammen. Det betyder, at modtageren maksimalt kan modtage TCP-data på 65535 bytes på ethvert tidspunkt.
SÆK tilladt : Denne bit er indstillet, hvis afsendelse understøtter SACK [selektiv bekræftelse].
Maksimal segmentstørrelse : Vi kan også kalde det MSS. Dette definerer den maksimale dataramme, som afsenderen kan modtage. Eksempel: Vi får MSS som 1460 bytes i SYN-rammen.
Konklusion
Vi lærte om TCP 3-vejs håndtryk og alle de nyttige felter til SYN, SYN+ACK og ACK frames. Hvis du vil lære mere om TCP, kan du følge dette RFC-link https://tools.ietf.org/html/rfc793 .