Route tabelElk device met een IP-adres dat een IP-netwerkpakketje naar een ander device met een IP adres wil sturen, bepaalt aan de hand van zijn interne route tabel via welke netwerkinterface dat het beste kan (die tabel kun je zien met het commando
route print in een cmd prompt/DOS box).
Lokaal of via routerAls de optimale route via een ethernet interface (bedraad of draadloos) loopt, zijn er twee mogelijkheden:
1) het doel IP-adres valt binnen het lokale subnet
2) het doel IP-adres valt buiten het lokale subnet
In geval 1 kan er direct,
via ethernet, mee worden gecommuniceerd. Het zendende device zal onderzoeken of het ethernet adres (ook wel MAC adres genoemd) van het doel IP-adres nog bekend is (in de ARP cache zit). Zo ja, dan wordt het IP-pakketje als een brief beschouwd en in een envelop gestopt met op de voorzijde het ethernet adres van het doel device (en op de achterzijde het afzender ethernet adres). Deze brief wordt via de ethernet interface de kabel op (of de lucht in) geschoten, waarna het netwerk verantwoordelijk is voor de aflevering.
ARP cacheDe ARP cache bevat relaties, elk bestaande uit 1 of meer IP adressen en 1 ethernet adres. Gebruikelijk is dat device entries in de ARP cache van het type "dynamisch" zijn. Dat wil zeggen dat het device ze na enige tijd (vaak 5 minuten) vergeet.
Net zoals een hosts file vaste relaties tussen domainnames en IP-adressen kan bevatten, zijn ook statische ARP entries mogelijk (hier bestaat geen specifiek bestand voor). Gebruikelijk is dit echter niet (voor end devices). In een cmd-prompt kun je op elk moment de inhoud van de ARP cache zien met het commando
arp -a.
ARP requestsAls een device een IP-pakket naar een "lokaal" device (binnen subnet) wil sturen, maar daar het ethernet adres niet (meer) van kent, zal het device een ARP-request uitsturen. Ook hiervoor wordt weer zo'n "brief" gemaakt, echter gericht aan ethernet adres FF-FF-FF-FF-FF-FF (een ethernetadres is 6 bytes lang en wordt hexadecimaal genoteerd, decimaal zou dit 255-255-255-255-255-255 zijn. Nb. 255 is de hoogste waarde die in een byte past). Als 192.168.0.20 het ethernet adres van 192.168.0.1 wil weten, staat in de brief die wordt verzonden:
Who has 192.168.0.1? Tell 192.168.0.20
Ethernet broadcast pakketElke ethernet interface (kaart) die een netwerkpakket met doeladres FF-FF-FF-FF-FF-FF ontvangt, hoort dit door te geven aan de IP-stack "erboven" (onderdeel van het besturingssysteem). Zo'n pakketje heet dan ook een "broadcast" pakket. Nb. het netwerk dient dit soort pakketjes bij elke PC en andere ethernet devices af te leveren.
Elk ontvangend device vraagt zich vervolgens af: ben ik dat, d.w.z. is dat mijn IP-adres? Zo ja, dan wordt een antwoord gemaakt en gestuurd (dat antwoord wordt
direct naar de aanvrager gestuurd, dit is geen broadcast pakket). In dat antwoord zit het ethernetadres van het doel apparaat, dat de aanvrager in zijn ARP-cache zal opslaan.
Communiceren met InternetIn geval 2) (doel IP-adres buiten subnet) kan niet direct via ethernet met het doeldevice worden gecommuniceerd. In dat geval stelt het zendende device, aan de hand van de route tabel, vast welke router (gateway) moet worden benaderd om de aflevering af te handelen. Zodra de router bekend is, wordt
daar het ethernetadres van opgezocht in de ARP-tabel. Zit dat er niet in, dan wordt het aangevraagd middels een ARP request. Vervolgens wordt het IP-pakketje naar de router gestuurd met de opdracht: zoek jij het maar uit (jij bent router en weet de weg verder op internet).
TV -> InternetHet kan zijn dat jouw TV regelmatig informatie met een server op internet wil uitwisselen. Daarvoor moet hij het ethernetadres van jouw router weten. Ik vermoed dat dit de ARP request pakketjes zijn die jij ziet in Wireshark, waarschijnlijk is er dus niets aan de hand.
Ethernet address poisoning attacksNiet fris is het als
afzender ethernet adressen worden vervalst. Als grote aantallen pakketjes met steeds wisselende (valse) afzender ethernet adressen worden verzonden, kunnen ARP caches "overlopen", maar vooral ook tabellen in netwerk
switches (waardoor ze als "hub" kunnen gaan werken - het voert te ver om hier nu op in te gaan). Thuis zul je zo'n aanval niet snel tegenkomen.
ARP spoofingWel kan een gehackte PC zich
voordoen als router, bijv. door eerder antwoord op een ARP-request te sturen dan de
echte router (ook kan zo'n gehackte PC
ongevraagd vervalste ARP antwoorden sturen die in ARP caches kunnen worden opgenomen). Daardoor kunnen andere devices denken dat ze pakketjes bestemd voor internet via die gehackte PC moeten sturen, waardoor een aanvaller bijv. wachtwoorden kan meelezen (dit heet een ARP spoofing attack, zie bijv.
https://en.wikipedia.org/wiki/ARP_spoofing).
Onzichtbare unicast pakketjes bestemd voor een andere deviceEr kunnen twee redenen zijn dat je met Wireshark op een PC
wel ARP requests ziet van andere devices (zoals je TV) naar je router, maar
niet de antwoorden. De eerste is dat netwerkapparatuur (switch-functionaliteit in dit geval) zoveel mogelijk "unicast" (tegenhanger van broadcast) pakketjes uitsluitend naar doeldevices stuurt. Met een gewone router (met ingebouwde switch) is hier niet simpel iets aan te doen. Uitzondering: als je een Fritz!Box hebt kun je
die laten sniffen (zie
https://www.security.nl/posting/410452/Wireshark+gebruiken+voor+traffic+sniffen+andere+pc#posting410458).
Promiscuous modeDe tweede reden is dat een netwerkinterface, by default, unicast pakketjes met een
ander MAC adres dan van hemzelf, niet doorzet naar "software erboven", inclusief Wireshark. Veel netwerkinterfaces ondersteunen echter "promiscuous mode" waarmee ze
alle ontvangen pakketjes doorzetten (zie de capture options in Wireshark om dit aan te zetten).