5.6.3
Internet Control Protocols
In addition to IP, which is used for
data transfer, the Internet has several control protocols used in the network
layer, including ICMP, ARP, RARP, BOOTP, and DHCP. In this section we will look
at each of these in turn.
The operation of the Internet is
monitored closely by the routers. When something unexpected occurs, the event
is reported by the ICMP (Internet Control Message Protocol), which is also used
to test the Internet. About a dozen types of ICMP messages are defined. The
most important ones are listed in Fig. 5-61. Each ICMP message type is encapsulated
in an IP packet.
The DESTINATION UNREACHABLE message
is used when the subnet or a router cannot locate the destination or when a
packet with the DF bit cannot be delivered because a ''small-packet'' network
stands in the way.
The TIME EXCEEDED message is sent
when a packet is dropped because its counter has reached zero. This event is a
symptom that packets are looping, that there is enormous congestion, or that
the timer values are being set too low.
The PARAMETER PROBLEM message
indicates that an illegal value has been detected in a header field. This
problem indicates a bug in the sending host'sIP software or possibly in the
software of a router transited.
The SOURCE QUENCH message was
formerly used to throttle hosts that were sending too many packets. When a host
received this message, it was expected to slow down. It is rarely used any more
because when congestion occurs, these packets tend to add more fuel to the fire.
Congestion control in the Internet is now done largely in the transport layer; The
REDIRECT message is used when a router notices that a packet seems to be routed
wrong. It is used by the router to tell the sending host about the probable
error.
The ECHO and ECHO REPLY messages are
used to see if a given destination is reachable and alive. Upon receiving the
ECHO message, the destination is expected to send an ECHO REPLY message back.
The TIMESTAMP REQUEST and TIMESTAMP REPLY messages are similar, except that the
arrival time of the message and the departure time of the reply are recorded in
the reply. This facility is used to measure network performance.
In addition to these messages,
others have been defined. The on-line list is now kept at www.iana.org/assignments/icmp-parameters.
Although every machine on the
Internet has one (or more) IP addresses, these cannot actually be used for
sending packets because the data link layer hardware does not understand
Internet addresses. Nowadays, most hosts at companies and universities are
attached to a LAN by an interface board that only understands LAN addresses.
For example, every Ethernet board ever manufactured comes equipped with a
48-bit Ethernet address. Manufacturers of Ethernet boards request a block of
addresses from a central authority to ensure that no two boards have the same
address (to avoid conflicts should the two boards ever appear on the same LAN).
The boards send and receive frames based on 48-bit Ethernet addresses. They
know nothing at all about 32-bit IP addresses.
The question now arises: How do IP
addresses get mapped onto data link layer addresses, such as Ethernet? To
explain how this works, let us use the example of Fig. 5-62, in which a small university with
several class C (now called /24) networks is illustrated. Here we have two
Ethernets, one in the Computer Science Dept., with IP address 192.31.65.0 and
one in Electrical Engineering, with IP address 192.31.63.0. These are connected
by a campus backbone ring (e.g., FDDI) with IP address 192.31.60.0. Each machine
on an Ethernet has a unique Ethernet address, labeled E1 through E6, and each
machine on the FDDI ring has an FDDI address, labeled F1 through F3.
Let us start out by seeing how a
user on host 1 sends a packet to a user on host 2. Let us assume the sender
knows the name of the intended receiver, possibly something like mary@eagle.cs.uni.edu.
The first step is to find the IP address for host 2, known as eagle.cs.uni.edu.
This lookup is performed by the Domain Name System, For the moment, we will
just assume that DNS returns the IP address for host 2 (192.31.65.5).
The upper layer software on host 1
now builds a packet with 192.31.65.5 in the Destination address field and gives
it to the IP software to transmit. The IP software can look at the address and
see that the destination is on its own network, but it needs some way to find
the destination's Ethernet address. One solution is to have a configuration
file somewhere in the system that maps IP addresses onto Ethernet addresses.
While this solution is certainly possible, for organizations with thousands of
machines, keeping all these files up to date is an error-prone, time-consuming
job.
A better solution is for host 1 to
output a broadcast packet onto the Ethernet asking: Who owns IP address
192.31.65.5? The broadcast will arrive at every machine on Ethernet
192.31.65.0, and each one will check its IP address. Host 2 alone will respond
with its Ethernet address (E2). In this way host 1 learns that IP address
192.31.65.5 is on the host with Ethernet address E2. The protocol used for
asking this question and getting the reply is called ARP (Address Resolution
Protocol). Almost every machine on the Internet runs it. ARP is defined in RFC
826.
The advantage of using ARP over
configuration files is the simplicity. The system manager does not have to do
much except assign each machine an IP address and decide about subnet masks.
ARP does the rest.
At this point, the IP software on
host 1 builds an Ethernet frame addressed to E2, puts the IP packet (addressed
to 192.31.65.5) in the payload field, and dumps it onto the Ethernet. The
Ethernet board of host 2 detects this frame, recognizes it as a frame for
itself, scoops it up, and causes an interrupt. The Ethernet driver extracts the
IP packet from the payload and passes it to the IP software, which sees that it
is correctly addressed and processes it.
Various optimizations are possible
to make ARP work more efficiently. To start with, once a machine has run ARP,
it caches the result in case it needs to contact the same machine shortly. Next
time it will find the mapping in its own cache, thus eliminating the need for a
second broadcast. In many cases host 2 will need to send back a reply, forcing
it, too, to run ARP to determine the sender's Ethernet address. This ARP
broadcast can be avoided by having host 1 include its IP-to-Ethernet mapping in
the ARP packet. When the ARP broadcast arrives at host 2, the pair
(192.31.65.7, E1) is entered into host 2's ARP cache for future use. In fact,
all machines on the Ethernet can enter this mapping into their ARP caches.
Yet another optimization is to have
every machine broadcast its mapping when it boots. This broadcast is generally
done in the form of an ARP looking for its own IP address. There should not be
a response, but a side effect of the broadcast is to make an entry in
everyone's ARP cache. If a response does (unexpectedly) arrive, two machines
have been assigned the same IP address. The new one should inform the system
manager and not boot.
To allow mappings to change, for
example, when an Ethernet board breaks and is replaced with a new one (and thus
a new Ethernet address), entries in the ARP cache should time out after a few
minutes.
Now let us look at Fig. 5-62 again, only this time host 1 wants to
send a packet to host 4 (192.31.63.8). Using ARP will fail because host 4 will
not see the broadcast (routers do not forward Ethernet-level broadcasts). There
are two solutions. First, the CS router could be configured to respond to ARP
requests for network 192.31.63.0 (and possibly other local networks). In this
case, host 1 will make an ARP cache entry of (192.31.63.8, E3) and happily send
all traffic for host 4 to the local router. This solution is called proxy ARP.
The second solution is to have host 1 immediately see that the destination is
on a remote network and just send all such traffic to a default Ethernet
address that handles all remote traffic, in this case E3. This solution does
not require having the CS router know which remote networks it is serving.
Either way, what happens is that
host 1 packs the IP packet into the payload field of an Ethernet frame
addressed to E3. When the CS router gets the Ethernet frame, it removes the IP
packet from the payload field and looks up the IP address in its routing
tables. It discovers that packets for network 192.31.63.0 are supposed to go to
router 192.31.60.7. If it does not already know the FDDI address of
192.31.60.7, it broadcasts an ARP packet onto the ring and learns that its ring
address is F3. It then inserts the packet into the payload field of an FDDI
frame addressed to F3 and puts it on the ring.
At the EE router, the FDDI driver
removes the packet from the payload field and gives it to the IP software,
which sees that it needs to send the packet to 192.31.63.8. If this IP address
is not in its ARP cache, it broadcasts an ARP request on the EE Ethernet and
learns that the destination address is E6,soit builds an Ethernet frame
addressed to E6, puts the packet in the payload field, and sends it over the
Ethernet. When the Ethernet frame arrives at host 4, the packet is extracted
from the frame and passed to the IP software for processing.
Going from host 1 to a distant
network over a WAN works essentially the same way, except that this time the CS
router's tables tell it to use the WAN router whose FDDI address is F2.
ARP solves the problem of finding
out which Ethernet address corresponds to a given IP address. Sometimes the
reverse problem has to be solved: Given an Ethernet address, what is the
corresponding IP address? In particular, this problem occurs when a diskless
workstation is booted. Such a machine will normally get the binary image of its
operating system from a remote file server. But how does it learn its IP
address?
The first solution devised was to
use RARP (Reverse Address Resolution Protocol) (defined in RFC 903). This
protocol allows a newly-booted workstation to broadcast its Ethernet address
and say: My 48-bit Ethernet address is 14.04.05.18.01.25. Does anyone out there
know my IP address? The RARP server sees this request, looks up the Ethernet
address in its configuration files, and sends back the corresponding IP
address.
Using RARP is better than embedding
an IP address in the memory image because it allows the same image to be used
on all machines. If the IP address were buried inside the image, each
workstation would need its own image.
A disadvantage of RARP is that it
uses a destination address of all 1s (limited broadcasting) to reach the RARP
server. However, such broadcasts are not forwarded by routers, so a RARP server
is needed on each network. To get around this problem, an alternative bootstrap
protocol called BOOTP was invented. Unlike RARP, BOOTP uses UDP messages, which
are forwarded over routers. It also provides a diskless workstation with
additional information, including the IP address of the file server holding the
memory image, the IP address of the default router, and the subnet mask to use.
BOOTP is described in RFCs 951, 1048, and 1084.
A serious problem with BOOTP is that
it requires manual configuration of tables mapping IP address to Ethernet
address. When a new host is added to a LAN, it cannot use BOOTP until an
administrator has assigned it an IP address and entered its (Ethernet address,
IP address) into the BOOTP configuration tables by hand. To eliminate this
error-prone step, BOOTP was extended and given a new name: DHCP (Dynamic Host
Configuration Protocol). DHCP allows both manual IP address assignment and
automatic assignment. It is described in RFCs 2131 and 2132. In most systems,
it has largely replaced RARP and BOOTP.
Like RARP and BOOTP, DHCP is based
on the idea of a special server that assigns IP addresses to hosts asking for
one. This server need not be on the same LAN as the requesting host. Since the
DHCP server may not be reachable by broadcasting, a DHCP relay agent is needed
on each LAN, as shown in Fig. 5-63.
To find its IP address, a
newly-booted machine broadcasts a DHCP DISCOVER packet. The DHCP relay agent on
its LAN intercepts all DHCP broadcasts. When it finds a DHCP DISCOVER packet,
it sends the packet as a unicast packet to the DHCP server, possibly on a
distant network. The only piece of information the relay agent needs is the IP
address of the DHCP server.
An issue that arises with automatic
assignment of IP addresses from a pool is how long an IP address should be
allocated. If a host leaves the network and does not return its IP address to
the DHCP server, that address will be permanently lost. After a period of time,
many addresses may be lost. To prevent that from happening, IP address
assignment may be for a fixed period of time, a technique called leasing. Just
before the lease expires, the host must ask the DHCP for a renewal. If it fails
to make a request or the request is denied, the host may no longer use the IP
address it was given earlier.
No comments:
Post a Comment
silahkan membaca dan berkomentar