As per Relevance of the word original, we have this rfc below:
Network Working Group J.
Request for Comments: 792
September 1981
Updates: RFCs 777, 760
Updates: IENs 109, 128
INTERNET CONTROL MESSAGE
DARPA INTERNET
PROTOCOL
The Internet Protocol (IP) [1] is used for host-to-host
service in a system of interconnected networks called
Catenet [2]. The network connecting devices are called Gateways
These gateways communicate between themselves for control
via a Gateway to Gateway Protocol (GGP) [3,4]. Occasionally
gateway or destination host will communicate with a source host,
example, to report an error in datagram processing. For
purposes this protocol, the Internet Control Message Protocol (ICMP),
is used. ICMP, uses the basic support of IP as if it were a
level protocol, however, ICMP is actually an integral part of IP,
must be implemented by every IP module
ICMP messages are sent in several situations: for example, when
datagram cannot reach its destination, when the gateway does not
the buffering capacity to forward a datagram, and when the
can direct the host to send traffic on a shorter route
The Internet Protocol is not designed to be absolutely reliable.
purpose of these control messages is to provide feedback
problems in the communication environment, not to make IP reliable
There are still no guarantees that a datagram will be delivered or
control message will be returned. Some datagrams may still
undelivered without any report of their loss. The higher
protocols that use IP must implement their own reliability
if reliable communication is required
The ICMP messages typically report errors in the processing
datagrams. To avoid the infinite regress of messages about
etc., no ICMP messages are sent about ICMP messages. Also
messages are only sent about errors in handling fragment zero
fragemented datagrams. (Fragment zero has the fragment offeset
zero).
[Page 1]
September 1981
RFC 792
Message
ICMP messages are sent using the basic IP header. The first octet
the data portion of the datagram is a ICMP type field; the value
this field determines the format of the remaining data. Any
labeled "unused" is reserved for later extensions and must be
when sent, but receivers should not use these fields (except
include them in the checksum). Unless otherwise noted under
individual format descriptions, the values of the internet
fields are as follows
4
Internet header length in 32-bit words
Type of
0
Total
Length of internet header and data in octets
Identification, Flags, Fragment
Used in fragmentation, see [1].
Time to
Time to live in seconds; as this field is decremented at
machine in which the datagram is processed, the value in
field should be at least as great as the number of gateways
this datagram will traverse
ICMP = 1
Header
The 16 bit one's complement of the one's complement sum of all 16
bit words in the header. For computing the checksum, the
field should be zero. This checksum may be replaced in
future
[Page 2]
September 1981
RFC 792
Source
The address of the gateway or host that composes the ICMP message
Unless otherwise noted, this can be any of a gateway's addresses
Destination
The address of the gateway or host to which the message should
sent
[Page 3]
September 1981
RFC 792
Destination Unreachable
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Code | Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| unused |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Internet Header + 64 bits of Original Data Datagram |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
IP Fields
Destination
The source network and address from the original datagram's data
ICMP Fields
3
0 = net unreachable
1 = host unreachable
2 = protocol unreachable
3 = port unreachable
4 = fragmentation needed and DF set
5 = source route failed
The checksum is the 16-bit ones's complement of the one'
complement sum of the ICMP message starting with the ICMP Type
For computing the checksum , the checksum field should be zero
This checksum may be replaced in the future
Internet Header + 64 bits of Data
The internet header plus the first 64 bits of the
[Page 4]
September 1981
RFC 792
datagram's data. This data is used by the host to match
message to the appropriate process. If a higher level
uses port numbers, they are assumed to be in the first 64
bits of the original datagram's data
If, according to the information in the gateway's routing tables
the network specified in the internet destination field of
datagram is unreachable, e.g., the distance to the network
infinity, the gateway may send a destination unreachable
to the internet source host of the datagram. In addition, in
networks, the gateway may be able to determine if the
destination host is unreachable. Gateways in these networks
send destination unreachable messages to the source host when
destination host is unreachable
If, in the destination host, the IP module cannot deliver
datagram because the indicated protocol module or process port
not active, the destination host may send a
unreachable message to the source host
Another case is when a datagram must be fragmented to be
by a gateway yet the Don't Fragment flag is on. In this case
gateway must discard the datagram and may return a
unreachable message
Codes 0, 1, 4, and 5 may be received from a gateway. Codes 2
3 may be received from a host
[Page 5]
September 1981
RFC 792
Time Exceeded
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Code | Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| unused |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Internet Header + 64 bits of Original Data Datagram |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
IP Fields
Destination
The source network and address from the original datagram's data
ICMP Fields
11
0 = time to live exceeded in transit
1 = fragment reassembly time exceeded
The checksum is the 16-bit ones's complement of the one'
complement sum of the ICMP message starting with the ICMP Type
For computing the checksum , the checksum field should be zero
This checksum may be replaced in the future
Internet Header + 64 bits of Data
The internet header plus the first 64 bits of the
datagram's data. This data is used by the host to match
message to the appropriate process. If a higher level
uses port numbers, they are assumed to be in the first 64
bits of the original datagram's data
If the gateway processing a datagram finds the time to live
[Page 6]
September 1981
RFC 792
is zero it must discard the datagram. The gateway may also
the source host via the time exceeded message
If a host reassembling a fragmented datagram cannot complete
reassembly due to missing fragments within its time limit
discards the datagram, and it may send a time exceeded message
If fragment zero is not available then no time exceeded need
sent at all
Code 0 may be received from a gateway. Code 1 may be
from a host
[Page 7]
September 1981
RFC 792
Parameter Problem
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Code | Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Pointer | unused |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Internet Header + 64 bits of Original Data Datagram |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
IP Fields
Destination
The source network and address from the original datagram's data
ICMP Fields
12
0 = pointer indicates the error
The checksum is the 16-bit ones's complement of the one'
complement sum of the ICMP message starting with the ICMP Type
For computing the checksum , the checksum field should be zero
This checksum may be replaced in the future
If code = 0, identifies the octet where an error was detected
Internet Header + 64 bits of Data
The internet header plus the first 64 bits of the
datagram's data. This data is used by the host to match
message to the appropriate process. If a higher level
uses port numbers, they are assumed to be in the first 64
bits of the original datagram's data
[Page 8]
September 1981
RFC 792
If the gateway or host processing a datagram finds a problem
the header parameters such that it cannot complete processing
datagram it must discard the datagram. One potential source
such a problem is with incorrect arguments in an option.
gateway or host may also notify the source host via the
problem message. This message is only sent if the error
the datagram to be discarded
The pointer identifies the octet of the original datagram's
where the error was detected (it may be in the middle of
option). For example, 1 indicates something is wrong with
Type of Service, and (if there are options present) 20
something is wrong with the type code of the first option
Code 0 may be received from a gateway or a host
[Page 9]
September 1981
RFC 792
Source Quench
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Code | Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| unused |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Internet Header + 64 bits of Original Data Datagram |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
IP Fields
Destination
The source network and address of the original datagram's data
ICMP Fields
4
0
The checksum is the 16-bit ones's complement of the one'
complement sum of the ICMP message starting with the ICMP Type
For computing the checksum , the checksum field should be zero
This checksum may be replaced in the future
Internet Header + 64 bits of Data
The internet header plus the first 64 bits of the
datagram's data. This data is used by the host to match
message to the appropriate process. If a higher level
uses port numbers, they are assumed to be in the first 64
bits of the original datagram's data
A gateway may discard internet datagrams if it does not have
buffer space needed to queue the datagrams for output to the
network on the route to the destination network. If a
[Page 10]
September 1981
RFC 792
discards a datagram, it may send a source quench message to
internet source host of the datagram. A destination host may
send a source quench message if datagrams arrive too fast to
processed. The source quench message is a request to the host
cut back the rate at which it is sending traffic to the
destination. The gateway may send a source quench message
every message that it discards. On receipt of a source
message, the source host should cut back the rate at which it
sending traffic to the specified destination until it no
receives source quench messages from the gateway. The source
can then gradually increase the rate at which it sends traffic
the destination until it again receives source quench messages
The gateway or host may send the source quench message when
approaches its capacity limit rather than waiting until
capacity is exceeded. This means that the data datagram
triggered the source quench message may be delivered
Code 0 may be received from a gateway or a host
[Page 11]
September 1981
RFC 792
Redirect
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Code | Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Gateway Internet Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Internet Header + 64 bits of Original Data Datagram |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
IP Fields
Destination
The source network and address of the original datagram's data
ICMP Fields
5
0 = Redirect datagrams for the Network
1 = Redirect datagrams for the Host
2 = Redirect datagrams for the Type of Service and Network
3 = Redirect datagrams for the Type of Service and Host
The checksum is the 16-bit ones's complement of the one'
complement sum of the ICMP message starting with the ICMP Type
For computing the checksum , the checksum field should be zero
This checksum may be replaced in the future
Gateway Internet
Address of the gateway to which traffic for the network
in the internet destination network field of the
datagram's data should be sent
[Page 12]
September 1981
RFC 792
Internet Header + 64 bits of Data
The internet header plus the first 64 bits of the
datagram's data. This data is used by the host to match
message to the appropriate process. If a higher level
uses port numbers, they are assumed to be in the first 64
bits of the original datagram's data
The gateway sends a redirect message to a host in the
situation. A gateway, G1, receives an internet datagram from
host on a network to which the gateway is attached. The gateway
G1, checks its routing table and obtains the address of the
gateway, G2, on the route to the datagram's internet
network, X. If G2 and the host identified by the internet
address of the datagram are on the same network, a
message is sent to the host. The redirect message advises
host to send its traffic for network X directly to gateway G2
this is a shorter path to the destination. The gateway
the original datagram's data to its internet destination
For datagrams with the IP source route options and the
address in the destination address field, a redirect message
not sent even if there is a better route to the
destination than the next address in the source route
Codes 0, 1, 2, and 3 may be received from a gateway
[Page 13]
September 1981
RFC 792
Echo or Echo Reply
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Code | Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Identifier | Sequence Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Data ...
+-+-+-+-+-
IP Fields
The address of the source in an echo message will be
destination of the echo reply message. To form an echo
message, the source and destination addresses are simply reversed
the type code changed to 0, and the checksum recomputed
IP Fields
8 for echo message
0 for echo reply message
0
The checksum is the 16-bit ones's complement of the one'
complement sum of the ICMP message starting with the ICMP Type
For computing the checksum , the checksum field should be zero
If the total length is odd, the received data is padded with
octet of zeros for computing the checksum. This checksum may
replaced in the future
If code = 0, an identifier to aid in matching echos and replies
may be zero
Sequence
[Page 14]
September 1981
RFC 792
If code = 0, a sequence number to aid in matching echos
replies, may be zero
The data received in the echo message must be returned in the
reply message
The identifier and sequence number may be used by the echo
to aid in matching the replies with the echo requests.
example, the identifier might be used like a port in TCP or UDP
identify a session, and the sequence number might be
on each echo request sent. The echoer returns these same
in the echo reply
Code 0 may be received from a gateway or a host
[Page 15]
September 1981
RFC 792
Timestamp or Timestamp Reply
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Code | Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Identifier | Sequence Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Originate Timestamp |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Receive Timestamp |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Transmit Timestamp |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
IP Fields
The address of the source in a timestamp message will be
destination of the timestamp reply message. To form a
reply message, the source and destination addresses are
reversed, the type code changed to 14, and the
recomputed
IP Fields
13 for timestamp message
14 for timestamp reply message
0
The checksum is the 16-bit ones's complement of the one'
complement sum of the ICMP message starting with the ICMP Type
For computing the checksum , the checksum field should be zero
This checksum may be replaced in the future
[Page 16]
September 1981
RFC 792
If code = 0, an identifier to aid in matching timestamp
replies, may be zero
Sequence
If code = 0, a sequence number to aid in matching timestamp
replies, may be zero
The data received (a timestamp) in the message is returned in
reply together with an additional timestamp. The timestamp is 32
bits of milliseconds since midnight UT. One use of
timestamps is described by Mills [5].
The Originate Timestamp is the time the sender last touched
message before sending it, the Receive Timestamp is the time
echoer first touched it on receipt, and the Transmit Timestamp
the time the echoer last touched the message on sending it
If the time is not available in miliseconds or cannot be
with respect to midnight UT then any time can be inserted in
timestamp provided the high order bit of the timestamp is also
to indicate this non-standard value
The identifier and sequence number may be used by the echo
to aid in matching the replies with the requests. For example
the identifier might be used like a port in TCP or UDP to
a session, and the sequence number might be incremented on
request sent. The destination returns these same values in
reply
Code 0 may be received from a gateway or a host
[Page 17]
September 1981
RFC 792
Information Request or Information Reply
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Code | Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Identifier | Sequence Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
IP Fields
The address of the source in a information request message will
the destination of the information reply message. To form
information reply message, the source and destination
are simply reversed, the type code changed to 16, and the
recomputed
IP Fields
15 for information request message
16 for information reply message
0
The checksum is the 16-bit ones's complement of the one'
complement sum of the ICMP message starting with the ICMP Type
For computing the checksum , the checksum field should be zero
This checksum may be replaced in the future
If code = 0, an identifier to aid in matching request and replies
may be zero
Sequence
If code = 0, a sequence number to aid in matching request
replies, may be zero
[Page 18]
September 1981
RFC 792
This message may be sent with the source network in the IP
source and destination address fields zero (which means "this
network). The replying IP module should send the reply with
addresses fully specified. This message is a way for a host
find out the number of the network it is on
The identifier and sequence number may be used by the echo
to aid in matching the replies with the requests. For example
the identifier might be used like a port in TCP or UDP to
a session, and the sequence number might be incremented on
request sent. The destination returns these same values in
reply
Code 0 may be received from a gateway or a host
[Page 19]
September 1981
RFC 792
Summary of Message
0 Echo
3 Destination
4 Source
5
8
11 Time
12 Parameter
13
14 Timestamp
15 Information
16 Information
[Page 20]
September 1981
RFC 792
[1] Postel, J. (ed.), "Internet Protocol - DARPA Internet
Protocol Specification," RFC 791, USC/Information
Institute, September 1981.
[2] Cerf, V., "The Catenet Model for Internetworking," IEN 48,
Information Processing Techniques Office, Defense
Research Projects Agency, July 1978.
[3] Strazisar, V., "Gateway Routing: An
Specification", IEN 30, Bolt Beranek and Newman, April 1979.
[4] Strazisar, V., "How to Build a Gateway", IEN 109, Bolt
and Newman, August 1979.
[5] Mills, D., "DCNET Internet Clock Service," RFC 778,
Laboratories, April 1981.
[Page 21]
if you see any problems within the linking, don't worry be happy,
this is version 0.1 of the Relevance System and you gotta expect some crappy subroutines sometimes,
just be content we did not write this in Java, which would have made this "bigger and better" HAHAHHA.
RFC documents can be found at I.E.T.F.
Relevance System Copyright © 2002 Spectrum WorldResearch
other technical nosh by ServerMasters Corporation
collaboration of BobX