TCP/IP: vad är det, protokollstack och dataöverföring

Författare: IT Sectr Publicerad: 2026-03-06 Lästid: 8 min

TCP/IP är en protokollstack som utgör grunden för internet och de flesta datornätverk. Den kombinerar TCP-protokollet, som ansvarar för tillförlitlig dataleverans, och IP, som säkerställer routning av paket mellan noder. Enligt data från IETF RFC 1180 (2024) bearbetar TCP/IP-stacken över 80% av den globala nätverkstrafiken, inklusive mobila och webbapplikationer. Protokollstacken bestämmer hur data paketeras, adresseras och överförs mellan enheter i nätverket.

Huvudpunkter

  • TCP/IP är en protokollstack som kombinerar TCP (transport) och IP (routning) för dataöverföring i nätverk
  • Fyra lager i modellen: applikation, transport, nätverk och länk — varje lager löser sin egen uppgift
  • TCP garanterar leverans, paketordning och felkontroll genom bekräftelser och återsändningar
  • IP tillhandahåller routning — val av paketets väg från avsändare till mottagare via mellanliggande noder
  • Förståelse av TCP/IP är nödvändig för utveckling av nätverksapplikationer, felsökning av anslutningar och prestandaoptimering

Vad är TCP/IP?

TCP/IP (Transmission Control Protocol / Internet Protocol) är en protokollstack som utvecklades på 1970-talet för ARPANET och blev de facto-standard för det globala internetnätverket. Den bestämmer hur data delas upp i paket, adresseras, överförs och sätts samman hos mottagaren.

TCP/IP-arkitekturen är byggd på en flerskiktsprincip där varje lager abstraherar specifika funktioner. Applikationslagret arbetar med applikationsdata, transportlagret säkerställer tillförlitlighet, nätverkslagret hanterar routning och länklagret hanterar överföring via det fysiska mediet. Modularitet gör det möjligt att byta ut protokoll inom ett lager utan att ändra angränsande lager.

Inom mobilutveckling används TCP/IP av varje applikation som utför nätverksförfrågningar. Biblioteken URLSession, OkHttp, AFNetworking och Alamofire arbetar ovanpå denna stack och döljer detaljerna kring paketering och routning för utvecklaren. Att förstå TCP/IP är dock nödvändigt för prestandaoptimering: konfigurering av TCP-parametrar via URLSessionConfiguration gör det möjligt att hantera timeout, underhålla HTTP Persistent Connections och ställa in proxy för företagsmiljöer.

Förståelse av TCP/IP är nödvändig för att diagnostisera nätverksproblem: om applikationen inte kan ansluta till servern kan problemet finnas på vilket lager som helst i stacken — från den fysiska kanalen till applikationsprotokollet. Verktyg som tcpdump, Wireshark och Charles Proxy gör det möjligt att analysera trafik på varje lager och hitta flaskhalsar. För mobilutvecklare tillhandahåller Xcode en Network Debug Dashboard och Android Studio en Network Inspector för realtidsanalys av TCP-anslutningar.

Lagren i TCP/IP-modellen

TCP/IP-modellen omfattar fyra lager, som var och en utför strikt definierade funktioner vid dataöverföring. Förståelse av denna hierarki är nödvändig för att diagnostisera nätverksproblem och optimera applikationer.

Applikationslagret

På applikationslagret arbetar protokoll som applikationer direkt interagerar med: HTTP, HTTPS, FTP, SMTP, DNS, WebSocket. Detta lager formaterar data i ett format som är begripligt för applikationen och skickar det till transportlagret. Utvecklare av mobila applikationer arbetar på detta lager via nätverksbibliotek.

Transportlagret

Transportlagret säkerställer dataöverföring mellan applikationer på olika enheter. Huvudprotokoll: TCP (tillförlitlig överföring med bekräftelse) och UDP (snabb överföring utan garantier). TCP lägger till avsändarens och mottagarens port till data, hanterar paketordning och kontrollerar nätverksöverbelastning.

Nätverks- och länklagret

