org.jnetpcap.protocol.tcpip
Class Tcp.AlternateChecksum
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.AlternateChecksum
- All Implemented Interfaces:
- JPayloadAccessor
- Enclosing class:
- Tcp
@Header(id=15)
public static class Tcp.AlternateChecksum
- extends Tcp.TcpOption
The option described in this memo provides a mechanism to negotiate the use
of an alternate checksum at connection-establishment time, as well as a
mechanism to carry additional checksum information for algorithms that
utilize checksums that are longer than 16 bits.
Definition of the option: the TCP Alternate Checksum Request Option may be
sent in a SYN segment by a TCP to indicate that the TCP is prepared to both
generate and receive checksums based on an alternate algorithm. During
communication, the alternate checksum replaces the regular TCP checksum in
the checksum field of the TCP header. Should the alternate checksum require
more than 2 bytes to transmit, the checksum may either be moved into a TCP
Alternate Checksum Data Option and the checksum field of the TCP header be
sent as 0, or the data may be split between the header field and the
option. Alternate checksums are computed over the same data as the regular
TCP checksum.
- Author:
- Mark Bednarczyk, Sly Technologies, Inc.
|
Method Summary |
byte[] |
data()
This field is used only when the alternate checksum that is negotiated is
longer than 16 bits. |
int |
dataLength()
Determines the length of this dynamic field. |
byte[] |
dataToArray(byte[] array)
This field is used only when the alternate checksum that is negotiated is
longer than 16 bits. |
| 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.AlternateChecksum
public Tcp.AlternateChecksum()
data
@Field(offset=16,
format="#hexdump#")
public byte[] data()
- This field is used only when the alternate checksum that is negotiated is
longer than 16 bits. These checksums will not fit in the checksum field
of the TCP header and thus at least part of them must be put in an
option. Whether the checksum is split between the checksum field in the
TCP header and the option or the entire checksum is placed in the option
is determined on a checksum by checksum basis.
- Returns:
- variable length alternate checksum data
dataToArray
public byte[] dataToArray(byte[] array)
- This field is used only when the alternate checksum that is negotiated is
longer than 16 bits. These checksums will not fit in the checksum field
of the TCP header and thus at least part of them must be put in an
option. Whether the checksum is split between the checksum field in the
TCP header and the option or the entire checksum is placed in the option
is determined on a checksum by checksum basis.
- Parameters:
array - copies data into the supplied array
- Returns:
- the supplied array
dataLength
@Dynamic(value=LENGTH)
public int dataLength()
- Determines the length of this dynamic field.
- Returns:
- length of the data field in bits