Transmission Control Protocol (TCP) är ett av huvudprotokollen i Internet Protocol Suite. TCP är en del av den populära kombinationen "TCP/IP" som används på Internet. Internetprotokollet, eller IP, ser till att data på Internet kommer till rätt ställe. TCP ser sedan till att uppgifterna placeras i rätt ordning och att inga uppgifter saknas. TCP hjälper också till att kontrollera trafiken på Internet så att den inte blir överbelastad. Dessa protokoll, som är ungefär som språk som datorer använder, är utformade så att alla datorer och alla program (t.ex. webbläsare eller e-postklienter) kan använda dem.
Hur TCP fungerar i korthet
TCP är ett anslutningsorienterat protokoll som bygger en logisk förbindelse mellan två ändpunkter innan data överförs. Förbindelsen etableras med en så kallad trefas-handshake (three‑way handshake) där sändare och mottagare byter SYN- och ACK-meddelanden för att synkronisera startsekvensnummer och bekräfta att båda parter är redo. När överföringen är klar stängs förbindelsen ner med en liknande utväxling av FIN- och ACK-meddelanden.
Viktiga egenskaper och mekanismer
- Pålitlighet: TCP använder sekvensnummer och bekräftelser (ACK) för att garantera att data levereras helt och i rätt ordning. Förlorade paket upptäcks och skickas om.
- Ordning: Segment som anländer i fel ordning sorteras om innan de lämnas till applikationen.
- Flödeskontroll: TCP använder ett fönster (window) som mottagaren annonserar för att undvika att sändaren överväldigar mottagarens buffert.
- Kongestionskontroll: TCP har algoritmer som slow start, congestion avoidance, fast retransmit och fast recovery som anpassar sändningshastigheten efter nätets kapacitet för att minska överbelastning.
- Felkontroll: Varje TCP-segment innehåller en checksum för att upptäcka överföringsfel.
- Multiplexering via portar: TCP använder portnummer för att skilja mellan olika tjänster och anslutningar på samma värd (t.ex. HTTP på port 80, HTTPS på port 443, SSH på 22).
Segmentstruktur och viktiga fält
Ett TCP-segment innehåller bland annat följande fält: käll- och destinationsport, sekvensnummer, bekräftelsenummer, fönsterstorlek, kontrollflaggor (SYN, ACK, FIN, RST, PSH, URG), checksum och eventuellt optionsfält (t.ex. för maximum segment size och fönsterskalning). Optionsfältet används för att optimera prestanda, t.ex. vid höga latens- och bandbreddsprodukter.
Användningsområden och jämförelse med UDP
TCP används när pålitlighet och ordning är viktigare än låg fördröjning, exempelvis för webbtrafik (HTTP/HTTPS), e‑post (SMTP/IMAP/POP), filöverföring (FTP) och fjärrterminaler (SSH). För applikationer som kräver låg latens eller kan hantera förlust (t.ex. realtidsljud, video eller vissa spel) används ofta UDP, ett enklare, anslutningslöst protokoll som inte erbjuder samma garantier.
Praktiska aspekter och begränsningar
- Prestanda: TCP:s säkerhetsmekanismer innebär overhead och kan introducera fördröjning, särskilt vid dålig nätkvalitet eller vid många paketförluster.
- NAT och brandväggar: NAT och vissa brandväggar kan påverka TCP-anslutningar (t.ex. timeouts, hantering av halvöppna anslutningar).
- Säkerhet: TCP i sig krypterar inte trafik — därför används ofta TLS/SSL ovanpå TCP för att skydda konfidentialitet och integritet.
- Attacker: TCP är känsligt för vissa attacker som SYN-floods; moderna system använder mitigeringstekniker (SYN cookies, rate limiting).
Sammanfattning
TCP är ett centralt protokoll i Internet-sviten som ger pålitlig, ordnad och flödesstyrd leverans av data mellan applikationer. Genom kombinationen av sekvensnummer, bekräftelser, flödes- och kongestionskontroll är TCP väl lämpat för många dagliga Internettjänster där korrekt leverans är viktigare än minimal fördröjning.