Nätverkslagret implementeras av IP-protokollet, som bestämmer adressering (IPv4, IPv6) och paketroutning. Varje paket innehåller avsändarens och mottagarens IP-adress, och routrar på överföringsvägen beslutar om nästa nod baserat på routingtabeller. IPv4 använder 32-bitars adresser (cirka 4,3 miljarder) och IPv6 använder 128-bitars adresser, vilket löser problemet med adressutarmning.

Länklagret arbetar med det fysiska överföringsmediet: Ethernet, Wi-Fi, Bluetooth. Detta lager omvandlar paket till signaler och vice versa, hanterar åtkomst till överföringsmediet via MAC-adresser och upptäcker fel på fysisk nivå med hjälp av ramkontrollsummor (FCS).

På länklagret arbetar protokoll som ARP (Address Resolution Protocol), som omvandlar IP-adresser till MAC-adresser för enheter i det lokala nätverket, och PPP (Point-to-Point Protocol), som används i VPN-anslutningar och mobila dataöverföringsnätverk.

LagerProtokollFunktion
ApplikationHTTP, HTTPS, DNS, FTP, WebSocketFormatering av applikationsdata
TransportTCP, UDPÖverföring mellan applikationer, felkontroll
NätverkIP, ICMP, ARPRoutning och adressering av paket
LänkEthernet, Wi-Fi, PPPÖverföring via fysiskt medium

Hur TCP-protokollet fungerar

TCP (Transmission Control Protocol) är ett av huvudprotokollen i transportlagret. Det säkerställer tillförlitlig, ordnad och verifierbar leverans av en byteström mellan applikationer. Före dataöverföring etablerar TCP en anslutning genom en trevägshandskakning.

Trevägshandskakningen (three-way handshake) börjar med att klienten skickar ett SYN-paket. Servern svarar med ett SYN-ACK-paket och bekräftar mottagandet. Klienten slutför handskakningen med ett ACK-paket, varefter dataöverföringen börjar. Denna process garanterar att båda parter är redo för utbyte och synkroniserade när det gäller sekvensnummer.

python
import socket

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect(('example.com', 80))
sock.send(b'GET / HTTP/1.1\r\nHost: example.com\r\n\r\n')
response = sock.recv(4096)
print(response.decode())
sock.close()

I exemplet skapas en TCP-socket av typen SOCK_STREAM, som automatiskt utför trevägshandskakningen vid anrop av connect. Metoden send skickar en HTTP-förfrågan, recv tar emot svaret. Efter slutförande skickar close ett FIN-paket för korrekt stängning av anslutningen.

TCP-server med klienthantering

Låt oss titta på ett exempel på en TCP-server i Python som accepterar flera klienter via trådar. Varje anslutning bearbetas i en separat tråd, vilket gör det möjligt att betjäna många klienter samtidigt utan att blockera huvudloopen.

python
import socket
import threading

def handle_client(conn, addr):
    print(f'Klient ansluten: {addr}')
    with conn:
        while True:
            data = conn.recv(1024)
            if not data:
                break
            conn.sendall(data.upper())
    print(f'Klient {addr} frånkopplad')

server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind(('0.0.0.0', 9090))
server.listen(5)
print('TCP-server startad på port 9090')

while True:
    conn, addr = server.accept()
    thread = threading.Thread(target=handle_client, args=(conn, addr))
    thread.start()

TCP-servern bearbetar varje anslutning i en separat tråd genom att anropa accept i en oändlig loop. Funktionen handle_client tar emot data, konverterar dem till versaler och skickar tillbaka via sendall. När recv-loopen avslutas (när klienten har stängt anslutningen) avslutas tråden och socketen stängs automatiskt. I mobila applikationer används sådant lågnivåarbete med sockets inte direkt — mobila HTTP-bibliotek hanterar anslutningar via trådpooler och återanvänder automatiskt TCP-anslutningar.

Skillnader mellan TCP och UDP

Valet mellan TCP och UDP är ett av de viktigaste besluten vid design av nätverksinteraktion. TCP garanterar leverans, ordning och dataintegritet till priset av extra fördröjning. UDP offrar tillförlitlighet för minimal fördröjning och lägre belastning på kanalen.

EgenskapTCPUDP
AnslutningEtablerar (handshake)Etablerar inte
TillförlitlighetGarantierar leveransGarantierar inte
PaketordningOrdningIngen ordning
HastighetLägreHögre
AnvändningWebb, e-post, filerStreaming, spel, DNS

