Net::Packet::TCP(3)

NAME
Net::Packet::TCP - Transmission Control Protocol layer 4 object

SYNOPSIS
   use Net::Packet::Consts qw(:tcp);
   require Net::Packet::TCP;

   # Build a layer
   my $layer = Net::Packet::TCP->new(
      dst     => 22,
      options => "\x02\x04\x05\xb4", # MSS=1460
   );
   $layer->pack;

   print 'RAW: '.unpack('H*', $layer->raw)."\n";

   # Read a raw layer
   my $layer = Net::Packet::TCP->new(raw => $raw);

   print $layer->print."\n";
   print 'PAYLOAD: '.unpack('H*', $layer->payload)."\n"
      if $layer->payload;

DESCRIPTION
This modules implements the encoding and decoding of the TCP layer.

RFC: ftp://ftp.rfc-editor.org/in-notes/rfc793.txt

See also Net::Packet::Layer and Net::Packet::Layer4 for other attributes and methods.

ATTRIBUTES

src
dst Source and destination ports.

flags
    TCP flags, see CONSTANTS.

win The window size.

seq
ack Sequence and acknowledgment numbers.

off The size in number of words of the TCP header.

x2  Reserved field.

checksum
    The TCP header checksum.

urp Urgent pointer.

options
    TCP options, as a hexadecimal string.

METHODS

new Object constructor. You can pass attributes that will overwrite default ones. Default values:

    src: getRandomHighPort()

    dst: 0

    seq: getRandom32bitsInt()

    ack: 0

    x2: 0

    off: 0

    flags: NP_TCP_FLAG_SYN

    win: 0xffff

    checksum: 0

    urp: 0

    options: ""

recv
    Will search for a matching replies in framesSorted or frames from a Net::Packet::Dump object.

pack
    Packs all attributes into a raw format, in order to inject to network. Returns 1 on success, undef otherwise.

unpack
    Unpacks raw data from network and stores attributes into the object. Returns 1 on success, undef otherwise.

getHeaderLength
    Returns the header length in bytes, not including TCP options.

getOptionsLength
    Returns options length in bytes.

haveFlagFin
haveFlagSyn
haveFlagRst
haveFlagPsh
haveFlagAck
haveFlagUrg
haveFlagEce
haveFlagCwr
    Returns 1 if the specified TCP flag is set in flags attribute, 0 otherwise.

CONSTANTS
Load them: use Net::Packet::Consts qw(:tcp);

NP_TCP_FLAG_FIN
NP_TCP_FLAG_SYN
NP_TCP_FLAG_RST
NP_TCP_FLAG_PSH
NP_TCP_FLAG_ACK
NP_TCP_FLAG_URG
NP_TCP_FLAG_ECE
NP_TCP_FLAG_CWR
    TCP flag constants.

AUTHOR
Patrice <GomoR> Auffret

COPYRIGHT AND LICENSE
Copyright (c) 2004-2009, Patrice <GomoR> Auffret

You may distribute this module under the terms of the Artistic license. See LICENSE.Artistic file in the source distribution archive.

RELATED MODULES
NetPacket, Net::RawIP, Net::RawSock