 <p>Because they depend on how the route table is configured in each individual router or device it pass through from source to target locations.</p> <p>Given this network:</p> <pre><code>A - B - C | / D </code></pre> <p>A message can go from A to D by traveling through B (<code>A-B-D</code>) But maybe D is configured to every outgoing packets be routed through C so the return path can be (<code>D-C-B-A</code>).</p> <p>Probably not the best example but I think it makes a point. <em>Every</em> router is in charge of building and maintain their local <code>route tables</code> so this kind of situations can happen. You can find more information on <a href="http://en.wikipedia.org/wiki/Routing_table" rel="nofollow">Wikipedia page for Routing Tables</a>.</p> <p>Hope this helps!</p>