Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

I'm wondering if I have a computer in subnet A with IP address 192.168.123.1, and a computer with IP address 192.168.124.1 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: how will this ARP request look like, I have two possible methodes I can think of:

A) 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.

B) 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 each telling me different things: https://www.youtube.com/watch?v=A_qgQRQ4F5Q

https://www.youtube.com/watch?v=V3tE9ZrFJq0

I hope somebody can help me.

share|improve this question

2 Answers 2

up vote 1 down vote accepted

It's "method A". ARP requests for addresses outside the subnet won't be sent at all.

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

  • 192.168.123.0/24 to device eth0
  • 0.0.0.0/0 to gateway 192.168.123.254 device eth0

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

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 192.168.124.0/24 dev eth0).

share|improve this answer
    
this is approach A, right? Sorry, didn't see the methode A thing, Thanks! –  user3673517 Jun 4 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.

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

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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