0
1
2
3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Version| IHL |Type of Service|
Total Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
Identification |Flags|
Fragment Offset |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Time to Live | Protocol
| Header Checksum
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
Source Address
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
Destination Address
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
Options
| Padding |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Example Internet Datagram Header
Note that each tick mark represents one bit position.
Version: 4 bits
The Version field indicates the format of the
internet header. This
document describes version 4.
IHL: 4 bits
Internet Header Length is the length of the internet
header in 32
bit words, and thus points to the beginning
of the data. Note that
the minimum value for a correct header is 5.
Type of Service: 8 bits
The Type of Service provides an indication of
the abstract
parameters of the quality of service desired.
These parameters are
to be used to guide the selection of the actual
service parameters
when transmitting a datagram through a particular
network. Several
networks offer service precedence, which somehow
treats high
precedence traffic as more important than other
traffic (generally
by accepting only traffic above a certain precedence
at time of high
load). The major choice is a three way
tradeoff between low-delay,
high-reliability, and high-throughput.
Bits 0-2: Precedence.
Bit 3: 0
= Normal Delay, 1 = Low Delay.
Bits 4: 0 = Normal
Throughput, 1 = High Throughput.
Bits 5: 0 = Normal
Relibility, 1 = High Relibility.
Bit 6-7: Reserved for
Future Use.
0
1 2 3
4 5 6
7
+-----+-----+-----+-----+-----+-----+-----+-----+
|
| | |
| | |
| PRECEDENCE
| D | T | R | 0 |
0 |
|
| | |
| | |
+-----+-----+-----+-----+-----+-----+-----+-----+
Precedence
111 - Network
Control
110 - Internetwork
Control
101 - CRITIC/ECP
100 - Flash
Override
011 - Flash
010 - Immediate
001 - Priority
000 - Routine
The use of the Delay, Throughput, and Reliability
indications may
increase the cost (in some sense) of the service.
In many networks
better performance for one of these parameters
is coupled with worse
performance on another. Except for very
unusual cases at most two
of these three indications should be set.
The type of service is used to specify the treatment
of the datagram
during its transmission through the internet
system. Example
mappings of the internet type of service to
the actual service
provided on networks such as AUTODIN II, ARPANET,
SATNET, and PRNET
is given in "Service Mappings" [8].
The Network Control precedence designation is
intended to be used
within a network only. The actual use
and control of that
designation is up to each network. The Internetwork
Control
designation is intended for use by gateway control
originators only.
If the actual use of these precedence designations
is of concern to
a particular network, it is the responsibility
of that network to
control the access to, and use of, those precedence
designations.
Total Length: 16 bits
Total Length is the length of the datagram, measured
in octets,
including internet header and data. This
field allows the length of
a datagram to be up to 65,535 octets.
Such long datagrams are
impractical for most hosts and networks.
All hosts must be prepared
to accept datagrams of up to 576 octets (whether
they arrive whole
or in fragments). It is recommended that
hosts only send datagrams
larger than 576 octets if they have assurance
that the destination
is prepared to accept the larger datagrams.
The number 576 is selected to allow a reasonable
sized data block to
be transmitted in addition to the required header
information. For
example, this size allows a data block of 512
octets plus 64 header
octets to fit in a datagram. The maximal
internet header is 60
octets, and a typical internet header is 20
octets, allowing a
margin for headers of higher level protocols.
Identification: 16 bits
An identifying value assigned by the sender to
aid in assembling the
fragments of a datagram.
Flags: 3 bits
Various Control Flags.
Bit 0: reserved, must be zero
Bit 1: (DF) 0 = May Fragment,
1 = Don't Fragment.
Bit 2: (MF) 0 = Last Fragment, 1
= More Fragments.
0
1 2
+---+---+---+
| | D |
M |
| 0 | F | F |
+---+---+---+
Fragment Offset: 13 bits
This field indicates where in the datagram this
fragment belongs.
The fragment offset is measured in units of
8 octets (64 bits). The
first fragment has offset zero.
Time to Live: 8 bits
This field indicates the maximum time the datagram
is allowed to
remain in the internet system. If this
field contains the value
zero, then the datagram must be destroyed.
This field is modified
in internet header processing. The time
is measured in units of
seconds, but since every module that processes
a datagram must
decrease the TTL by at least one even if it
process the datagram in
less than a second, the TTL must be thought
of only as an upper
bound on the time a datagram may exist.
The intention is to cause
undeliverable datagrams to be discarded, and
to bound the maximum
datagram lifetime.
Protocol: 8 bits
This field indicates the next level protocol
used in the data
portion of the internet datagram. The
values for various protocols
are specified in "Assigned Numbers" [9].
Header Checksum: 16 bits
A checksum on the header only. Since some
header fields change
(e.g., time to live), this is recomputed and
verified at each point
that the internet header is processed.
The checksum algorithm is:
The checksum field is the 16 bit
one's complement of the one's
complement sum of all 16 bit words
in the header. For purposes of
computing the checksum, the value
of the checksum field is zero.
This is a simple to compute checksum and experimental
evidence
indicates it is adequate, but it is provisional
and may be replaced
by a CRC procedure, depending on further experience.
Source Address: 32 bits
The source address. See section 3.2.
Destination Address: 32 bits
The destination address. See section 3.2.
Options: variable
The options may appear or not in datagrams.
They must be
implemented by all IP modules (host and gateways).
In our
examples presented so far, no options were used.
For full
description of the options, please refer to
RFC 791.