Lektion 3 av 4 · 7 min
TCP-handslaget och en anslutnings liv
Hur två datorer kommer överens om att prata innan någon av dem skickar riktig data, hur de avslutar konversationen och vad en brandvägg som tittar i mitten faktiskt ser.
Innan din Mac skickar en enda byte av en webbsidaförfrågan har den redan utbytt tre korta meddelanden med servern. Det utbytet, TCP trevägshandskakning, är det som gör TCP:s tillförlitlighetslöften från föregående lektion till en faktisk, spårbar anslutning mellan två maskiner.
Tre meddelanden före det första ordet
RFC 9293, den nuvarande TCP-specifikationen, beskriver processen som en synkroniserad växel: "synkroniseringen kräver att varje sida skickar sitt eget initiala sekvensnummer och får en bekräftelse på det som bekräftelse från den fjärranslutna TCP-peeren."
- SYN. Enheten som öppnar anslutningen skickar ett segment med SYN-flaggan inställd, med ett startsekvensnummer.
- SYN-ACK. Den andra sidan svarar med sin egen SYN, plus en bekräftelse på det första numret.
- ACK. Den första enheten bekräftar det svaret. RFC 9293 noterar att "eftersom steg 2 och 3 kan kombineras i ett enda meddelande kallas detta trevägs (eller tre meddelanden) handskakning." När det är klart, räknar båda sidor anslutningen som ETABLISTERAD och börjar skicka riktiga data.
Cloudflares utbildningscenter ger en enkelspråkig version av samma idé, med ett e-postmeddelande som exemplet: "först skickar källan ett SYN 'initial request'-paket till målservern för att starta dialogen. Sedan skickar målservern ett SYN-ACK-paket för att godkänna processen. Slutligen skickar källan ett ACK-paket till målet, efter vilket meddelandet kan skickas för att bekräfta meddelandet."
Avsluta en anslutning rent
Att stänga är mer medvetet än att öppna. RFC 9293 förklarar att "den normala TCP-stängningssekvensen levererar buffrad data på ett tillförlitligt sätt i båda riktningarna" innan anslutningen avslutas: varje sida skickar ett FIN-segment när den inte har mer data att skicka, den andra sidan bekräftar det, och först när båda riktningarna har avslutats stängs anslutningen helt. En kort vänteperiod (TIME-WAIT) följer, så att eventuella herrelösa, försenade paket från den gamla anslutningen inte kan förväxlas med en del av en ny.
Vad en brandvägg i mitten ser
En tillståndsfull brandvägg, den typ som är inbyggd i de flesta routrar och i själva macOS, behöver inte inspektera varje paket för att fatta ett beslut. Cloudflares förklaring av brandväggar beskriver det så här: det "sparar information om öppna anslutningar och använder denna information för att analysera inkommande och utgående trafik, snarare än att inspektera varje paket." I praktiken betyder det att den tittar efter SYN som öppnar en anslutning, kommer ihåg att den här appen bad om ett svar och sedan tyst låter den matchande SYN-ACK komma in igen; ett svar som inte matchar någon utgående SYN tas bort. Det är också så en brandvägg kan skilja ett normalt svar från ett oönskat anslutningsförsök som kommer från ingenstans, vilket är grunden för att blockera oönskad inkommande trafik.
Inget av detta utbyte är krypterat av TCP själv; SYN, SYN-ACK och ACK är synliga i vanlig form för alla som tittar på nätverksvägen, inklusive din Wi-Fi-router. Vad som är dolt eller inte beror på lagret ovanför TCP, till exempel TLS för en HTTPS-sida, som kursen hur-internet-fungerar täcker separat.
Viktigt att minnas
- TCP-anslutningar öppnas med en trevägshandskakning: SYN, sedan SYN-ACK, sedan ACK, enligt RFC 9293.
- Först efter att handskakningen är klar börjar de två sidorna utbyta riktiga data.
- Att stänga en anslutning är ett tvåvägsutbyte av FIN-segment så buffrad data levereras innan anslutningen avslutas.
- En tillståndsfull brandvägg spårar vilka SYN:er som gick ut så att den kan känna igen och tillåta matchande svar och släppa oönskade.
- Själva handslaget är inte krypterat; det är synligt för allt på nätverksvägen.
Testa dig själv
1. Vilken är den korrekta ordningen på TCP trevägshandskakning?
- ACK, SYN, SYN-ACK
- SYN, SYN-ACK, ACK — Rätt.
- SYN-ACK, SYN, ACK
- FIN, SYN, ACK
RFC 9293 beskriver den anslutande sidan som skickar SYN först, den andra sidan svarar med SYN-ACK och den anslutande sidan bekräftar med ACK.
2. När börjar riktig applikationsdata flöda över en TCP-anslutning?
- Innan SYN skickas
- Först efter att trevägshandslaget är klart — Rätt.
- Under SYN-ACK-steget
- Data flödar kontinuerligt utan handskakning
Handskakningen existerar för att synkronisera sekvensnummer innan någon sida litar tillräckligt på anslutningen för att skicka riktig data.
3. Hur beslutar en brandvägg att tillåta ett inkommande svarspaket?
- Det tillåter alla inkommande paket som standard
- Den kontrollerar om paketet matchar en anslutning som denna enhet öppnade, ihågkommen från den tidigare utgående SYN — Rätt.
- Den inspekterar paketets innehåll efter nyckelord
- Den tittar bara på destinationsporten, aldrig anslutningstillståndet
Cloudflare beskriver en tillståndsfull brandvägg som en som "sparar information om öppna anslutningar" för att känna igen legitima svar snarare än att inspektera varje paket från början.
4. Är själva TCP-handskakningen krypterad?
- Ja, alltid
- Nej, det är enkelt och synligt för allt på nätverksvägen — Rätt.
- Endast SYN är krypterad
- Endast på HTTPS-anslutningar
TCP tillhandahåller beställning och tillförlitlighet, inte konfidentialitet. Kryptering, när den finns, kommer från ett lager ovanför TCP som TLS.
Testa det med FireAI
Omsätt den här lektionen i praktiken på din egen Mac.
- Ta reda på var en app skickar data, på Världskartan — Se exakt vilket företag och land en app tyst pratar med.
- Regler: app, webbplats, domän, IP eller ett intervall, för alltid eller tills du startar om — Skriv en regel lika precis som en adress eller lika bred som en hel domän.
- Djup granskning, utan att dekryptera något — Få riktiga detaljer om en säker anslutning utan att FireAI någonsin läser vad som finns inuti den.
Källor
- RFC 9293: Transmission Control Protocol (TCP)
- Cloudflare Learning: What is TCP/IP?
- Cloudflare Learning: What is a Firewall?
Omsätt det på din Mac
Prova alla funktioner gratis i 17 dagar, inget kort behövs.