jist.swans.trans
Class TransTcp.TcpMessage

java.lang.Object
  extended by jist.swans.trans.TransInterface.TransMessage
      extended by jist.swans.trans.TransTcp.TcpMessage
All Implemented Interfaces:
JistAPI.Timeless, Message
Enclosing class:
TransTcp

public static class TransTcp.TcpMessage
extends TransInterface.TransMessage

Data structure for TCP Message. TCP Packet header: srcPort : 2 dstPort : 2 seqNum : 4 ackNum : 4 offset and flags : 2 window size : 2 checksum : 2 urgent pointer : 2 TOTAL HEADER SIZE : 20 options : variable data : variable


Field Summary
private  int ackNum
          32 bit acknowledgement number.
private  short dstPort
          16 bit destination port number.
private  short errorChecksum
          checksum.
static int HEADER_SIZE
          Minimum size of TCP message.
private  short offsetAndFlags
          16 bit offset and flags.
private  TransTcp.TcpOptions options
          options field (contains padding to make this field 32 bit boundary).
private  Message payload
          data.
private  int seqNum
          32 bit sequence number of first data octet in this segment.
private  short srcPort
          16-bit source port number.
private  short urgentPointer
          current value of the urgent pointer as a positive offset from the sequence number.
private  short windowSize
          16 bit window size (number of data octets to be accepted).
 
Fields inherited from interface jist.swans.misc.Message
NULL
 
Constructor Summary
TransTcp.TcpMessage(byte[] data, int offset)
          constructor for TcpMessage (reconstruct TcpMessage from byte array).
TransTcp.TcpMessage(short srcPort, short dstPort, int seqNum, int ackNum, short offset, boolean URG, boolean ACK, boolean PSH, boolean RST, boolean SYN, boolean FIN, short windowSize, Message data)
          constructor for TcpMessage.
 
Method Summary
static TransTcp.TcpMessage createACKPacket(int sourcePort, int destPort, int seqNumber, int ackNumber, short windowSize)
          Method called to create an ACK packet.
static TransTcp.TcpMessage createFINPacket(int sourcePort, int destPort, int seqNumber, int ackNumber, short windowSize)
          Method called to create a FIN packet.
static TransTcp.TcpMessage createRSTPacket(int sourcePort, int destPort, int seqNumber, int ackNumber, short windowSize)
          Method called to create a RST packet.
static TransTcp.TcpMessage createSYNACKPacket(int sourcePort, int destPort, int seqNumber, int ackNumber, short windowSize)
          Method called to create a SYNACK packet.
static TransTcp.TcpMessage createSYNPacket(int sourcePort, int destPort, int seqNumber, short windowSize)
          Method called to create a SYN packet.
 boolean getACK()
          Accessor for ACK flag.
 int getAckNum()
          Accessor for acknowledgement number.
 void getBytes(byte[] msg, int offset)
          Retrieves the message in byte array.
 short getDstPort()
          Accessor for destination port.
 boolean getFIN()
          Accessor for FIN flag.
 short getOffset()
          Accessor for offset in the message.
 TransTcp.TcpOptions getOptions()
          Accessor for options.
 Message getPayload()
          Accessor for payload.
 boolean getPSH()
          Accessor for PSH flag.
 boolean getRST()
          Accessor for RST flag.
 int getSeqNum()
          Accessor for sequence number.
 int getSize()
          Returns the size of the TCP message.
 short getSrcPort()
          Accessor for source port.
 boolean getSYN()
          Accessor for SYN flag.
 boolean getURG()
          Accessor for URGENT flag.
 short getWindowSize()
          Accessor for window size.
 void printMessage()
          Prints out the message header with zero tabs.
 void printMessage(int numTabs)
          Prints out the message header.
 void printMessage(int numTabs, boolean isPrintPayload)
          Prints out the message header and payload.
 java.lang.String toString()
          Returns string representation of the TCP message.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

HEADER_SIZE

public static final int HEADER_SIZE
Minimum size of TCP message.

See Also:
Constant Field Values

srcPort

private short srcPort
16-bit source port number.


dstPort

private short dstPort
16 bit destination port number.


seqNum

private int seqNum
32 bit sequence number of first data octet in this segment.


ackNum

private int ackNum
32 bit acknowledgement number.


offsetAndFlags

private short offsetAndFlags
16 bit offset and flags. this contains: 4 bit data offset (number of 32 bit words in the TCP header) 6 bit reserved 1 bit URG - urgent pointer field significant 1 bit ACK - acknowledgement field significant 1 bit PSH - push function 1 bit RST - reset the connection 1 bit SYN - synchronize sequence numbers 1 bit FIN - no more data from sender


windowSize

private short windowSize
16 bit window size (number of data octets to be accepted).


errorChecksum

private short errorChecksum
checksum.


urgentPointer

private short urgentPointer
current value of the urgent pointer as a positive offset from the sequence number.


options

private TransTcp.TcpOptions options
options field (contains padding to make this field 32 bit boundary).


payload

private Message payload
data.

Constructor Detail

TransTcp.TcpMessage

