1.3. Network layer
At the data link layer, things are fairly simple. Machines
agree on the format of packets and a
standard 48-bit host addressing scheme. However, the packet format
and encoding vary with different physical layers: Ethernet has one
set of characteristics, while an X.25-based satellite network has
another. Because there are many physical networks, there should
ideally be a standard interface scheme so that it isn't
necessary to re-implement protocols on top of each physical network
and its peculiar interfaces. This is where the network layer fits in.
The higher-level protocols, such as TCP (at the transport layer),
don't need to know any details about the physical network that
is in use. As mentioned
before, TCP runs over Ethernet,
fiber optic network, or other media; the TCP protocols don't
care about the physical connection because it is represented by a
well-defined network layer interface.
The
network layer protocol of
primary interest to NFS and NIS is the
Internet Protocol, or IP. As its name implies, IP is responsible for
getting packets between hosts on one or more networks. Its job is to
make a best effort to get the data from point A to point B. IP makes
no guarantees about getting all of the data to the destination, or
the order in which the data arrives -- these details are left
for higher-level protocols to worry about.
On a local area network, IP
has a fairly simple job, since it just moves packets from a
higher-level protocol down to the data link layer. In a set of
connected networks, however, IP is responsible for determining how to
get data from its source to the correct destination network. The
process of directing datagrams to another network is
called
routing; it is one of the primary functions of
the IP protocol.
Appendix A, "IP Packet Routing" contains a detailed
description of how IP performs routing.
1.3.1. Datagrams and packets
IP deals with data in chunks called
datagrams.
The
terms
packet and
datagram
are often used interchangeably, although a packet is a data
link-layer object and a datagram is network layer object. In many
cases, particularly when using IP on Ethernet, a datagram and packet
refer to the same chunk of data. There's no guarantee that the
physical link layer can handle a packet of the network layer's
size. As previously mentioned, the largest packet that can be handled
by the physical link layer is called the Maximum
Transmission
Unit, or MTU, of the network media. If
the medium's MTU is smaller than the network's packet
size, then the network layer has to break large datagrams down into
packet-sized chunks that the data link and physical layers can
digest. This process is called
fragmentation.
The host receiving a fragmented datagram reassembles the pieces in
the correct
order.
For
example, an X.25 network may have an MTU as small as 128 bytes, so a
1518-byte IP datagram would have to be fragmented into many smaller
network packets to be sent over the X.25 link. For the scope of this
book, we'll use packet to describe both the IP and the data
link-layer objects, since NFS is most commonly run on Ethernet rather
than over wide-area networks with smaller MTUs. However, the
distinction will be made when necessary, such as when discussing NFS
traffic over a wide area
point-to-point
link.
1.3.2. IP host addresses
The internet protocol identifies hosts with a
number called an
IP
address or a
host address. To avoid
confusion with MAC
addresses (which
are
machine or
station addresses), the term IP
address will be used to designate this kind of address. IP addresses
come in two flavors: 32-bit IP Version 4 (IPv4) or 128 bit IPv6
address. We will talk about IPv6 addresses later in this chapter. For
now, we will focus on IPv4 addresses. IPv4 addresses are written as
four dot-separated decimal numbers between 0-255 (a dotted quad):
192.9.200.1
IP addresses must be unique among all connected machines. Connected
machines in this case are any hosts
that you can get to over a network or connected set of networks,
including your local area network, remote offices joined by the
company's wide-area network, or even the entire Internet
community. For a standalone system or a small office that is not
connected (via an IP network) to the outside world, you can use the
standard, private network addresses assigned such purposes. See
Section 1.3.3, "IPv4 address classes" later in this chapter. If
your network is connected to the Internet, you have to get a range of
IP addresses assigned to your machines through a central network
administration authority, via your Internet Service Provider. If you
are planning on joining the Internet in the future, you will need to
obtain an address from your network service provider. This may be
either an actual provider of Internet service, or your own
organization, if it has addresses to hand out. We won't go into
this further in this book.
The IP address uniqueness requirement differs from that for MAC
addresses. IP addresses are unique only on connected networks, but
machine MAC addresses are unique in the world, independent of any
connectivity. Part of the reason for the difference in the uniqueness
requirement is that IPv4 addresses are 32 bits, while MAC addresses
are 48 bits, so mapping every possible MAC address into an IPv4
address requires some overlap. There are a variety of reasons why the
IPv4 address is only 32 bits, while the MAC address is 48 bits, most
of which are historical.
Since the network and data link layers use different addressing
schemes, some system is needed to convert or map the IP addresses to
MAC addresses. Transport-layer services and user processes use IP
addresses to identify hosts, but packets that go out on the network
need MAC addresses.
The
Address Resolution Protocol (ARP) is used to convert the 32-bit IPv4
address of a host into its 48-bit MAC address. When a host wants to
map an IP address to a MAC address, it broadcasts an ARP request on
the network, asking for the host using the IP address to respond. The
host that sees its own IP address in the request returns its MAC
address to the sender. With a MAC address, the sending host can
transmit a packet on the Ethernet and know that the receiving host
will recognize it.
A host can have more than one IP address. Usually this is because the
host is connected to multiple physical network segments (requiring
one network interface, such as an Ethernet controller, per segment),
or
because
the host has multiple interfaces to the same physical network
segment.
1.3.3. IPv4 address classes
Each IPv4 address has a
network number and a
host number. The
host number identifies a particular
machine on an organization's network. IP addresses are
divided
into
classes that determine which parts of the
address make up the network and host numbers, as demonstrated in
Table 1-2.
Table 1-2. IPv4 address classes
Address Class and First Octet Value |
Network Number Octets |
Host Number Octets |
Address Form |
Number of Networks |
Number of Hosts per Network |
Maximum Number of Hosts per Class |
Class A: 1-126 |
1 |
3 |
N.H.H.H |
126 |
2563 - 2 |
2,113,928,964 |
Class B: 128-191 |
2 |
2 |
N.N.H.H |
16,384 |
2562 - 2 |
1,073,709,056 |
Class C: 192-223 |
3 |
1 |
N.N.N.H |
2,097,152 |
254 |
532,676,608 |
Class D: 224-239 |
N/A |
N/A |
M.M.M.M |
N/A |
N/A |
N/A |
Class E: 240-255 |
N/A |
N/A |
R.R.R.R |
N/A |
N/A |
N/A |
Each N represents part of the network number and
each H is part of the address's host
number. The 8-bit octet has 256 possible values, but 0 and 255 in the
last host octet are reserved for forming broadcast addresses.
Network numbers with first octet values of 240-254 are reserved for
future use. The network numbers 0, 127, 255, 10, 172.16-172.31, and
192.168.0-192.168.255 are also reserved:
- 0 is used as a place holder in forming a network number, and in some
cases, for IP broadcast addresses.
- 127 is for a host's loopback interface.
- 255 is used for IPv4 broadcast
addresses.
- 10, 172.16-172.31, and 192.168.0-192.168.255 are used for private
networks that will never be connected to the global Internet.
Note that there are only 126 class A network numbers, but well
over two million class C network
numbers. When the Internet was founded, it was almost impossible to
get a class A network number, and few organizations (aside from
entire networks or countries) had enough hosts to justify a class A
address. Most companies and universities requested class B or class C
addresses. A medium-sized company, with several hundred machines,
could request several class C network numbers, putting up to 254
hosts on each network. Now that the Internet is much bigger, the
rules for class A, B, and C network number assignment have changed,
as explained in
Section 1.3.4, "Classless IP addressing".
Class D addresses look similar to the other classes in that each
address consists of 4 octets with a value no higher than 255 per
octet. Unlike classes A, B, and C, a class D address does not have a
network number and host number. Class D addresses are multicast
addresses, which are used to send messages to more than one recipient
host, whereas IP addresses in classes A, B, and C are unicast
addresses destined for one recipient. Multicast on the Internet
offers plenty of potential for efficient broadcast of information,
such as bulk file transfers, audio and video, and stock pricing
information, but has achieved limited deployment. There is an ongoing
experiment known as the "MBONE" (Multicast backBONE) on
the Internet to exploit this
technology.
Class E addresses are reserved for future assignment.
1.3.4. Classless IP addressing
In the early 1990s, due to the advent
of the World Wide Web, the
Internet's growth exploded. In theory, if you sum the maximum
number of hosts per classes A, B, and C (refer back to
Table 1-2), the Internet can have a potential for over 3.7
billion hosts. In reality, the Internet was running out of address
capacity for two reasons.
The first had to do with the inefficiencies built into the class
partitioning. About 3.2 billion of the theoretical number of hosts
were class A and class B, leaving about 500 million class C
addresses. Most organizations did not need class A or class B
addresses, and of those that did, a significant fraction of their
assigned address space was not needed. Most users could get by with a
class C network number, but the typical small business or home user
did not need 254 hosts. Thus, the number of class C addresses was
bounded by the maximum number of class C networks, about two million,
which is far less than the number of users on the Internet.
The problem of only two million class C networks was mitigated by the
introduction of dynamically assigned IP addresses, and by the
introduction of policies that tended to assign IP network numbers
only to Internet Service Providers (ISPs), or
to organizations that effectively
acted as their own ISP, which would then use the free market to
efficiently reallocate the IP addresses dynamically or statically to
their customers. Thus most Intenet users get assigned a single IP
address, and the ISP is assigned the corresponding network number.
The second reason was routing scalability. When the Internet was
orders of magnitude smaller then it is today, most address
assignments were for class A or B and so routing between networks was
straightforward. The routers simply looked at the network number, and
sent it to a router responsible for that route. With the explosion of
the Internet, and with most of that growth in class C network
numbers, each network's router might have to maintain tables of
hundreds of thousands of routes. As the Internet grew rapidly,
keeping these tables up to date was difficult.
This situation was not sustainable, and so the concept of
"classless addressing" was introduced. With the exception
of grandfathered address assignments, each IP address, regardless of
whether it's class A, B, or C, would not have an implicit
network number part and host number part. Instead the network part
would be designated explicitly via a suffix of the form:
"/XX", where XX is the number of bits of the IP address
that refer to the network. Those organizations that needed more than
the 254 hosts that a class C address would provide, would instead be
assigned consecutive class C addresses. For example, an ISP that was
assigned 192.1.2 and 192.1.3 could have a classless network number of
192.1.3.0/23. Any router on a network other than 192.1.2 or 192.1.3
that wanted to send to either network number would instead route to a
single router associated with the classless network number
192.1.3.0/23 (i.e., any IP address that had its first 23 bits equal
to 1100 0000 0000 0001 0000 001).
With this new scheme, larger organizations get more consecutive class
C network numbers. Within their local networks
("Intranets"), they can either use traditional
class-based routing or classless routing that further subdivides the
local network address space that can be used. The largest
organizations may find that class-based routing doesn't scale,
and so classless routing is the best
approach.
1.3.5. Virtual interfaces
In
Section 1.3.2, "IP host addresses", we noted
that a host could have multiple IP addresses
assigned to it if it had multiple physical network interfaces. It is
possible for a physical network segment to support more than one IP
network number. For example, a segment might have 128.0.0.0/16 and
192.4.5.6/24. Some hosts on that segment might want to directly
address hosts with either network number. Some operating systems,
such as Solaris, will let you define multiple virtual or logical
interfaces for a physical network interface. On most Unix systems,
the
ifconfig command is used
to set up
interfaces. See your vendor's
ifconfig
manual page for
more details.
1.3.6. IP Version 6
Until now we have been discussing IPv4 addresses
that
are four octets long. The discussion in
Section 1.3.4, "Classless IP addressing" showed a clever way to extend
the life of the 32 bit IPv4 address space. However, it was recognized
long ago, even before the introduction of the World Wide Web, that
the IPv4 address space was under pressure. IP Version 6 (IPv6) has
been defined to solve the address space limitations by increasing the
address length to 128 bit addresses. At the time of this writing,
while most installed systems either do not support it or do not use
it, most marketed systems support IPv6. Since it seems inevitable
that you'll encounter some IPv6 networks in the next few years,
we will explain some of the basics of IPv6. Note that IPv6 is
sometimes
referred to as IPng: IP Next
Generation.
Instead of dotted quads, IPv6 addresses are usually expressed as:
x:x:x:x:x:x:x:x
where each
x is a 16 bit hexadecimal value. In
environments where a network is transitioning from IP Version 4 to
Version 6, you might want to use a form like:
x:x:x:x:x:x:d.d.d.d
where d.d.d.d represents an IP Version 4 dotted quad.
When there are one or more consecutive sequences of
x's such that each
x
is all zeroes, the sequence can be replaced with "::",
but there can be only one such "::" abbreviation in an
IPv6 address. Thus:
1234:0000:5678:9ABC:DEF0:1234:5678:9ABC
3:0:0:0:0:0:3333:4444
can be abbreviated as:
1234::5678:9ABC:DEF0:1234:5678:9ABC
3::3333:4444
As you might expect, IPv6 dispenses with address classes for unicast
addresses. You specify classless network numbers (address prefixes),
using the same classless addressing notation that IP Version 4 uses.
1.3.6.1. IP Version 6 address pools
While the designation of the network
number in IPv6 is classless, the
128-bit address is still carved up into various pools. Portions of
the address space are allocated for:
- Reserved or unassigned for future
purposes
- Open Systems Interconnection
(OSI) network protocols
- Novell IPX
protocols
- Unicast addresses,
including:
- global unicast addresses that can be used to send packets to hosts
outside the local site
- site local unicast addresses than can be used to send packets only to
hosts within a site
- link local unicast addresses that can used to send packets only to
hosts within a physical network
segment
- Multicast addresses, which start with FF
- Addresses of nodes that support just IP Version 4. These are denoted
as:
::FFFF:d.d.d.d
- Addresses of nodes that support IPv6, but want to use existing IP
Version 4 infrastructure to encapsulate IPv6 packets within IPv4
packets for transport between networks. The last 32 bits of these
addresses correspond to IPv4 addresses. These addresses are denoted
as:
::d.d.d.d
While this scheme does not let you benefit from IPv6's extended
addressing, it does let you take advantage of IPv6's other
features (such as a richer set of protocol options) while
transitioning from IPv4.
1.3.6.2. IP Version 6 loopback address
Instead of dedicating about 16 million addresses
for
loopback interfaces as IPv4 does, IPv6 uses just one address for that
purpose:
::1
1.3.6.3. IP Version 6 unspecified address
IPv6 introduces the concept of an "unspecified" address,
which
is
all zeroes:
::0
This address can be used by hosts that don't know their own
address, but need to generate queries to determine their address
assignment. Such hosts would use "::0" as the source
address
in
an IPv6
packet.
| | |
1.2. Physical and data link layers
| | 1.4. Transport layer |