The Internet Protocol - IP - Forwarding and Addressing in The Internet - 295
The Internet Protocol - IP - Forwarding and Addressing in The Internet - 295
Discussion of network-layer addressing and forwarding thus far has been without
we’ll turn our attention to how addressing and forwarding are done in the Internet.
We’ll see that Internet addressing and forwarding are important components of the
We’ll first examine the widely deployed IP protocol version 4, which is usually referred
to simply as IPv4
But before beginning our foray into IP, let’s take a step back and consider the
As shown in Figure 4.12, the Internet’s network layer has three major components.
The second major component is the routing component, which determines the path a
We mentioned earlier that routing protocols compute the forwarding tables that are
The final component of the network layer is a facility to report errors in datagrams
Datagram Format
We begin our study of IP with an overview of the syntax and semantics of the IPv4
datagram.
You might be thinking that nothing could be drier than the syntax and semantics of a
packet’s bits.
student and professional needs to see it, absorb it, and master it.
• Version number.
By looking at the version number, the router can determine how to interpret the
The datagram format for the current version of IP, IPv4, is shown in Figure 4.13.
• Header length.
Because an IPv4 datagram can contain a variable number of options (which are
included in the IPv4 datagram header), these 4 bits are needed to determine where in
header.
• Type of service.
The type of service (TOS) bits were included in the IPv4 header to allow different types
For example, it might be useful to distinguish real-time datagrams (such as those used
The specific level of service to be provided is a policy issue determined by the router’s
administrator
• Datagram length.
This is the total length of the IP datagram (header plus data), measured in bytes.
Since this field is 16 bits long, the theoretical maximum size of the IP datagram is
65,535 bytes.
Interestingly, the new version of IP, IPv6, does not allow for fragmentation at routers.
• Time-to-live.
The time-to-live (TTL) field is included to ensure that datagrams do not circulate
forever (due to, for example, a long-lived routing loop) in the network.
• Protocol.
This field is used only when an IP datagram reaches its final destination.
The value of this field indicates the specific transport-layer protocol to which the data
For example, a value of 6 indicates that the data portion is passed to TCP, while a
Note that the protocol number in the IP datagram has a role that is analogous to the
The protocol number is the glue that binds the network and transport layers together,
whereas the port number is the glue that binds the transport and application layers
together.
The link-layer frame also has a special field that binds the link layer to the network
layer.
• Header checksum.
The header checksum aids a router in detecting bit errors in a received IP datagram.
The header checksum is computed by treating each 2 bytes in the header as a number
The 1s complement of this sum, known as the Internet checksum, is stored in the
checksum field.
error condition if the checksum carried in the datagram header does not equal the
computed checksum.
Routers typically discard datagrams for which an error has been detected.
Note that the checksum must be recomputed and stored again at each router, as the
TTL field, and possibly the options field as well, may change.
[RFC 1071].
A question often asked at this point is, why does TCP/IP perform error checking at
both the transport and network layers? There are several reasons for this repetition.
First, note that only the IP header is checksummed at the IP layer, while the TCP/UDP
Second, TCP/UDP and IP do not necessarily both have to belong to the same protocol
stack.
TCP can, in principle, run over a different protocol (for example, ATM) and IP can carry
When a source creates a datagram, it inserts its IP address into the source IP address
field and inserts the address of the ultimate destination into the destination IP
address field.
Often the source host determines the destination address via a DNS lookup.
Header options were meant to be used rarely—hence the decision to save overhead
headers can be of variable length, one cannot determine a priori where the data field
will start.
Also, since some datagrams may require options processing and others may not, the
For these reasons and others, IP options were dropped in the IPv6 header.
• Data (payload).
Finally, we come to the last and most important field—the raison d’être for the
datagram in the first place! In most circumstances, the data field of the IP datagram
However, the data field can carry other types of data, such as ICMP messages
IP Datagram Fragmentation
Some protocols can carry big datagrams, whereas other protocols can carry only little
packets.
For example, Ethernet frames can carry up to 1,500 bytes of data, whereas frames for
Because each IP datagram is encapsulated within the link-layer frame for transport
from one router to the next router, the MTU of the link-layer protocol places a hard
What is a problem is that each of the links along the route between sender and
destination can use different link-layer protocols, and each of these protocols can
To understand the forwarding issue better, imagine that you are a router that
interconnects several links, each running different link-layer protocols with different
MTUs.
You check your forwarding table to determine the outgoing link, and this outgoing link
Time to panic—how are you going to squeeze this oversized IP datagram into the
The solution is to fragment the data in the IP datagram into two or more smaller IP
destination.
Indeed, both TCP and UDP are expecting to receive complete, unfragmented segments
The designers of IPv4 felt that reassembling datagrams in the routers would introduce
significant complication into the protocol and put a damper on router performance.
(If you were a router, would you want to be reassembling fragments on top of
everything else you had to do?) Sticking to the principle of keeping the network core
simple, the designers of IPv4 decided to put the job of datagram reassembly in the end
When a destination host receives a series of datagrams from the same source, it needs
to determine whether any of these datagrams are fragments of some original, larger
datagram.
If some datagrams are fragments, it must further determine when it has received the
last fragment and how the fragments it has received should be pieced back together
To allow the destination host to perform these reassembly tasks, the designers of IP
(version 4) put identification, flag, and fragmentation offset fields in the IP datagram
header.
When a datagram is created, the sending host stamps the datagram with an
sends.
When a router needs to fragment a datagram, each resulting datagram (that is,
fragment) is stamped with the source address, destination address, and identification
When the destination receives a series of datagrams from the same sending host, it
can examine the identification numbers of the datagrams to determine which of the
Because IP is an unreliable service, one or more of the fragments may never arrive at
the destination.
For this reason, in order for the destination host to be absolutely sure it has received
the last fragment of the original datagram, the last fragment has a flag bit set to 0,
whereas all the other fragments have this flag bit set to 1.
Also, in order for the destination host to determine whether a fragment is missing
(and also to be able to reassemble the fragments in their proper order), the offset
field is used to specify where the fragment fits within the original IP datagram.
A datagram of 4,000 bytes (20 bytes of IP header plus 3,980 bytes of IP payload)
arrives at a router and must be forwarded to a link with an MTU of 1,500 bytes.
This implies that the 3,980 data bytes in the original datagram must be allocated to
Suppose that the original datagram is stamped with an identification number of 777.
data in all but the last fragment be a multiple of 8 bytes, and that the offset value be
At the destination, the payload of the datagram is passed to the transport layer only
If one or more of the fragments does not arrive at the destination, the incomplete
We have just learned that IP fragmentation plays an important role in gluing together
Second, fragmentation can be used to create lethal DoS attacks, whereby the attacker
A classic example is the Jolt2 attack, where the attacker sends a stream of small
zero.
The target can collapse as it attempts to rebuild datagrams out of the degenerate
packets.
Another class of exploits sends overlapping IP fragments, that is, fragments whose
offset values are set so that the fragments do not align properly.