Internetworking across heterogenous networks requires a network-independent communication paradigm. One such paradigm is illustrated by the Internet. In particular, it requires a network-independent unique address. How many bits should be used for this address? 32 bits are used in the current version, V4, of IP. The proposed IPV6 version has 128 bits for addressing. In a world of internet appliances in which our toasters, light bulbs and other appliances would be on the network, 32 bits is not sufficient to address all internetworked devices.
In the rest of the discussion, however, we will focus on IPV4. We might imagine independently assigning each computer an IP address. However, that makes routing a nightmare as routing tables will get very big. Therefore computers on the same physical network are assigned addresses with a common prefix that serves as a network address. This prefix is like street or city in our US mail address. The size of the prefix varies based on the number of computers in the physical network.
In general, an IP address is a triple (adrKind, netid, hostid), where adrKind identifies the kind of address (A, B, and C), netid identifies a network, and hostid identifies a host on that network. The number of bits devoted to each element depends on the kind of address:
Class A addresses, which are used for the few networks like the Internet backbone that have a large number of hosts, have the 1st bit set to `0', next 7 bits allocated for the netid, and the next 24 bits for hostid.
Class B addresses, which are used for intermediate sized networks, have the first two bits set to `10', the next 14 bits allocated for netid, and the next 16 bits for hostid.
Class C addresses, which are used for small sized networks like Ethernets, have the first three bits set to `110', the next 21 bits allocated for netid, and the remaining 8 bits for hostid.
Class D addresses, which are used for multicast groups, have the first three bits set to `111', and the remaining bits allocated for the multicast address.
Internet addresses are usually written as four decimal integers separated by decimal points, where each integer gives one octet of the internet address. Thus the 32 bit internet address:
10000000 00001010 00000010 00011110is written
Note that a host connected to more than one network has more than one internet address. For instance the internet addresses of ciscokid.oit.unc.edu look like:
188.8.131.52 (for the departmental network) 184.108.40.206 (for a network that connects to Greensboro).
The internet addresses are assigned by a central authority. By convention, an internet address with host set to zero is considered to be an address of the network, and not a particular host. Thus the address of the local FDDI backbone is
220.127.116.11(Look at the file /etc/hosts and /etc/networks for internet addresses of different computers and networks. Execute /usr/local/bin/nslookup to find the IP address of a machine from its name. Execute /usr/local/etc/traceroute to find the path a message takes from the local machine to a remote machine specified as an argument.) Also the hostid consisting of all 1's indicates a broadcast.
The internet is implemented as a layer above the physical layer. It provides its own unit of transfer called a datagram. Like an Ethernet frame, a datagram is divided into a header and data area. Like the frame header, a datagram header contains the source and destination addresses, which are internet addresses instead of physical addresses.
A datagram needs to be embedded in the physical unit of transfer. For instance a datagram transmitted on an Ethernet is embedded in the data area of an Ethernet frame. (Thus the data area of an Ethernet frame is divided into the header and data areas of the Internet datagram)
How are internet addresses mapped to physical addresses? We first consider communication between hosts on the same network. Later we will consider communication that spans networks.