Leksjon 3 av 4 · 7 min
TCP-håndtrykket og en forbindelses liv
Hvordan to datamaskiner blir enige om å snakke før de sender ekte data, hvordan de avslutter samtalen, og hva en brannmur som ser i midten faktisk ser.
Før Mac-en sender en enkelt byte av en nettsideforespørsel, har den allerede utvekslet tre korte meldinger med serveren. Denne utvekslingen, TCP treveis håndtrykket, er det som gjør TCPs pålitelighetsløfter fra forrige leksjon til en faktisk, sporbar forbindelse mellom to maskiner.
Tre meldinger før det første ordet
RFC 9293, den nåværende TCP-spesifikasjonen, beskriver prosessen som en synkronisert utveksling: "synkroniseringen krever at hver side sender sitt eget innledende sekvensnummer og mottar en bekreftelse på det fra den eksterne TCP-peeren."
- SYN. Enheten som åpner forbindelsen sender et segment med SYN-flagget satt, med et startsekvensnummer.
- SYN-ACK. Den andre siden svarer med sin egen SYN, pluss en bekreftelse på det første tallet.
- ACK. Den første enheten bekrefter dette svaret. RFC 9293 bemerker at "fordi trinn 2 og 3 kan kombineres i en enkelt melding, kalles dette treveis (eller tre meldinger) håndtrykk." Når den er fullført, teller begge sider forbindelsen som ETABLERT og begynner å sende ekte data.
Cloudflares læringssenter gir en vanlig versjon av den samme ideen, og bruker en e-post som eksempel: "først sender kilden en SYN 'initial request'-pakke til målserveren for å starte dialogen. Deretter sender målserveren en SYN-ACK-pakke for å godta prosessen. Til slutt sender kilden en ACK-pakke til målet, etter hvilken melding kan sendes."
Avslutte en tilkobling rent
Å stenge er mer bevisst enn å åpne. RFC 9293 forklarer at "den normale TCP-lukkesekvensen leverer bufret data pålitelig i begge retninger" før tilkoblingen avsluttes: hver side sender et FIN-segment når den ikke har mer data å sende, den andre siden bekrefter det, og først når begge retninger er fullført lukkes tilkoblingen helt. En kort venteperiode (TIME-WAIT) følger, slik at eventuell bortkommen, forsinket pakke fra den gamle forbindelsen ikke kan forveksles med en del av en ny.
Hva en brannmur i midten ser
En stateful brannmur, den typen som er innebygd i de fleste rutere og i selve macOS, trenger ikke å inspisere hver pakke for å ta en avgjørelse. Cloudflares forklaring av brannmurer beskriver det på denne måten: den "lagrer informasjon om åpne tilkoblinger og bruker denne informasjonen til å analysere innkommende og utgående trafikk, i stedet for å inspisere hver pakke." I praksis betyr det at den ser etter SYN-en som åpner en tilkobling, husker at denne appen ba om et svar, og så lar den matchende SYN-ACK stille inn igjen; et svar som ikke samsvarer med noen utgående SYN blir droppet. Det er også slik en brannmur kan fortelle et normalt svar fra et uønsket tilkoblingsforsøk som kommer fra ingensteds, som er grunnlaget for å blokkere uønsket inngående trafikk.
Ingen av denne utvekslingen er kryptert av TCP selv; SYN, SYN-ACK og ACK er synlige i vanlig form for alle som ser på nettverksbanen, inkludert Wi-Fi-ruteren. Hva som er skjult eller ikke avhenger av laget over TCP, for eksempel TLS for en HTTPS-side, som kurset hvordan-internett-fungerer dekker separat.
Det viktigste
- TCP-tilkoblinger åpnes med et treveis håndtrykk: SYN, deretter SYN-ACK, deretter ACK, per RFC 9293.
- Først etter at håndtrykket er fullført, begynner de to sidene å utveksle ekte data.
- Å lukke en tilkobling er en toveis utveksling av FIN-segmenter, slik at bufrede data leveres før tilkoblingen avsluttes.
- En stateful brannmur sporer hvilke SYN-er som gikk ut, slik at den kan gjenkjenne og tillate samsvarende svar, og slippe uønskede.
- Selve håndtrykket er ikke kryptert; det er synlig for alt på nettverksbanen.
Test deg selv
1. Hva er riktig rekkefølge på TCP treveis håndtrykk?
- ACK, SYN, SYN-ACK
- SYN, SYN-ACK, ACK — Riktig.
- SYN-ACK, SYN, ACK
- FIN, SYN, ACK
RFC 9293 beskriver tilkoblingssiden som sender SYN først, den andre siden svarer med SYN-ACK, og tilkoblingssiden bekrefter med ACK.
2. Når begynner ekte applikasjonsdata å strømme over en TCP-tilkobling?
- Før SYN sendes
- Først etter at treveis håndtrykket er fullført — Riktig.
- Under SYN-ACK-trinnet
- Data flyter kontinuerlig uten håndtrykk
Håndtrykket eksisterer for å synkronisere sekvensnumre før hver side stoler nok på forbindelsen til å sende ekte data.
3. Hvordan bestemmer en stateful brannmur seg for å tillate en innkommende svarpakke?
- Den tillater alle innkommende pakker som standard
- Den sjekker om pakken samsvarer med en tilkobling denne enheten åpnet, husket fra den tidligere utgående SYN — Riktig.
- Den inspiserer pakkens innhold for søkeord
- Den ser bare på destinasjonsporten, aldri tilkoblingstilstanden
Cloudflare beskriver en stateful brannmur som en som "lagrer informasjon om åpne tilkoblinger" for å gjenkjenne legitime svar i stedet for å inspisere hver pakke fra bunnen av.
4. Er selve TCP-håndtrykket kryptert?
- Ja, alltid
- Nei, det er enkelt og synlig for alt på nettverksbanen — Riktig.
- Bare SYN er kryptert
- Bare på HTTPS-tilkoblinger
TCP gir bestilling og pålitelighet, ikke konfidensialitet. Kryptering, når den er tilstede, kommer fra et lag over TCP som TLS.
Prøv det med FireAI
Sett denne leksjonen ut i praksis på din egen Mac.
- Finn ut hvor en app sender data, på Verdenskartet — Se nøyaktig hvilket selskap og land én app stille snakker med.
- Regler: app, nettsted, domene, IP eller et område, for alltid eller til du starter på nytt — Skriv en regel like presis som én adresse eller like bred som et helt domene.
- Dyp granskning, uten å dekryptere noe — Få reelle detaljer om en sikker tilkobling uten at FireAI noensinne leser hva som er inni den.
Kilder
- RFC 9293: Transmission Control Protocol (TCP)
- Cloudflare Learning: What is TCP/IP?
- Cloudflare Learning: What is a Firewall?
Ta det i bruk på din Mac
Prøv alle funksjonene gratis i 17 dager, uten kort.