Network connections
There is a whole array of devices between you and the target server daemon, so any of those can be slow. Usually it looks like this from your browser to the website:
- Browser
- Network Manager
- Operating System (OS)
- Network Card
- Cable / WiFi (aka WLAN)
- Switch or Access Point
- Router
- Modem
- Wall Plug
- box in basement (either active, like with most DOCSIS installations, or passive with VDSL)
- copper or fibre cable
- box on street containing ISP network devices
- fibre channel to local ISP backbone
- local backbone network devices
- more centralised peering point
- Central Internet Exchange (CIX)
- another CIX
- peering point
- data centre uplink
- data centre core modem
- core router
- core switch
- rack switch
- hypervisor's (HV) network card
- HV OS and virtualisation software (e.g. XCP-ng)
- virtual machine (VM) network interface
- VM OS
- server daemon for reverse proxy on VM (e.g. HAProxy, Envoy)
- VM OS, network interface, HV, rack switch, another HV, another VM's network interface and OS
- web server daemon (e.g. nginx, Apache2)
- backend server daemon (e.g. Apache Tomcat, node.js, PHP FPM, Django, Golang binary)
- the actual application's routing library (e.g. Nio, Gorilla)