org.jnetpcap.protocol.tcpip
Class Tcp.Timestamp
java.lang.Object
org.jnetpcap.nio.JMemory
org.jnetpcap.nio.JBuffer
org.jnetpcap.packet.JHeader
org.jnetpcap.packet.JSubHeader<Tcp>
org.jnetpcap.protocol.tcpip.Tcp.TcpOption
org.jnetpcap.protocol.tcpip.Tcp.Timestamp
- All Implemented Interfaces:
- JPayloadAccessor
- Enclosing class:
- Tcp
@Header(id=8)
public static class Tcp.Timestamp
- extends Tcp.TcpOption
TCP timestamps, defined in RFC 1323, help TCP compute the round-trip time
between the sender and receiver. Timestamp options include a 4-byte
timestamp value, where the sender inserts its current value of its
timestamp clock, and a 4-byte echo reply timestamp value, where the
receiver generally inserts the most recent timestamp value that it has
received. The sender uses the echo reply timestamp in an acknowledgment to
compute the total elapsed time since the acknowledged segment was sent.[2]
TCP timestamps are also used to help in the case where TCP sequence numbers
encounter their 232 bound and "wrap around" the sequence number space. This
scheme is known as Protect Against Wrapped Sequence numbers, or PAWS (see
RFC 1323 for details). Furthermore, the Eifel detection algorithm, defined
in RFC 3522, which detects unnecessary loss recovery requires TCP
timestamps.
- Author:
- Mark Bednarczyk, Sly Technologies, Inc.
|
Method Summary |
long |
tsecr()
This field is only valid if the ACK bit is set in the TCP header. |
void |
tsecr(long value)
Sets the field's value. |
long |
tsval()
This field contains the current value of the timestamp clock of the TCP
sending the option (32 bits). |
void |
tsval(long value)
Sets the field's value. |
| Methods inherited from class org.jnetpcap.packet.JHeader |
decode, decodeHeader, getAnnotatedHeader, getDescription, getFields, getGap, getGapLength, getGapOffset, getHeader, getHeaderLength, getHeaderOffset, getId, getIndex, getName, getNextHeaderId, getNextHeaderOffset, getNicname, getPacket, getPayload, getPayloadLength, getPayloadOffset, getPostfix, getPostfixLength, getPostfixOffset, getPrefix, getPrefixLength, getPrefixOffset, getPreviousHeaderId, getPreviousHeaderOffset, getState, getSubHeaders, hasDescription, hasGap, hasNextHeader, hasPayload, hasPostfix, hasPrefix, hasPreviousHeader, hasSubHeaders, isFragmented, isGapTruncated, isHeaderTruncated, isPayloadTruncated, isPostfixTruncated, isPrefixTruncated, peer, peer, peerPayloadTo, setPacket, setSubHeaders, sizeof, toString, transferPayloadTo, transferPayloadTo, transferPayloadTo, validateHeader |
| Methods inherited from class org.jnetpcap.nio.JBuffer |
findUTF8String, getByte, getByteArray, getByteArray, getByteArray, getDouble, getFloat, getInt, getLong, getShort, getUByte, getUInt, getUShort, getUTF8Char, getUTF8String, getUTF8String, getUTF8String, getUTF8String, isReadonly, order, order, peer, peer, peer, peer, setByte, setByteArray, setByteBuffer, setDouble, setFloat, setInt, setLong, setShort, setShort0, setUByte, setUInt, setUShort, transferFrom, transferFrom, transferFrom, transferTo, transferTo, transferTo |
| Methods inherited from class org.jnetpcap.nio.JMemory |
availableDirectMemory, check, cleanup, createReference, isInitialized, isJMemoryBasedOwner, isOwner, maxDirectMemory, peer, reservedDirectMemory, setSize, size, softDirectMemory, toDebugString, toHexdump, toHexdump, totalActiveAllocated, totalAllocateCalls, totalAllocated, totalAllocatedSegments0To255Bytes, totalAllocatedSegments256OrAbove, totalDeAllocateCalls, totalDeAllocated, transferFrom, transferFrom, transferFromDirect, transferOwnership, transferTo, transferTo, transferTo, transferTo, transferTo, transferTo0 |
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Tcp.Timestamp
public Tcp.Timestamp()
tsecr
@Field(offset=48,
length=32)
public long tsecr()
- This field is only valid if the ACK bit is set in the TCP header. If it
is valid, it echos a timestamp value that was sent by the remote TCP in
the TSval field of a Timestamps option. When TSecr is not valid, its
value must be zero. The TSecr value will generally be from the most
recent Timestamp option that was received; A TCP may send the Timestamp
option in an initial SYN segment (i.e., segment containing a SYN bit and
no ACK bit), and may send a TSopt in other segments only if it received a
TSopt in the initial SYN segment for the connection.
- Returns:
- timestamp value
tsecr
public void tsecr(long value)
- Sets the field's value.
- Parameters:
value - new field value
tsval
@Field(offset=16,
length=32)
public long tsval()
- This field contains the current value of the timestamp clock of the TCP
sending the option (32 bits).
- Returns:
- field's value
tsval
public void tsval(long value)
- Sets the field's value.
- Parameters:
value - new field value