Provided by: libnet-frame-perl_1.16-2_all bug

NAME

       Net::Frame::Layer::TCP - Transmission Control Protocol layer object

SYNOPSIS

          use Net::Frame::Layer::TCP qw(:consts);

          # Build a layer
          my $layer = Net::Frame::Layer::TCP->new(
             src      => getRandomHighPort(),
             dst      => 0,
             seq      => getRandom32bitsInt(),
             ack      => 0,
             x2       => 0,
             off      => 0,
             flags    => NF_TCP_FLAGS_SYN,
             win      => 0xffff,
             checksum => 0,
             urp      => 0,
             options  => '',
          );
          $layer->pack;

          print 'RAW: '.$layer->dump."\n";

          # Read a raw layer
          my $layer = Net::Frame::Layer::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::Frame::Layer 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.

       The following are inherited attributes. See Net::Frame::Layer for more information.

       raw
       payload
       nextLayer

METHODS

       new
       new (hash)
           Object constructor. You can pass attributes that will overwrite default ones. See
           SYNOPSIS for default values.

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

       getOptionsLength
           Returns options length in bytes.

       computeLengths
           Computes various lengths contained within this layer.

       computeChecksums ({ type => PROTO, src => IP, dst => IP })
           In order to compute checksums of TCP, you need to pass the protocol type (IPv4, IPv6),
           the source and destination IP addresses (IPv4 for IPv4, IPv6 for IPv6).

       getKey
       getKeyReverse
           These two methods are basically used to increase the speed when using recv method from
           Net::Frame::Simple. Usually, you write them when you need to write match method.

       match (Net::Frame::Layer::TCP object)
           This method is mostly used internally. You pass a Net::Frame::Layer::TCP layer as a
           parameter, and it returns true if this is a response corresponding for the request, or
           returns false if not.

       The following are inherited methods. Some of them may be overridden in this layer, and
       some others may not be meaningful in this layer. See Net::Frame::Layer for more
       information.

       layer
       computeLengths
       computeChecksums
       pack
       unpack
       encapsulate
       getLength
       getPayloadLength
       print
       dump

CONSTANTS

       Load them: use Net::Frame::Layer::TCP qw(:consts);

       NF_TCP_FLAGS_FIN
       NF_TCP_FLAGS_SYN
       NF_TCP_FLAGS_RST
       NF_TCP_FLAGS_PSH
       NF_TCP_FLAGS_ACK
       NF_TCP_FLAGS_URG
       NF_TCP_FLAGS_ECE
       NF_TCP_FLAGS_CWR
           TCP flags constants.

SEE ALSO

       Net::Frame::Layer

AUTHOR

       Patrice <GomoR> Auffret

COPYRIGHT AND LICENSE

       Copyright (c) 2006-2015, Patrice <GomoR> Auffret

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