För mobila applikationer beror protokollvalet på scenariot: REST-API och datanedladdning kräver TCP, medan videosamtal och onlinespel drar nytta av UDP:s hastighet. Vissa applikationer kombinerar båda protokollen — TCP för kontroll och UDP för mediaströmning. Det moderna QUIC-protokollet, som fungerar ovanpå UDP och används i HTTP/3, kombinerar fördelarna med båda metoderna och stöds redan automatiskt på iOS och Android via URLSession.

Kodexempel för TCP/IP

Låt oss titta på ett exempel på en TCP-klient i Python med felhantering och timeout. Denna metod används i mobila applikationer för tillförlitlig anslutning till servern.

python
import socket
import sys

def tcp_client(host, port):
    try:
        sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        sock.settimeout(10)
        sock.connect((host, port))
        print(f'Ansluten till {host}:{port}')
        return sock
    except socket.error as err:
        print(f'Anslutningsfel: {err}')
        sys.exit(1)

sock = tcp_client('api.example.com', 443)
sock.close()

Funktionen tcp_client tar emot host och port, skapar en socket med en timeout på 10 sekunder och försöker ansluta. Vid anslutningsfel — till exempel att servern inte är tillgänglig eller blockerad av brandvägg — kastas ett undantag med en beskrivning av problemet. I mobila applikationer är anslutningstimeout kritisk: för kort leder till falska fel på långsamma nätverk, för lång leder till att gränssnittet fryser. Rekommenderat värde för mobila nätverk är 10–15 sekunder för timeoutIntervalForRequest och 30–60 sekunder för timeoutIntervalForResource i URLSession-konfigurationen.

Vanliga frågor

Vad är skillnaden mellan TCP och IP?

IP ansvarar för routning — leverans av paketet från avsändare till mottagare via mellanliggande noder. TCP säkerställer tillförlitlig sammansättning av data: kontrollerar ordning, verifierar integritet och begär återsändning av förlorade paket. Tillsammans bildar de TCP/IP-stacken.

Vilken port använder TCP/IP som standard?

TCP/IP använder ingen fast port — porten tilldelas av applikationen. Standardportar: 80 (HTTP), 443 (HTTPS), 22 (SSH), 25 (SMTP). Port 443 är den viktigaste för säker webbtrafik i mobila applikationer.

Vad är en TCP-anslutning?

En TCP-anslutning är en logisk kanal mellan två applikationer, etablerad genom en trevägshandskakning (SYN, SYN-ACK, ACK). Anslutningen identifieras av paret (IP-adress, port) för avsändare och mottagare. Handskakningen garanterar att båda parter är redo för datautbyte.

Kan TCP/IP användas i mobila applikationer utan internet?

Ja, TCP/IP fungerar i lokala nätverk (LAN) utan internetåtkomst. Enheter ansluter via Wi-Fi Direct, Bluetooth PAN eller Ethernet och utbyter data via lokala IP-adresser. Lokalt TCP/IP används i IoT-enheter och peer-to-peer-applikationer.

Varför är TCP långsammare än UDP?

TCP är långsammare på grund av extra mekanismer: trevägshandskakning före överföring, bekräftelse av varje paket, återsändning av förlorade segment, överbelastningskontroll. UDP skickar datagram utan dessa kontroller, vilket minskar fördröjningen till priset av möjliga förluster.

Sammanfattning

  • TCP/IP — den grundläggande protokollstacken som möjliggör dataöverföring på internet och i lokala nätverk
  • Fyra lager (applikation, transport, nätverk, länk) abstraherar olika aspekter av överföring
  • TCP garanterar tillförlitlig leverans med felkontroll och bekräftelser
  • IP ansvarar för paketroutning och adressering av noder i nätverket
  • Val av TCP eller UDP beror på kraven: tillförlitlighet kontra hastighet
  • Varje mobil applikation som utför nätverksförfrågningar använder TCP/IP-stacken

Vi utvecklar en mobil applikation nyckelfärdigt

IT Sectr skapar iOS- och Android-applikationer för startups och företag sedan 2017. Vi ger dig råd och föreslår den bästa lösningen.

Diskutera projektet

Läs också