ICMP type 13, Timestamp request

Description Glossary RFCs Publications Obsolete RFCs

Description:

Protocol suite: TCP/IP.
Protocol type:Transport layer control protocol.
Base protocol: ICMP, Internet Control Message Protocol.
Related ICMP message: Timestamp reply.
Host implementation: Optional.
Router implementation:Optional.
Links: IANA: ICMP parameters.

The Identifier and Sequence number fields should be returned to the sender unaltered.

RFC 792, page 17:

The data received (a timestamp) in the message is returned in the reply together with an additional timestamp. The timestamp is 32 bits of milliseconds since midnight UT.

The Originate Timestamp is the time the sender last touched the message before sending it, the Receive Timestamp is the time the echoer first touched it on receipt, and the Transmit Timestamp is the time the echoer last touched the message on sending it.

If the time is not available in miliseconds or cannot be provided with respect to midnight UT then any time can be inserted in a timestamp provided the high order bit of the timestamp is also set to indicate this non-standard value.

The identifier and sequence number may be used by the echo sender to aid in matching the replies with the requests. For example, the identifier might be used like a port in TCP or UDP to identify a session, and the sequence number might be incremented on each request sent. The destination returns these same values in the reply.

Host Implementation:

RFC 1122, pages 37 and 38:

If the Timestamp message is implemented the following rules apply:

RFC 1122, pages 43 and 44:

A host MAY implement Timestamp request and Timestamp Reply. If they are implemented, the following rules MUST be followed:

The following cases for Timestamp are to be handled according to the corresponding rules for ICMP Echo:

The preferred form for a timestamp value (the "standard value") is in units of milliseconds since midnight Universal Time. However, it may be difficult to provide this value with millisecond resolution. For example, many systems use clocks that update only at line frequency, 50 or 60 times per second. Therefore, some latitude is allowed in a "standard value": (a) A "standard value" MUST be updated at least 15 times per second (i.e., at most the six low-order bits of the value may be undefined). (b) The accuracy of a "standard value" MUST approximate that of operator-set CPU clocks, i.e., correct within a few minutes.

Router Implementation:

RFC 1812, page 42:

Routers MAY support the timestamp option in datagrams originated by the router. The following rules apply:

To maximize the utility of the timestamps contained in the timestamp option, the timestamp inserted should be, as nearly as practical, the time at which the packet arrived at the router. For datagrams originated by the router, the timestamp inserted should be, as nearly as practical, the time at which the datagram was passed to the Link Layer for transmission.

The timestamp option permits the use of a non-standard time clock, but the use of a non-synchronized clock limits the utility of the time stamp. Therefore, routers are well advised to implement the Network Time Protocol for the purpose of synchronizing their clocks.


MAC header IP header ICMP header Data

ICMP type 13, Timestamp request message:

0001020304050607 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
Type Code ICMP header checksum
Identifier Sequence number
Originate timestamp
Receive timestamp
Transmit timestamp

Type. 8 bits.
Set to 13.

Code. 8 bits.
Always cleared to 0.

ICMP Header Checksum. 16 bits.
The 16-bit one's complement of the one's complement sum of the ICMP message, starting with the ICMP Type field. When the checksum is computed, the checksum field should first be set to 0. When the data packet is transmitted, the checksum is computed and inserted into this field. When the data packet is received, the checksum is again computed and verified against the checksum field. If the two checksums do not match then an error has occurred.

Identifier. 16 bits.
If code is zero then an identifier is used to help match timestamp requests to the associated reply. It may be cleared to zero.

Sequence number. 16 bits.
If code is zero then a sequence number is used to help match timestamp requests to the associated reply. It may be cleared to zero.

Originate timestamp. 32 bits.

Receive timestamp. 32 bits.

Transmit timestamp. 32 bits.


Glossary:


RFCs:

[RFC 792] INTERNET CONTROL MESSAGE PROTOCOL.

[RFC 1122] Requirements for Internet Hosts -- Communication Layers.

[RFC 1812] Requirements for IP Version 4 Routers.


Publications:


Obsolete RFCs:

[RFC 1009] Requirements for Internet Gateways.

[RFC 1716] Towards Requirements for IP Routers.


Description Glossary RFCs Publications Obsolete RFCs