---
name: "packet.transport.tcp"
section: "3"
platform: "linux"
package: "nfstest"
version: "3.2-3"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/packet.transport.tcp"
---

# packet.transport.tcp(3)

TCP module

## NAME

packet.transport.tcp - TCP module

## DESCRIPTION

Decode TCP layer.

RFC  793 TRANSMISSION CONTROL PROTOCOL RFC 2018 TCP Selective Acknowledgment Options RFC 7323 TCP Extensions for High Performance

## CLASSES

### class Flags(packet.utils.OptionFlags)

```
TCP Option flags
```

**Methods defined here:** ---------------------

**\_\_str\_\_ = str\_flags(self)**

### class Option(baseobj.BaseObj)

```
Option object
```

**Methods defined here:** ---------------------

**\_\_init\_\_(self, unpack)** Constructor which takes an unpack object as input

### class Stream(baseobj.BaseObj)

```
TCP stream buffer object
```

**Methods defined here:** ---------------------

**\_\_init\_\_(self, seqno)** Constructor

Initialize object's private data according to the arguments given. Arguments can be given as positional, named arguments or a combination of both.

**add\_fragment(self, data, seq)** Add fragment data to stream buffer

**missing\_fragment(self, seq)** Check if given sequence number is within a missing fragment

### class TCP(baseobj.BaseObj)

```
TCP object
Usage:
    from packet.transport.tcp import TCP
    x = TCP(pktt)
Object definition:
TCP(
    src_port    = int, # Source port
    dst_port    = int, # Destination port
    seq_number  = int, # Sequence number
    ack_number  = int, # Acknowledgment number
    hl          = int, # Data offset or header length (32bit words)
    header_size = int, # Data offset or header length in bytes
    flags = Flags(     # TCP flags:
        rawflags = int,#   Raw flags
        FIN = int,     #   No more data from sender
        SYN = int,     #   Synchronize sequence numbers
        RST = int,     #   Synchronize sequence numbers
        PSH = int,     #   Push function. Asks to push the buffered
                       #     data to the receiving application
        ACK = int,     #   Acknowledgment field is significant
        URG = int,     #   Urgent pointer field is significant
        ECE = int,     #   ECN-Echo has a dual role:
                       #     SYN=1, the TCP peer is ECN capable.
                       #     SYN=0, packet with Congestion Experienced
                       #     flag in IP header set is received during
                       #     normal transmission
        CWR = int,     #   Congestion Window Reduced
        NS  = int,     #   ECN-nonce concealment protection
    ),
    window_size = int, # Window size
    checksum    = int, # Checksum
    urgent_ptr  = int, # Urgent pointer
    seq         = int, # Relative sequence number
    options = list,    # List of TCP options
    psize = int,       # Payload data size
    data = string,     # Raw data of payload if unable to decode
)
```

**Methods defined here:** ---------------------

**\_\_init\_\_(self, pktt)** Constructor

Initialize object's private data.

- **pktt:**

  Packet trace object (packet.pktt.Pktt) so this layer has access to the parent layers.

**\_\_str\_\_(self)** String representation of object

The representation depends on the verbose level set by debug\_repr(). If set to 0 the generic object representation is returned. If set to 1 the representation of the object is condensed:\
     'TCP 708 -\> 2049, seq: 0xc4592255, ack: 0xca66dda1, ACK,FIN'

If set to 2 the representation of the object also includes the length of payload and a little bit more verbose:\
     'src port 708 -\> dst port 2049, seq: 0xc4592255, ack: 0xca66dda1, len: 0, flags: FIN,ACK'

## SEE ALSO

**[baseobj(3)](/baseobj/3.md),** **[packet.application.dns(3)](/packet.application.dns/3.md),** **[packet.application.krb5(3)](/packet.application.krb5/3.md),** **[packet.application.rpc(3)](/packet.application.rpc/3.md),** **[packet.transport.mpa(3)](/packet.transport.mpa/3.md),** **[packet.unpack(3)](/packet.unpack/3.md),** **[packet.utils(3)](/packet.utils/3.md)**

## BUGS

No known bugs.

## AUTHOR

Jorge Mora (mora@netapp.com)