public TransTcp.TcpMessage(short srcPort,
                           short dstPort,
                           int seqNum,
                           int ackNum,
                           short offset,
                           boolean URG,
                           boolean ACK,
                           boolean PSH,
                           boolean RST,
                           boolean SYN,
                           boolean FIN,
                           short windowSize,
                           Message data)
constructor for TcpMessage.

Parameters:
srcPort - source port number
dstPort - destination port number
seqNum - sequence number
ackNum - acknowledgement number
offset - data offset (start of data in the header; used when the packet has options)
URG - urgent flag
ACK - acknowledgement flag
PSH - push flag
RST - reset flag
SYN - SYN flag
FIN - FIN flag
windowSize - size of receiving window
data - data

TransTcp.TcpMessage

public TransTcp.TcpMessage(byte[] data,
                           int offset)
constructor for TcpMessage (reconstruct TcpMessage from byte array).

Parameters:
data - array containing TCP message
offset - start index to read the array
Method Detail

createSYNPacket

public static TransTcp.TcpMessage createSYNPacket(int sourcePort,
                                                  int destPort,
                                                  int seqNumber,
                                                  short windowSize)
Method called to create a SYN packet.

Parameters:
sourcePort - source port number
destPort - destination port number
seqNumber - sequence number
windowSize - size of receiving window
Returns:
SYN packet

createSYNACKPacket

public static TransTcp.TcpMessage createSYNACKPacket(int sourcePort,
                                                     int destPort,
                                                     int seqNumber,
                                                     int ackNumber,
                                                     short windowSize)
Method called to create a SYNACK packet.

Parameters:
sourcePort - source port number
destPort - destination port number
seqNumber - sequence number
ackNumber - acknowledgement number
windowSize - size of receiving window
Returns:
SYNACK packet

createACKPacket

public static TransTcp.TcpMessage createACKPacket(int sourcePort,
                                                  int destPort,
                                                  int seqNumber,
                                                  int ackNumber,
                                                  short windowSize)
Method called to create an ACK packet.

Parameters:
sourcePort - source port number
destPort - destination port number
seqNumber - sequence number
ackNumber - acknowledgement number
windowSize - size of receiving window
Returns:
first ACK packet (ACK for SYNACK packet)

createFINPacket

public static TransTcp.TcpMessage createFINPacket(int sourcePort,
                                                  int destPort,
                                                  int seqNumber,
                                                  int ackNumber,
                                                  short windowSize)
Method called to create a FIN packet.

Parameters:
sourcePort - source port number
destPort - destination port number
seqNumber - sequence number
ackNumber - acknowledgement number
windowSize - size of receiving window
Returns:
FIN packet

createRSTPacket

public static TransTcp.TcpMessage createRSTPacket(int sourcePort,
                                                  int destPort,
                                                  int seqNumber,
                                                  int ackNumber,
                                                  short windowSize)
Method called to create a RST packet.

Parameters:
sourcePort - source port number
destPort - destination port number
seqNumber - sequence number
ackNumber - acknowledgement number
windowSize - size of receiving window
Returns:
RST packet

getSrcPort

public short getSrcPort()
Accessor for source port.

Returns:
source port

getDstPort

public short getDstPort()
Accessor for destination port.

Returns:
destination port

getSeqNum

public int getSeqNum()
Accessor for sequence number.

Returns:
sequence number

getAckNum

public int getAckNum()
Accessor for acknowledgement number.

Returns:
acknowledgement number

getOffset

public short getOffset()
Accessor for offset in the message.

Returns:
offset from the beginning to header to data

getURG

public boolean getURG()
Accessor for URGENT flag.

Returns:
state of the URG flag (true if flag is set)

getACK

public boolean getACK()
Accessor for ACK flag.

Returns:
state of the ACK flag (true if flag is set)

getPSH

public boolean getPSH()
Accessor for PSH flag.

Returns:
state of the PSH flag (true if flag is set)

getRST

public boolean getRST()
Accessor for RST flag.

Returns:
state of the RST flag (true if flag is set)

getSYN

public boolean getSYN()
Accessor for SYN flag.

Returns:
state of the SYN flag (true if flag is set)

getFIN

public boolean getFIN()
Accessor for FIN flag.

Returns:
state of the FIN flag (true if flag is set)

getWindowSize

public short getWindowSize()
Accessor for window size.

Returns:
window size

getOptions

public TransTcp.TcpOptions getOptions()
Accessor for options.

Returns:
TcpOptions object

getPayload

public Message getPayload()
Accessor for payload.

Returns:
payload

getSize

public int getSize()
Returns the size of the TCP message.

Returns:
size of message

getBytes

public void getBytes(byte[] msg,
                     int offset)
Retrieves the message in byte array.

Parameters:
msg - byte array to store the message
offset - start index of the destination array

toString

public java.lang.String toString()
Returns string representation of the TCP message.

Overrides:
toString in class java.lang.Object
Returns:
string representation of the message

printMessage

public void printMessage(int numTabs,
                         boolean isPrintPayload)
Prints out the message header and payload.

Parameters:
numTabs - number of tabs
isPrintPayload - set to true to print out payload in message

printMessage

public void printMessage()
Prints out the message header with zero tabs.


printMessage

public void printMessage(int numTabs)
Prints out the message header.

Parameters:
numTabs - number of tabs