Hoppa till innehållet
AI-grafen
E· Universitetdatavetenskap· ca 60 min· utvecklande· verifierad 2026-09-20

Nätverk — grunderna

Kunna förklara IP, DNS, TLS och latens — och varför en labbcontainer utan nät är säker.

Förkunskaper

Intuition

Vad som händer vid ett API-anrop:

  1. DNS: api.example.com → 93.184.216.34. Ett uppslag, ofta cachat.
  2. TCP: trevägshandskakning med servern (1 rundtur).
  3. TLS: certifikat verifieras, nycklar utbyts (1–2 rundturer). Nu är trafiken krypterad.
  4. HTTP: förfrågan skickas, svaret kommer.

Latens = summan av rundturerna plus serverns tid. En rundtur Stockholm–Frankfurt är ~25 ms; Stockholm–Kalifornien ~150 ms. En ny anslutning kostar 3–4 rundturer — därför återanvänder man anslutningar (httpx.AsyncClient som lever, keep-alive). Det är ofta den enskilt största latensvinsten i en klient.

Bandbredd ≠ latens. Mer bandbredd hjälper stora filer; latens sätts av avstånd och ljusets hastighet.

Formellt

Isolering av nätverk som säkerhetsåtgärd. AI-grafens labbcontainrar körs med --network none. Vad det betyder konkret:

Utan nät kan koden inteFöljd
slå upp DNSingen kontakt med namngivna tjänster
öppna TCP/UDP-anslutningaringen exfiltrering av data
nå metadatatjänster (169.254.169.254)inga molnnycklar kan stjälas
nå andra containraringen sidledsrörelse
hämta paketinget kan installeras vid körning

Det är den enskilt starkaste åtgärden mot skadlig kod i en sandlåda, eftersom nästan all skada kräver att något lämnar maskinen eller att något extra hämtas in.

Övriga lager i plattformen (ADR-003): läsbart rotfilsystem, tmpfs för skrivbart, uid 65534, cap-drop ALL, no-new-privileges, cpu-/minnes-/pid-tak och timeout. Nätisoleringen är den som tools/isolation_check.py verifierar vid varje CI-körning — just för att den är så central.

Kod

import socket, time, httpx

print(socket.gethostbyname("example.com"))          # DNS-uppslag

# Återanvänd anslutning: mät skillnaden
with httpx.Client() as c:
    for i in range(3):
        t = time.perf_counter(); c.get("https://example.com"); print(i, round((time.perf_counter()-t)*1000))
# 0 210   ← DNS + TCP + TLS
# 1  35   ← återanvänd anslutning
# 2  34
# Verifiera isolering i en sandlåda
docker run --rm --network none python:3.12-slim \
  python -c "import socket; socket.create_connection(('1.1.1.1', 443), timeout=3)"
# OSError: [Errno 101] Network is unreachable      ← precis vad som ska hända

Behärskning innebär

  • Förklarar IP, DNS, TLS och latens
  • Motiverar varför en labbcontainer utan nät är säker

Logga in för att göra övningarna och bygga upp din behärskning.

Källor

Alla källor och licenser