Netwerken & Architectuur¶
Om een applicatie te bouwen die communiceert met een AI, moet je eerst begrijpen hoe computers met elkaar praten. In de wereld van het web noemen we dit de Client-Server architectuur.
Client-Server Concept¶
De termen “Client” en “Server” verwijzen naar specifieke programma’s of machines die een bepaalde rol spelen in de communicatie.
De Client is de vrager (vaak een script in een webbrowser). De Server is de verlener.
Soms leven de Client en Server op dezelfde machine:
graph LR
subgraph Jouw Computer
A[Client: Python Script] -- "HTTP Request" --> B[Server: Ollama]
B -- "JSON Response" --> A
end
Maar soms leven de Client en Server op verschillende machines (laptop, desktop, telefoon):
graph TD
subgraph Jouw Computer
A[Client: Web browser]
end
subgraph Andere Computer
B[Server: LLM]
end
A -- "HTTP Request" --> B
B -- "JSON Response" --> A
Adressen en Poorten¶
Elke server luistert op een specifiek IP-adres en een Poort.
- IP-adres: De locatie van de computer (bijv. 127.0.0.1 voor je eigen machine).
- Poort: De specifieke “deur” naar een applicatie (bijv. :11434 voor AI, :8000 voor FastAPI).
Localhost
127.0.0.1 en localhost zijn synoniemen. Het is een speciaal adres dat naar jouw eigen computer wijst.
Firewalls, tunnels en VPNs¶
Je mag niet zomaar vanaf elke computer verbinding maken met elke poort op elke andere computer. Firewalls blokkeren vaak inkomende verbindingen.
Firewalls
Een firewall is een beveiligingssysteem dat netwerkverkeer controleert en bepaalt of het toegestaan is of niet. Het kan inkomende verbindingen blokkeren om je computer te beschermen tegen ongewenste toegang.
Om een verbinding mogelijk te maken, kun je gebruik maken van tunnels of VPNs. Deze tools creëren een beveiligde verbinding tussen twee machines, waardoor je toch kunt communiceren ondanks de firewall.
- Tunnels: Een tunnel is een manier om netwerkverkeer van de ene machine naar de andere te leiden, vaak via een beveiligde verbinding. Tools zoals ngrok kunnen een tunnel maken van je lokale machine naar het internet, waardoor je een publieke URL krijgt die naar je lokale server verwijst.
- VPNs: Een Virtual Private Network (VPN) creëert een beveiligde verbinding tussen jouw machine en een netwerk, waardoor je toegang krijgt tot bronnen op dat netwerk alsof je er fysiek aanwezig bent. Een bestaande service zoals Tailscale kan een VPN-verbinding opzetten tussen jouw machine en de server, waardoor je direct verbinding kunt maken zonder je zorgen te maken over firewalls.