2.2. The IP Address
An IP address is a 32-bit value
that uniquely identifies every device attached to a TCP/IP network.
IP addresses are usually written as four decimal numbers separated by
dots (periods) in a format called dotted decimal
notation.[7] Each decimal number represents an 8-bit
byte of the 32-bit address, and each of the four numbers is in the
range 0-255 (the decimal values possible in a single byte).
IP addresses are often called host addresses. While this is common
usage, it is slightly misleading. IP addresses are assigned to
network interfaces, not to computer systems. A gateway, such as
crab (see Figure 2-1), has a
different address for each network to which it is connected. The
gateway is known to other devices by the address associated with the
network that it shares with those devices. For example,
rodent addresses crab as
172.16.12.1 while external hosts address it as 10.104.0.19.
Systems can be addressed in three different ways. Individual systems
are directly addressed by a host address, which is called a
unicast address
.
A unicast packet is addressed to one individual host. Groups of
systems can be addressed using a multicast
address,
e.g.,
224.0.0.9. Routers
along the path from the source to
the destination recognize the special address and route copies of the
packet to each member of the multicast group.[8] All systems on a network are addressed using the
broadcast address, e.g., 172.16.255.255. The broadcast address
depends on the broadcast capabilities of the underlying physical
network.
The
broadcast
address is a good example of the fact that not all network addresses
or host addresses can be assigned to a network device. Some host
addresses are reserved
for
special uses. On all networks, host numbers 0 and 255 are reserved. An IP
address with all host bits set to 1 is a
broadcast
address.[9]
The broadcast address for network 172.16 is 172.16.255.255. A
datagram sent to this address is delivered to every individual host
on network 172.16. An IP address with all host bits set to 0
identifies the network itself. For example, 10.0.0.0 refers to
network 10, and 172.16.0.0 refers to network 172.16. Addresses in
this form are used in routing tables to refer to entire networks.
Network addresses with a first byte value greater than 223 cannot be
assigned to a physical network, because those addresses are reserved
for special use. There are two other network addresses that are used
only for special purposes: network 0.0.0.0 designates the
default route and network 127.0.0.0 is the
loopback address. The default route is used to simplify
the routing information that IP must handle. The loopback address
simplifies network applications by allowing the local host to be
addressed in the same manner as a remote host. These special network
addresses play an important part when configuring a host, but these
addresses are not assigned to devices on real networks. Despite these
few exceptions, most addresses are assigned to physical devices and
are used by IP to deliver data to those devices.
The Internet Protocol moves data between hosts in the form of
datagrams.
Each datagram is delivered to the address contained in the
Destination Address (word
5) of the datagram's header. The Destination Address is a
standard 32-bit IP address, which contains sufficient information to
uniquely identify a network and a specific host on that network.
2.2.1. Address Structure
An IP address
contains a network part and a host
part, but the format of these parts is not the
same in every IP address. The number of address bits used to identify
the network and the number used to identify the host vary according
to the prefix length of the address. The prefix length is determined
by the address bit mask.
An address bit mask
works like this: if a bit is on in the mask, that equivalent bit in
the address is interpreted as a network bit; if a bit in the mask is
off, the bit belongs to the host part of the address. For example, if
address 172.22.12.4 is given the network mask 255.255.255.0, which
has 24 bits on and 8 bits off, the first 24 bits are the network
number and the last 8 bits are the host address. Combining the
address and the mask tells us that this is the address of host 4 on
network 172.22.12.
Specifying both the address and the mask in dotted decimal notation
is cumbersome when writing out addresses. A shorthand notation is
available for writing an address with its associated address mask.
Instead of writing network 172.31.26.32 with a mask of
255.255.255.224, we can write 172.31.26.32/27. The format of this
notation is address/prefix-length, where
prefix-length
is the number of bits in the network
portion of the address. Without this notation, the address
172.31.26.32 could easily be misinterpreted.
Organizations usually obtain official IP addresses
by purchasing a block of addresses from their Internet service
provider. The ISP normally assigns a single organization a continuous
block of addresses that is appropriate for the needs of the
organization. For example, a moderately large business might purchase
192.168.16.0/20 while a small business might buy 192.168.32.0/24.
Because the prefix shows the length of the network portion of the
address, the number of host addresses that are available to an
organization (the host portion of the address) is determined by
subtracting the prefix from the total number of bits in an address,
which is 32. Thus a prefix of 20 leaves 12 bits that are available to
be locally assigned. This is called a "12-bit block" of
addresses. A
prefix of 24 creates an "8-bit block." Of the two sample
address blocks, the first is a 12-bit block that encompasses 4,096
addresses from 192.168.16.0 to 192.168.31.255, and the second is an
8-bit block that includes the 256 addresses from 192.168.32.0 to
192.168.32.255.
Each of these address blocks appears to the outside world to be a
single "network" address. Thus external routers have one
route to the block 192.168.16.0/20 and one route to the block
192.168.32.0/24, regardless of the size of the address block.
Internally, however, the organization may have several separate
physical networks within the address block. The flexibility of
address masks means that service providers can assign arbitrary
length blocks of addresses to their customers, and the customers can
subdivide those address blocks using different length masks.
2.2.2. Subnets
The
structure of an IP address can be
locally modified by using host address bits as additional network
address bits. Essentially, the "dividing line" between
network address bits and host address bits is moved, creating
additional networks but reducing the maximum number of hosts that can
belong to each network. These newly designated network bits define an
address block within the larger address block, which is called a
subnet.
Organizations usually decide to subnet in order to overcome
topological or organizational problems. Subnetting allows
decentralized management
of host addressing. With the
standard addressing scheme, a central administrator is responsible
for managing host addresses for the entire network. By subnetting,
the administrator can delegate address assignment to smaller
organizations within the overall organization -- which may be a
political expedient, if not a technical requirement. If you
don't want to deal with the data processing department, for
example, assign them their own subnet and let them manage it
themselves.
Subnetting can also be used to overcome hardware
differences and distance limitations. IP
routers can link dissimilar physical networks together, but only if
each physical network has its own unique network address. Subnetting
divides a single address block into many unique subnet addresses, so
that each physical network can have its own unique address.
A subnet is defined by changing the bit mask of the IP address. A
subnet mask
functions
in the same way as a normal address mask: an "on" bit is
interpreted as a network bit; an "off" bit belongs to the
host part of the address. The difference is that a subnet mask is
only used locally. On the outside, the address is still interpreted
using the address mask known to the outside world.
Assume you have a small real estate business that has been assigned
the address block 192.168.32.0/24. The bit mask associated with that
address block is 255.255.255.0, and the block contains 256 addresses.
Further, assume that your business has 10 offices, each with a
half-dozen computers, and that you want to allocate some addresses to
each office and keep some for future expansion. You can subdivide the
256 address block with a subnet mask that extends the network portion
of the address by a few additional bits.
To subdivide 192.168.32.0/24 into 16 subnets, use the mask
255.255.255.240, i.e., 192.168.32.0/28. The first three bytes contain
the original network address block; the fourth byte is divided
between the subnet address and the address of the host on that
subnet. Applying this mask defines the four high-order bits of the
fourth byte as the subnet part of the address, and the remaining four
bits -- the last four bits of the fourth byte -- as the host
portion of the address. This creates 16 subnets that each contain 14
host addresses, which is better suited to the network topology of
your small real estate business. Table 2-1 shows
the subnets and host addresses produced by applying this subnet mask
to network address 192.168.32.0/24.
Table 2-1. Effects of a subnet mask
|
Network number
|
Host address range
|
Broadcast address
|
|
192.168.32.0
|
192.168.32.1 - 192.168.32.14
|
192.168.32.15
|
|
192.168.32.16
|
192.168.32.17 - 192.168.32.30
|
192.168.32.31
|
|
192.168.32.32
|
192.168.32.33 - 192.168.32.46
|
192.168.32.47
|
|
192.168.32.48
|
192.168.32.49 - 192.168.32.62
|
192.168.32.63
|
|
192.168.32.64
|
192.168.32.65 - 192.168.32.78
|
192.168.32.79
|
|
192.168.32.80
|
192.168.32.81 - 192.168.32.94
|
192.168.32.95
|
|
192.168.32.96
|
192.168.32.97 - 192.168.32.110
|
192.168.32.111
|
|
192.168.32.112
|
192.168.32.113 - 192.168.32.126
|
192.168.32.127
|
|
192.168.32.128
|
192.168.32.129 - 192.168.32.142
|
192.168.32.143
|
|
192.168.32.144
|
192.168.32.145 - 192.168.32.158
|
192.168.32.159
|
|
192.168.32.160
|
192.168.32.161 - 192.168.32.174
|
192.168.32.175
|
|
192.168.32.176
|
192.168.32.177 - 192.168.32.190
|
192.168.32.191
|
|
192.168.32.192
|
192.168.32.193 - 192.168.32.206
|
192.168.32.207
|
|
192.168.32.208
|
192.168.32.209 - 192.168.32.222
|
192.168.32.223
|
|
192.168.32.224
|
192.168.32.225 - 192.168.32.238
|
192.168.32.239
|
|
192.168.32.240
|
192.168.32.241 - 192.168.32.254
|
192.168.32.255
|
In Table 2-1, the first row describes a subnet
with a subnet number that is all 0s (the first four bits of the
fourth byte are all set to 0). The last row in the table describes a
subnet with a subnet number that is all 1s (the first four bits of
the fourth byte are all set to 1). Originally, the RFCs
implied that
you should not use subnet numbers of all 0s or all 1s. However,
RFC 1812,
Requirements for IP Version 4 Routers, makes it
clear that subnets of all 0s and all 1s are legal and should be
supported by all routers. Some older routers did not allow the use of
these addresses despite the newer RFCs. Today's router software
and hardware should make it possible for you to reliably use all
subnet addresses.
You don't have to manually calculate a table like this to know
what subnets and host addresses are produced by a subnet mask. The
calculations have already been done for you. RFC 1878, Variable Length Subnet
Table For IPv4, lists all possible subnet masks and the
valid addresses they produce.
RFC 1878 describes all 32 prefix values. But little documentation is
needed because the prefix is easy to understand and remember. Writing
10.104.0.19 as 10.104.0.19/8 shows that this address has 8 bits for
the network number and therefore 24 bits for the host number.
Unfortunately, things are not always this neat. Sometimes the address
is not given an explicit address mask, and you need to know how to
determine the natural mask that an address will be assigned by
default.
2.2.3. The Natural Mask
Originally, the IP address space was
divided into a few fixed-length structures called address
classes. The three main address classes were
class A, class B, and
class C. IP software determined the class, and
therefore the structure, of an address by examining its first few
bits. Address classes are no longer used, but the same rules that
were used to determine the address class are now used to create the
default address mask, which is called the natural
mask .
These rules are as follows:
-
If the first bit of an IP address is 0, the default mask is 8 bits
long (prefix 8). This is the same as the old class A network address
format. The first 8 bits identify the network, and the last 24 bits
identify the host.
-
If the first 2 bits of the address are 1 0, the default mask is 16
bits long (prefix 16), which is the same as the old class B network
address format. The first 16 bits identify the network, and the last
16 bits identify the host.
-
If the first 3 bits of the address are 1 1 0, the default mask is 24
bits long (prefix 24). This mask is the same as the old class C
network address format. The first 24 bits are the network address,
and the last 8 bits identify the host.
-
If the first 4 bits of the address are 1 1 1 0, it is a
multicast address. These addresses
were sometimes called class D addresses, but
they don't really refer to specific networks. Multicast
addresses are used to address groups of computers all at one time.
They identify a group of computers that share a common application,
such as a videoconference, as opposed to a group of computers that
share a common network. All bits in a multicast address are
significant for routing, so the default mask is 32 bits long (prefix
32).
When an IP address is written in dotted decimal format, it is
sometimes easier to think of the address as four 8-bit bytes instead
of as a 32-bit value. We can look at the address as composed of full
bytes of network address and full bytes of host address when using
the natural mask, because the three default masks all create prefix
lengths that are multiples of 8. A simple way to determine the
default mask is to look at the
first byte of the address. If the value
of
the first byte is:
Figure 2-2 illustrates the two techniques for
determining the default address structure. The first address is
10.104.0.19. The first bit of this address is 0; therefore, the first
8 bits define the network and the last 24 bits define the host.
Explained in a byte-oriented manner, the first byte is less than 128,
so the address is interpreted as host 104.0.19 on network 10. One
byte specifies the network and three bytes specify the host.
Figure 2-2. Default IP address formats
The second address is 172.16.12.1. The two high-order bits are 1 0,
meaning that 16 bits define the network and 16 bits define the host.
Viewed in a byte-oriented way, the first byte falls between 128 and
191, so the address refers to host 12.1 on network 172.16. Two bytes
identify the network and two identify the host.
Finally, in the address 192.168.16.1, the three high-order bits are 1
1 0, indicating that 24 bits represent the network and 8 bits
represent the host. The first byte of this address is in the range
from 192 to 223, so this is the address of host 1 on network
192.168.16 -- three network bytes and one host byte.
Evaluating addresses according to the class rules discussed above
limits the length of network numbers to 8, 16, or 24 bits -- 1, 2,
or 3 bytes. The IP address, however, is not really byte-oriented. It
is 32 contiguous bits. The address bit
mask
provides a flexible way to define the network and host portions of an
address. IP uses the network portion of the address to route the
datagram between networks. The full address, including the host
information, is used to identify an individual host. Because of the
dual role of IP addresses, the flexibility of address masks not only
makes more addresses available for use, but also has a positive
impact on routing.
2.2.4. CIDR Blocks and Route Aggregation
The IP address, which
provides
universal addressing across all of the networks of the Internet, is
one of the great strengths of the TCP/IP protocol suite. However, the
original class structure of the IP address had weaknesses. The TCP/IP
designers did not envision the enormous scale of today's
network. When TCP/IP was being designed, networking was limited to
large organizations that could afford substantial computer systems.
The idea of a powerful Unix system on every desktop did not exist. At
that time, a 32-bit address seemed so large that it was divided into
classes to reduce the processing load on routers, even though
dividing the address into classes sharply reduced the number of host
addresses actually available for use. For example, assigning a large
network a single class B address instead of six class C addresses
reduced the load on the router because the router needed to keep only
one route for that entire organization. However, an organization that
was assigned the class B address probably did not have 64,000
computers, so most of the host addresses available to the
organization were never used.
The class-structured address design was
critically strained by the rapid growth of the Internet. At one point
it appeared that all class B addresses might be rapidly exhausted.
The rapid depletion of the class B addresses showed that three
primary address classes were not enough: class A was much too large
and class C was much too small. Even a class B address was too large
for many networks, but was used because it was better than the
alternatives.
The obvious solution to the class B address crisis was to force
organizations to use multiple class C addresses. There were millions
of these addresses available and they were in no immediate danger of
depletion. As is often the case, the obvious solution was not as
simple as it seemed. Each class C address requires its own entry
within the routing table. Assigning thousands or millions of class C
addresses would cause the routing table to grow so rapidly that the
routers would soon be overwhelmed. The solution required the new way
of looking at addresses that address masks provide; it also required
a new way of assigning addresses.
Originally network addresses were assigned in more or less sequential
order as they were requested. This worked fine when the network was
small and centralized. However, it did not take network topology into
account. Thus, only random chance determined if the same intermediate
routers would be used to reach network 195.4.12.0 and network
195.4.13.0, which makes it difficult to reduce the size of the
routing table. Addresses can be aggregated
only if they are contiguous numbers and are reachable through the
same route. For example, if addresses are contiguous for one service
provider, a single route can be created for that aggregation because
that service provider will have a limited number of connections to
the Internet. But if one network address is in France and the next
contiguous address is in Australia, creating a consolidated route
for
these addresses is not possible.
Today, large, contiguous blocks
of addresses are assigned to large
network service providers in a manner that better reflects the
topology of the network. The service providers then allocate chunks
of these address blocks to the organizations to which they provide
network services. Because the assignment of addresses reflects the
topology of the network, it permits route aggregation. Under this
scheme, we know that network 195.4.12.0 and network 195.4.13.0 are
reachable through the same intermediate routers. In fact, both of
these addresses are in the range of the addresses assigned to Europe,
194.0.0.0 to 195.255.255.255.
Assigning addresses that reflect the topology of the network enables
route aggregation but does not implement it. As long as network
195.4.12.0 and network 195.4.13.0 were interpreted as separate class
C addresses, they still required separate entries in the routing
table. The development of address masks not only increased the usable
address space, but it improved routing.
The use of an address mask instead of the old address classes to
determine the destination network is called Classless
Inter-Domain Routing (CIDR).[10] CIDR
requires
modifications
to the routers and routing protocols. The protocols need to
distribute, along with the destination addresses, address masks that
define how the addresses are interpreted. The routers and hosts need
to know how to interpret these addresses as "classless"
addresses and how to apply the bit mask that accompanies the address.
All new operating systems and routing protocols support address
masks.
CIDR was intended as an interim solution, but it has proved much more
durable than its designers imagined. CIDR has provided address and
routing relief for many years and is capable of providing it for many
more years to come. The long-term solution for address depletion is
to replace the current addressing scheme with a new one. In the
TCP/IP protocol suite, addressing is defined by the IP protocol.
Therefore, to define a new address structure, the Internet
Engineering Task Force (IETF)
created a
new version of IP called IPv6.
2.2.5. IPv6
IPv6 is
an
improvement on the IP protocol based on 20 years of operational
experience. The original motivation for the new protocol was the
threat of address depletion. IPv6 has a very large 128-bit address,
so address depletion is not an issue. The large address also makes it
possible to use a hierarchical address structure to reduce the burden
on routers while still maintaining more than enough addresses for
future network growth. But large addresses are only one of the
benefits of the new protocol. Other benefits of IPv6 are:
-
Improved security built into the protocol
-
Simplified, fixed-length, word-aligned headers to speed header
processing and reduce overhead
-
Improved techniques for handling header options
IPv6 has several good features, but it is still not widely used. This
is partly because enhancements to IPv4, improvements in hardware
performance, and changes in the way that networks are configured have
reduced the demand for the new features of IPv6.
A critical shortage of addresses
did
not materialize for three reasons:
-
CIDR makes the assignment of addresses more flexible, which in turn
makes more addresses available and permits aggregation to reduce the
burden on routers.
-
Private addresses and NAT have greatly reduced the demand for
official addresses. Many organizations prefer to use private
addresses for all systems on their internal networks because private
addresses reduce the administrative burden and improve security.
-
Permanent, fixed address assignment is less common than dynamic
address assignment. The majority of systems use dynamic addresses
temporarily assigned by the configuration protocol DHCP.
The creation of the IPsec standards for IPv4 lessened the need for
the security enhancements of IPv6. In fact, many of the security
tools and features available for IPv4 systems are not being fully
utilized, indicating that the demand for tools that secure the link
may have been overestimated.
IPv6 eliminates
hop-by-hop segmentation, has a more
efficient header design, and features enhanced option processing.
These things make it more efficient to process IPv6 packets than to
handle IPv4 packets. However, for the vast majority of systems, this
increased efficiency is not needed because processing IP datagrams is
a very minor task. Most systems are at the edge of the network and
handle relatively few communications packets. Processor speed and
memory have increased enormously while hardware prices have fallen.
ost managers would rather buy more hardware using the proven IPv4
protocol than risk implementing the new IPv6 protocol just to save a
few machine cycles. Only those systems located near the core of the
network would truly benefit from this efficiency, and although
important, those systems are relatively few in number.
All of these things have worked together to lessen the demand
for IPv6. This lack of demand has limited
the number of organizations that have adopted IPv6 as their primary
communications protocol, and a large user community is the one thing
that a protocol needs to be truly successful. We use communications
protocols to communicate with other people. If there are not enough
people using the protocol, we don't feel the need to use it.
IPv6 is still in the early-adopter phase. Most organizations do not
use IPv6 at all, and many that do use it only for experimental
purposes.[11] Between
organizations, most IPv6 communications are encapsulated inside IPv4
datagrams and sent over the Internet inside IPv4 tunnels. It will be
some time before it is the primary protocol of operational networks.
If you run an operational network, you should not be overly concerned
with IPv6. The current generation of TCP/IP (IPv4), with the
enhancements that CIDR and other extensions provide, should be more
than adequate for your current network needs. On your network and the
Internet, you will use IPv4 and 32-bit IP addresses.
 |  |  | | 2. Delivering the Data |  | 2.3. Internet Routing Architecture |
Copyright © 2002 O'Reilly & Associates. All rights reserved.
|