Because routing is network oriented, IP makes routing decisions based on the network portion of the address. The IP module determines the network part of the destination's IP address by checking the high-order bits of the address to determine the address class. The address class determines the portion of the address IP uses to identify the network. If the destination network is the local network, the local subnet mask is applied to the destination address.
After determining the destination network, the IP module looks up the network in the local routing table . Packets are routed toward their destination as directed by the routing table. The routing table may be built by the system administrator or by routing protocols, but the end result is the same; IP routing decisions are simple table look-ups.
On a UNIX system, you can display the routing table's contents with the netstat -nr command. The -r option tells netstat to display the routing table, and the -n option tells netstat to display the table in numeric form. It's useful to display the routing table in numeric form because the destination of most routes is a network, and networks are usually referred to by network numbers.
The netstat command displays a routing table containing the following fields:
The two fields important for our current discussion are the destination and gateway fields. The following is a sample routing table:
peanut% netstat -nr Routing tables Destination Gateway Flags Refcnt Use Interface 127.0.0.1 127.0.0.1 UH 1 298 lo0 default 126.96.36.199 UG 2 50360 le0 188.8.131.52 184.108.40.206 U 40 111379 le0 220.127.116.11 18.104.22.168 UG 4 1179 le0 22.214.171.124 126.96.36.199 UG 10 1113 le0 188.8.131.52 184.108.40.206 UG 2 1379 le0 220.127.116.11 18.104.22.168 UG 4 1119 le0
The first table entry is the loopback route for the local host. This is the loopback address mentioned earlier as a reserved network number. Because every system uses the loopback route to send datagrams to itself, this entry is in every host's routing table. The H flag is set because it is a route to a specific host (127.0.0.1), not a route to an entire network (127.0.0.0).
Another unique entry in the routing table is the entry with the word "default" in the destination field. This entry is for the default route , and the gateway specified in this entry is the default gateway . The default gateway is used whenever there is no specific route in the table for a destination network address. For example, this routing table has no entry for network 22.214.171.124. If IP receives any datagrams addressed to this network, it will send the datagram via the default gateway 126.96.36.199.
You can tell from the sample routing table display that this host ( peanut ) is directly connected to network 188.8.131.52. The routing table entry for that network does not specify an external gateway; i.e., the routing table entry for 184.108.40.206 does not have the G flag set. Therefore, peanut must be directly connected to that network.
All of the gateways that appear in a routing table are on networks directly connected to the local system. In the sample shown above this means that, regardless of the destination address, the gateway addresses all begin with 128.66.12. This is the only network to which peanut is directly attached, and therefore it is the only network to which peanut can directly deliver data. The gateways that peanut uses to reach the rest of the Internet must be on peanut 's subnet.
Figure 13.20 shows how routing works on our imaginary network. The IP layer of each host and gateway is replaced by a small piece of a routing table, showing destination networks and the gateways used to reach those destinations. When the source host (220.127.116.11) sends data to the destination host (18.104.22.168), it first determines that 22.214.171.124 is the local network's class B address and applies the subnet mask. (Network 126.96.36.199 is subnetted using the mask 255.255.255.0; this could also be written as 188.8.131.52/24.) After applying the subnet mask, IP knows that the destination's network address is 184.108.40.206. The routing table in the source host shows that data bound for 220.127.116.11 should be sent to gateway 18.104.22.168. Gateway 22.214.171.124 makes direct delivery thorough its 126.96.36.199 interface. Examining the routing tables shows that all systems list only gateways on networks they are directly connected to. Note that 188.8.131.52 is the default gateway for both 184.108.40.206 and 220.127.116.11. But because 18.104.22.168 cannot reach network 22.214.171.124 directly, it has a different default route.
A routing table does not contain end-to-end routes. A route only points to the next gateway, called the next hop, along the path to the destination network. The host relies on the local gateway to deliver the data, and the gateway relies on other gateways. As a datagram moves from one gateway to another, it should eventually reach one that is directly connected to its destination network. It is this last gateway that finally delivers the data to the destination host.