I’m wondering if I have a computer in subnet A with IP address, and a computer with IP address in a different subnet.

Both networks are connected with a router. If I want now to send a package from compputer A to computer B, I’ll have to use ARP to get their MAC address to send the frame (supposing ARP cache is empty).

My question is now: What would this ARP request look like, I have two possible methodes I can think of:

  1. Computer A, sees that the IP address of computer B is outside his own subnet. It decides to send the package to his default gateway (router) and sends an ARP request with the IP adress of the router. Next: the router replies with his mac Address and the frame is send to the router, which will take care of the frame.

  2. Computer A, is "stupid" and sends an ARP request with the IP address of B. The router is smart enough and sees that the IP address is in it's routeingtable. And replies with his own MAC address. Next, computer A sends the frame to the router, thinking it is computer B. The router sends the package to computer B.

The downside I see with the second approach, is that when you surf to google, it will do an arp request with the IP address of Google. The router will reply with it’s own, since it knows how to get to Google. The next time you surf to another website you will have to do the same thing again and send an arp request with the IP of that website. This will result in many arp requests (one for every website). And the arp cache will get very big.

I really don’t konw the answer. I found two YouTube videos—this one and this one—each telling me different things:

I hope somebody can help me.

  • I believe this can be done with arproxy but i will have to understand better what you are trying to achieve... – Jorge Aldo Mar 27 '15 at 3:32
  • ah, its already answered, its method A – Jorge Aldo Mar 27 '15 at 3:34
  • 2 couldn't work (in general, it could if specifically configured in a carefully controlled environment). How does the router know it has the best route to B? How do you avoid routing loops? – David Schwartz Jun 10 '15 at 20:22

It's "method A". ARP requests for addresses outside the subnet won't be sent at all. The only ARP request will be for the gateway's IP address.

If you just set up for computer A and do not do anything else, it will have a routing table like this:

  • to device eth0
  • to gateway device eth0

In such a routing table, the first entry declares that the is local – accessible over eth0 without a gateway – so attempting to contact would indeed send an ARP request for

However, the second entry has a gateway defined, so it is assumed to be non-local, and the OS does not bother sending ARP requests for these other IP addresses, because it already knows it cannot reach them. It will therefore directly send an ARP request for the gateway's address and nothing else.

(You can verify this by just looking at the ARP cache; ip neigh or arp -a depending on operating system; or by using a packet capture tool like tcpdump or Wireshark.)

In most operating systems, you can, of course, add routes explicitly telling the OS that certain subnets are local (e.g. ip route add dev eth0).

  • this is approach A, right? Sorry, didn't see the methode A thing, Thanks! – user3673517 Jun 4 '14 at 7:30

Both Address Resolution Protocol and Neighbor Discovery Protocol (IPv6) are used only when no other route but an interface route matches. If there is a matching route, be it default or explicit, the specified gateway will be contacted. Resolving the gateway address still uses ARP/NDP, of course.

  • sorry, I don't understand your answer. Does it use the methode A or B ? – user3673517 Jun 4 '14 at 7:28

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.