| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
ICMPv4 Redirect Messages (Page 1 of 3) Every device on an internetwork needs to be able to send to every other device. If hosts were responsible for determining the routes to each possible destination, each host would need to maintain an extensive set of routing information. Since there are so many hosts on an internetwork, this would be a very time-consuming and maintenance-intensive situation. Instead, IP internetworks are designed around a fundamental design decision: routers are responsible for determining routes and maintaining routing information. Hosts only determine when they need a datagram routed, and then hand the datagram off to a local router to be sent where it needs to go. I discuss this in more detail in my overview of IP routing concepts. Since most hosts do not maintain routing information, they must rely on routers to know about routes and where to send datagrams intended for different destinations. Typically, a host on an IP network will start out with a routing table that basically tells it to send everything not on the local network to a single default router, which will then figure out what to do with it. Obviously if there is only one router on the network, the host will use that as the default router for all non-local traffic. However, if there are two or more routers, sending all datagrams to just one router may not make sense. It is possible that a host could be manually configured to know which router to use for which destinations, but another mechanism in IP can allow a host to learn this automatically. Consider a network N1 that contains a number of hosts (H1, H2, etc ) and two routers, R1 and R2. Host H1 has been configured to send all datagrams to R1, as its default router. Suppose it wants to send a datagram to a device on a different network (N2). However, N2 is most directly connected to N1 using R2 and not R1. The datagram will first be sent to R1. R1 will look in its routing table and see that datagrams for N2 need to be sent through R2. But wait, R1 says. R2 is on the local network, and H1 is on the local networkso why am I needed as a middleman? H1 should just send datagrams for N2 directly to R2 and leave me out of it. In this situation, R1 will send an ICMPv4 Redirect message back to H1, telling it that in the future it should send this type of datagram directly to R2. This is shown in Figure 143. R1 will of course also forward the datagram to R2 for delivery, since there is no reason to drop the datagram. Thus, despite usually being grouped along with true ICMP error messages, Redirect messages are really arguably not error messages at all; they represent a situation only where an inefficiency exists, not an outright error. (In fact, in ICMPv6 they have been reclassified.)
Home - Table Of Contents - Contact Us The TCP/IP Guide (http://www.TCPIPGuide.com) Version 3.0 - Version Date: September 20, 2005 © Copyright 2001-2005 Charles M. Kozierok. All Rights Reserved. Not responsible for any loss resulting from the use of this site. |