Det är inte så konstigt som du tror.
Datorerna och skrivaren pratar TCP/IP över Ethernet. Ethernet är det som de flesta switchar klarar av att prata och den går bara över länklagret, dvs det är det som dina nätverkskort pratar. Ovanpå det kör sedan TCP/IP, som alltså oftast tolkas av operativsystemet och inte av hårdvaran. Ethernet och IP har olika adresstyper. Ethernet har globala 48 bitar långa adresser som sätts i fabriken och ser ut ungefär såhär 01:23:45:67:89:ab. IP har 32 bitar långa adresser som är beroende av vilket nät man är kopplad till. De ser ut ungefär såhär: 192.168.19.17. Dessa översätts mellan varandra med något som kallas ARP (Adress resolution protocol).
Ethernet klarar alltså av att prata med alla maskiner som de har elektrisk kontakt med, och bryr sig inte om hur adressen ser ut medan TCP/IP är byggt för stora nät och vill veta vilken väg den ska ta genom nätet för att komma fram. Detta kallas även för routing.
Din "internetdator" har säkert fått en adress av din nätleverantör (ISP) som ser ut ungefär såhär "82.110.42.16" medan din andra dator och din skrivare inte fått någon adress alls. De vet alltså inte var de ska skicka paketen.
Dett kan man lösa på olika sätt. Endera skaffar du en router, som så ser till att du har privata adresser (192.168.x.x, eller 10.x.x.x) på "insidan" och operatörens adress på utsidan. Du kommer då skicka alla paket till routern som bestämmer om paketen ska vara kvar på "insidan" eller om de ska skickas ut på SSI (stora stygga internet).
Den andra lösningen är att du sätter ett extra nätverkskort i din internetdator så att den kan agera som router för ditt privata nät på insidan. Det enklaste här är att du dessutom sätter upp en DHCP-server på "internetdatorn" så att skrivare och den andra datorn kan få adresser automatiskt (DHCP står för Dynamic Host Configuration Protocol).
Du kan även sätta upp hostroutes och ip-alias på dina maskiner, men det är lite meckigare. Men det ska finnas tutorials på nätet om du letar.