Een router is simpelweg een apparaat met 1(!) of meer interfaces, dat netwerkverkeer naar andere netwerken kan doorsturen. Voorwaarde is een netwerkprotocol dat meerdere unieke netwerken kent, zoals TCP/IP en IPX/SPX. Een protocol als Netbeui is niet routeerbaar.
Host1 (machine in een netwerk) wil een pakketje sturen naar host2. Aan de hand van het adres van host2, z'n eigen adres en het mask, bepaalt host1 of host2 op hetzelfde netwerk zit of niet. In het laatste geval zal host1 het pakketje sturen naar z'n gateway, de router.
De router heeft in z'n geheugen een tabel met alle hem bekende netwerken, en wat de volgende router is om daar te komen. Het destination adres (het adres van host2) van het pakketje van host1 wordt met die vergeleken met die tabel, en verder gestuurd. Staat het niet in z'n tabel, en is niets gespecificeerd voor dat soort gevallen (een default route), dan zal het pakketje gedrop worden. Dit gaat zo door tot de plaats van bestemming al dan niet is bereikt.
Da's in basis hoe een router werkt. IRL krijg je nog te maken met filters, costs, routing protocollen en dergelijke, maar de basis blijft hetzelfde. Een andere functie die (sommige) routers kunnen, is NAT/PAT (Network/Port Address Translation).
In sommige omstandigheden kan het netwerk achter de router, bijvoorbeeld een thuisnetwerkje, niet bekend zijn op het outside netwerk. In zo'n geval kan een router de adressen vertalen, zo dat het voor de buitenwereld lijkt alsof al het verkeer van de router afkomstig is, in plaats van de hosts daar achter. De router zelf houdt dan bij welk verkeer er van wie afkomstig is, en stuurt dat door.
Root don't mean a thing, if you ain't got that ping...