TCP - Transmission Control Protocol

pcapkit.protocols.transport.tcp contains TCP only, which implements extractor for Transmission Control Protocol (TCP) [*], whose structure is described as below:

Octets

Bits

Name

Description

0

0

tcp.srcport

Source Port

2

16

tcp.dstport

Destination Port

4

32

tcp.seq

Sequence Number

8

64

tcp.ack

Acknowledgement Number (if ACK set)

12

96

tcp.hdr_len

Data Offset

12

100

Reserved (must be \x00)

12

103

tcp.flags.ns

ECN Concealment Protection (NS)

13

104

tcp.flags.cwr

Congestion Window Reduced (CWR)

13

105

tcp.flags.ece

ECN-Echo (ECE)

13

106

tcp.flags.urg

Urgent (URG)

13

107

tcp.flags.ack

Acknowledgement (ACK)

13

108

tcp.flags.psh

Push Function (PSH)

13

109

tcp.flags.rst

Reset Connection (RST)

13

110

tcp.flags.syn

Synchronize Sequence Numbers (SYN)

13

111

tcp.flags.fin

Last Packet from Sender (FIN)

14

112

tcp.window_size

Size of Receive Window

16

128

tcp.checksum

Checksum

18

144

tcp.urgent_pointer

Urgent Pointer (if URG set)

20

160

tcp.opt

TCP Options (if data offset > 5)

class pcapkit.protocols.transport.tcp.TCP(file=None, length=None, **kwargs)[source]

Bases: Transport[TCP, TCP]

This class implements Transmission Control Protocol.

This class currently supports parsing of the following protocols, which are registered in the self.__proto__ attribute:

This class currently supports parsing of the following TCP options, which are directly mapped to the pcapkit.const.tcp.option.Option enumeration:

This class currently supports parsing of the following Multipath TCP options, which are directly mapped to the pcapkit.const.tcp.mp_tcp_option.MPTCPOption enumeration:

property name: Literal['Transmission Control Protocol']

Name of current protocol.

property length: int

Header length of current protocol.

property src: AppType

Source port.

property dst: AppType

Destination port.

property connection: Flags

Connection flags.

classmethod register_option(code, meth)[source]

Register an option parser.

Parameters:
Return type:

None

classmethod register_mp_option(code, meth)[source]

Register an MPTCP option parser.

Parameters:
Return type:

None

read(length=None, **kwargs)[source]

Read Transmission Control Protocol (TCP).

Structure of TCP header [RFC 793]:

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|          Source Port          |       Destination Port        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                        Sequence Number                        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                   Acknowledgement Number                      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  Data |           |U|A|P|R|S|F|                               |
| Offset| Reserved  |R|C|S|S|Y|I|            Window             |
|       |           |G|K|H|T|N|N|                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|           Checksum            |         Urgent Pointer        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                    Options                    |    Padding    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                             data                              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Parameters:
  • length (Optional[int]) – Length of packet data.

  • **kwargs (Any) – Arbitrary keyword arguments.

Return type:

TCP

Returns:

Parsed packet data.

make(srcport=0, dstport=0, seq_no=0, ack_no=0, ns=False, cwr=False, ece=False, urg=False, ack=False, psh=False, rst=False, syn=False, fin=False, window=65535, checksum=b'\\x00\\x00', urgent=0, options=None, payload=b'', **kwargs)[source]

Make (construct) packet data.

Parameters:
Return type:

TCP

Returns:

Constructed packet data.

classmethod _make_data(data)[source]

Create key-value pairs from data for protocol construction.

Parameters:

data (TCP) – protocol data

Return type:

dict[str, Any]

Returns:

Key-value pairs for protocol construction.

_read_tcp_options(size)[source]

Read TCP option list.

Parameters:

size (int) – length of option list

Return type:

OrderedMultiDict[Option, Option]

Returns:

Extracted TCP options.

Raises:

ProtocolError – If the threshold is NOT matching.

_read_mode_donone(schema, *, options)[source]

Read options request no process.

Parameters:
Return type:

UnassignedOption

Returns:

Parsed option data.

_read_mode_eool(schema, *, options)[source]

Read TCP End of Option List option.

Structure of TCP end of option list option [RFC 793]:

+--------+
|00000000|
+--------+
 Kind=0
Parameters:
Return type:

EndOfOptionList

Returns:

Parsed option data.

_read_mode_nop(schema, *, options)[source]

Read TCP No Operation option.

Structure of TCP maximum segment size option [RFC 793]:

+--------+
|00000001|
+--------+
 Kind=1
Parameters:
Return type:

NoOperation

Returns:

Parsed option data.

_read_mode_mss(schema, *, options)[source]

Read TCP max segment size option.

Structure of TCP maximum segment size option [RFC 793]:

+--------+--------+---------+--------+
|00000010|00000100|   max seg size   |
+--------+--------+---------+--------+
 Kind=2   Length=4
Parameters:
Return type:

MaximumSegmentSize

Returns:

Parsed option data.

Raises:

ProtocolError – If length is NOT 4.

_read_mode_ws(schema, *, options)[source]

Read TCP windows scale option.

Structure of TCP window scale option [RFC 7323]:

+---------+---------+---------+
| Kind=3  |Length=3 |shift.cnt|
+---------+---------+---------+
     1         1         1
Parameters:
Return type:

WindowScale

Returns:

Parsed option data.

Raises:

ProtocolError – If length is NOT 3.

_read_mode_sackpmt(schema, *, options)[source]

Read TCP SACK permitted option.

Structure of TCP SACK permitted option [RFC 2018]:

+---------+---------+
| Kind=4  | Length=2|
+---------+---------+
Parameters:
Return type:

SACKPermitted

Returns:

Parsed option data.

Raises:

ProtocolError – If length is NOT 2.

_read_mode_sack(schema, *, options)[source]

Read TCP SACK option.

Structure of TCP SACK option [RFC 2018]:

                  +--------+--------+
                  | Kind=5 | Length |
+--------+--------+--------+--------+
|      Left Edge of 1st Block       |
+--------+--------+--------+--------+
|      Right Edge of 1st Block      |
+--------+--------+--------+--------+
|                                   |
/            . . .                  /
|                                   |
+--------+--------+--------+--------+
|      Left Edge of nth Block       |
+--------+--------+--------+--------+
|      Right Edge of nth Block      |
+--------+--------+--------+--------+
Parameters:
Return type:

SACK

Returns:

Parsed option data.

Raises:

ProtocolError – If length is NOT multiply of 8 plus 2.

_read_mode_echo(schema, *, options)[source]

Read TCP echo option.

Structure of TCP echo option [RFC 1072]:

+--------+--------+--------+--------+--------+--------+
| Kind=6 | Length |   4 bytes of info to be echoed    |
+--------+--------+--------+--------+--------+--------+
Parameters:
Return type:

Echo

Returns:

Parsed option data.

Raises:

ProtocolError – If length is NOT 6.

_read_mode_echore(schema, *, options)[source]

Read TCP echo reply option.

Structure of TCP echo reply option [RFC 1072]:

+--------+--------+--------+--------+--------+--------+
| Kind=7 | Length |    4 bytes of echoed info         |
+--------+--------+--------+--------+--------+--------+
Parameters:
Return type:

EchoReply

Returns:

Parsed option data.

Raises:

ProtocolError – If length is NOT 6.

_read_mode_ts(schema, *, options)[source]

Read TCP timestamps option.

Structure of TCP timestamp option [RFC 7323]:

+-------+-------+---------------------+---------------------+
|Kind=8 |  10   |   TS Value (TSval)  |TS Echo Reply (TSecr)|
+-------+-------+---------------------+---------------------+
    1       1              4                     4
Parameters:
Return type:

Timestamps

Returns:

Parsed option data.

Raises:

ProtocolError – If length is NOT 10.

_read_mode_poc(schema, *, options)[source]

Read TCP partial order connection service profile option.

Structure of TCP POC-Permitted option [RFC 1693][RFC 6247]:

+-----------+-------------+
|  Kind=9   |  Length=2   |
+-----------+-------------+
Parameters:
Return type:

PartialOrderConnectionPermitted

Returns:

Parsed option data.

Raises:

ProtocolError – If length is NOT 2.

_read_mode_pocsp(schema, *, options)[source]

Read TCP partial order connection service profile option.

Structure of TCP POC-SP option [RFC 1693][RFC 6247]:

                          1 bit        1 bit    6 bits
+----------+----------+------------+----------+--------+
|  Kind=10 | Length=3 | Start_flag | End_flag | Filler |
+----------+----------+------------+----------+--------+
Parameters:
Return type:

PartialOrderServiceProfile

Returns:

Parsed option data.

Raises:

ProtocolError – If length is NOT 3.

_read_mode_cc(schema, *, options)[source]

Read TCP connection count option.

Structure of TCP CC option [RFC 1644]:

+--------+--------+--------+--------+--------+--------+
|00001011|00000110|    Connection Count:  SEG.CC      |
+--------+--------+--------+--------+--------+--------+
 Kind=11  Length=6
Parameters:
Return type:

CC

Returns:

Parsed option data.

Raises:

ProtocolError – If length is NOT 6.

_read_mode_ccnew(schema, *, options)[source]

Read TCP connection count (new) option.

Structure of TCP CC.NEW option [RFC 1644]:

+--------+--------+--------+--------+--------+--------+
|00001100|00000110|    Connection Count:  SEG.CC      |
+--------+--------+--------+--------+--------+--------+
 Kind=12  Length=6
Parameters:
Return type:

CCNew

Returns:

Parsed option data.

Raises:

ProtocolError – If length is NOT 6.

_read_mode_ccecho(schema, *, options)[source]

Read TCP connection count (echo) option.

Structure of TCP CC.ECHO option [RFC 1644]:

+--------+--------+--------+--------+--------+--------+
|00001101|00000110|    Connection Count:  SEG.CC      |
+--------+--------+--------+--------+--------+--------+
 Kind=13  Length=6
Parameters:
Return type:

CCEcho

Returns:

Parsed option data.

Raises:

ProtocolError – If length is NOT 6.

_read_mode_chkreq(schema, *, options)[source]

Read TCP Alternate Checksum Request option.

Structure of TCP CHKSUM-REQ [RFC 1146][RFC 6247]:

+----------+----------+----------+
|  Kind=14 | Length=3 |  chksum  |
+----------+----------+----------+
Parameters:
Return type:

AlternateChecksumRequest

Returns:

Parsed option data.

Raises:

ProtocolError – If length is NOT 3.

_read_mode_chksum(schema, *, options)[source]

Read Alternate Checksum Data option.

Structure of TCP CHKSUM [RFC 1146][RFC 6247]:

+---------+---------+---------+     +---------+
| Kind=15 |Length=N |  data   | ... |  data   |
+---------+---------+---------+     +---------+
Parameters:
Return type:

AlternateChecksumData

Returns:

Parsed option data.

_read_mode_sig(schema, *, options)[source]

Read MD5 Signature option.

Structure of TCP SIG option [RFC 2385]:

+---------+---------+-------------------+
| Kind=19 |Length=18|   MD5 digest...   |
+---------+---------+-------------------+
|                                       |
+---------------------------------------+
|                                       |
+---------------------------------------+
|                                       |
+-------------------+-------------------+
|                   |
+-------------------+
Parameters:
Return type:

MD5Signature

Returns:

Parsed option data.

Raises:

ProtocolError – If length is NOT 18.

_read_mode_qs(schema, *, options)[source]

Read Quick-Start Response option.

Structure of TCP QSopt [RFC 4782]:

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     Kind      |  Length=8     | Resv. | Rate  |   TTL Diff    |
|               |               |       |Request|               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                   QS Nonce                                | R |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Parameters:
Return type:

QuickStartResponse

Returns:

Parsed option data.

Raises:

ProtocolError – If length is NOT 8.

_read_mode_timeout(schema, *, options)[source]

Read User Timeout option.

Structure of TCP TIMEOUT [RFC 5482]:

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|   Kind = 28   |   Length = 4  |G|        User Timeout         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Parameters:
Return type:

UserTimeout

Returns:

Parsed option data.

Raises:

ProtocolError – If length is NOT 4.

_read_mode_ao(schema, *, options)[source]

Read Authentication option.

Structure of TCP AOopt [RFC 5925]:

+------------+------------+------------+------------+
|  Kind=29   |   Length   |   KeyID    | RNextKeyID |
+------------+------------+------------+------------+
|                     MAC           ...
+-----------------------------------...

...-----------------+
...  MAC (con't)    |
...-----------------+
Parameters:
Return type:

Authentication

Returns:

Parsed option data.

Raises:

ProtocolError – If length is NOT larger than or equal to 4.

_read_mode_mp(schema, *, options)[source]

Read Multipath TCP option.

Structure of MP-TCP [RFC 6824]:

                     1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+---------------+---------------+-------+-----------------------+
|     Kind      |    Length     |Subtype|                       |
+---------------+---------------+-------+                       |
|                     Subtype-specific data                     |
|                       (variable length)                       |
+---------------------------------------------------------------+
Parameters:
Return type:

MPTCP

Returns:

Parsed option data.

_read_mode_fastopen(schema, *, options)[source]

Read Fast Open option.

Structure of TCP FASTOPEN [RFC 7413]:

                                +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                                |      Kind     |    Length     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
~                            Cookie                             ~
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Parameters:
Return type:

FastOpenCookie

Returns:

Parsed option data.

Raises:

ProtocolError – If length is NOT valid.

_read_mptcp_unknown(schema, *, options)[source]

Read unknown MPTCP subtype.

Parameters:
Return type:

MPTCPUnknown

Returns:

Parsed option data.

_read_mptcp_capable(schema, *, options)[source]

Read Multipath Capable option.

Structure of MP_CAPABLE [RFC 6824]:

                     1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+---------------+---------------+-------+-------+---------------+
|     Kind      |    Length     |Subtype|Version|A|B|C|D|E|F|G|H|
+---------------+---------------+-------+-------+---------------+
|                   Option Sender's Key (64 bits)               |
|                                                               |
|                                                               |
+---------------------------------------------------------------+
|                  Option Receiver's Key (64 bits)              |
|                     (if option Length == 20)                  |
|                                                               |
+---------------------------------------------------------------+
Parameters:
Return type:

MPTCPCapable

Returns:

Parsed option data.

Raises:

ProtocolError – If length is NOT 20 or 32.

_read_mptcp_join(schema, *, options)[source]

Read Join Connection option.

Parameters:
Return type:

MPTCPJoin

Returns:

Parsed option data.

Raises:

ProtocolError – If the option is not given on a valid SYN/ACK packet.

_read_mptcp_dss(schema, *, options)[source]

Read Data Sequence Signal (Data ACK and Data Sequence Mapping) option.

Structure of DSS [RFC 6824]:

                     1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+---------------+---------------+-------+----------------------+
|     Kind      |    Length     |Subtype| (reserved) |F|m|M|a|A|
+---------------+---------------+-------+----------------------+
|                                                              |
|           Data ACK (4 or 8 octets, depending on flags)       |
|                                                              |
+--------------------------------------------------------------+
|                                                              |
|   Data sequence number (4 or 8 octets, depending on flags)   |
|                                                              |
+--------------------------------------------------------------+
|              Subflow Sequence Number (4 octets)              |
+-------------------------------+------------------------------+
|  Data-Level Length (2 octets) |      Checksum (2 octets)     |
+-------------------------------+------------------------------+
Parameters:
Return type:

MPTCPDSS

Returns:

Parsed option data.

_read_mptcp_addaddr(schema, *, options)[source]

Read Add Address option.

Structure of ADD_ADDR [RFC 6824]:

                     1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+---------------+---------------+-------+-------+---------------+
|     Kind      |     Length    |Subtype| IPVer |  Address ID   |
+---------------+---------------+-------+-------+---------------+
|          Address (TCP - 4 octets / IPv6 - 16 octets)         |
+-------------------------------+-------------------------------+
|   Port (2 octets, optional)   |
+-------------------------------+
Parameters:
Return type:

MPTCPAddAddress

Returns:

Parsed option data.

Raises:

ProtocolError – Invalid IP version and/or addresses.

_read_mptcp_remove(schema, *, options)[source]

Read Remove Address option.

Structure of REMOVE_ADDR [RFC 6824]:

                     1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+---------------+---------------+-------+-------+---------------+
|     Kind      |  Length = 3+n |Subtype|(resvd)|   Address ID  | ...
+---------------+---------------+-------+-------+---------------+
                           (followed by n-1 Address IDs, if required)
Parameters:
Return type:

MPTCPRemoveAddress

Returns:

Parsed option data.

Raises:

ProtocolError – If the length is smaller than 3.

_read_mptcp_prio(schema, *, options)[source]

Read Change Subflow Priority option.

Structure of MP_PRIO [RFC 6824]:

                      1                   2                   3
  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+---------------+---------------+-------+-----+-+--------------+
|     Kind      |     Length    |Subtype|     |B| AddrID (opt) |
+---------------+---------------+-------+-----+-+--------------+
Parameters:
Return type:

MPTCPPriority

Returns:

Parsed option data.

Raises:

ProtocolError – If the length is smaller than 3.

_read_mptcp_fail(schema, *, options)[source]

Read Fallback option.

Structure of MP_FAIL [RFC 6824]:

                     1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+---------------+---------------+-------+----------------------+
|     Kind      |   Length=12   |Subtype|      (reserved)      |
+---------------+---------------+-------+----------------------+
|                                                              |
|                 Data Sequence Number (8 octets)              |
|                                                              |
+--------------------------------------------------------------+
Parameters:
Return type:

MPTCPFallback

Returns:

Parsed option data.

Raises:

ProtocolError – If the length is NOT 12.

_read_mptcp_fastclose(schema, options)[source]

Read Fast Close option.

Structure of MP_FASTCLOSE [RFC 6824]:

                     1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+---------------+---------------+-------+-----------------------+
|     Kind      |    Length     |Subtype|      (reserved)       |
+---------------+---------------+-------+-----------------------+
|                      Option Receiver's Key                    |
|                            (64 bits)                          |
|                                                               |
+---------------------------------------------------------------+
Parameters:
Return type:

MPTCPFastclose

Returns:

Parsed option data.

Raises:

ProtocolError – If the length is NOT 16.

_read_join_syn(schema, *, options)[source]

Read Join Connection option for Initial SYN.

Structure of MP_JOIN-SYN [RFC 6824]:

                     1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+---------------+---------------+-------+-----+-+---------------+
|     Kind      |  Length = 12  |Subtype|     |B|   Address ID  |
+---------------+---------------+-------+-----+-+---------------+
|                   Receiver's Token (32 bits)                  |
+---------------------------------------------------------------+
|                Sender's Random Number (32 bits)               |
+---------------------------------------------------------------+
Parameters:
Return type:

MPTCPJoinSYN

Returns:

Parsed option data.

Raises:

ProtocolError – If length is NOT 12.

_read_join_synack(schema, options)[source]

Read Join Connection option for Responding SYN/ACK.

Structure of MP_JOIN-SYN/ACK [RFC 6824]:

                     1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+---------------+---------------+-------+-----+-+---------------+
|     Kind      |  Length = 16  |Subtype|     |B|   Address ID  |
+---------------+---------------+-------+-----+-+---------------+
|                                                               |
|                Sender's Truncated HMAC (64 bits)              |
|                                                               |
+---------------------------------------------------------------+
|                Sender's Random Number (32 bits)               |
+---------------------------------------------------------------+
Parameters:
Return type:

MPTCPJoinSYNACK

Returns:

Parsed option data.

Raises:

ProtocolError – If length is NOT 20.

_read_join_ack(schema, *, options)[source]

Read Join Connection option for Third ACK.

Structure of MP_JOIN-ACK [RFC 6824]:

                     1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+---------------+---------------+-------+-----------------------+
|     Kind      |  Length = 24  |Subtype|      (reserved)       |
+---------------+---------------+-------+-----------------------+
|                                                               |
|                                                               |
|                   Sender's HMAC (160 bits)                    |
|                                                               |
|                                                               |
+---------------------------------------------------------------+
Parameters:
Return type:

MPTCPJoinACK

Returns:

Parsed option data.

Raises:

ProtocolError – If length is NOT 24.

_make_tcp_options(options)[source]

Make options for TCP.

Parameters:

options (list[Option | tuple[Option, dict[str, Any]] | bytes] | OrderedMultiDict[Option, Option]) – TCP options

Return type:

tuple[list[Option | bytes], int]

Returns:

Tuple of options and total length of options.

_make_mode_donone(code, opt=None, *, data=b'', **kwargs)[source]

Make TCP unassigned option.

Parameters:
Return type:

UnassignedOption

Returns:

Constructed option schema.

_make_mode_eool(code, opt=None, **kwargs)[source]

Make TCP End of Option List option.

Parameters:
Return type:

EndOfOptionList

Returns:

Constructed option schema.

_make_mode_nop(code, opt=None, **kwargs)[source]

Make TCP NoOperation option.

Parameters:
Return type:

NoOperation

Returns:

Constructed option schema.

_make_mode_mss(code, opt=None, *, mss=65535, **kwargs)[source]

Make TCP maximum segment size option.

Parameters:
Return type:

MaximumSegmentSize

Returns:

Constructed option schema.

_make_mode_ws(code, opt=None, *, shift=0, **kwargs)[source]

Make TCP window scale option.

Parameters:
  • code (Option) – option code

  • opt (Optional[WindowScale]) – option data

  • shift (int) – window scale shift count

  • **kwargs (Any) – arbitrary keyword arguments

Return type:

WindowScale

Returns:

Constructed option schema.

_make_mode_sackpmt(code, opt=None, **kwargs)[source]

Make TCP SACK permitted option.

Parameters:
Return type:

SACKPermitted

Returns:

Constructed option schema.

_make_mode_sack(code, opt=None, *, sack=None, **kwargs)[source]

Make TCP SACK option.

Parameters:
Return type:

SACK

Returns:

Constructed option schema.

_make_mode_echo(code, opt=None, *, data=b'\\x00\\x00\\x00\\x00', **kwargs)[source]

Make TCP echo option.

Parameters:
  • code (Option) – option code

  • opt (Optional[Echo]) – option data

  • data (bytes) – 4 bytes of info to be echoed

  • **kwargs (Any) – arbitrary keyword arguments

Return type:

Echo

Returns:

Constructed option schema.

_make_mode_echore(code, opt=None, *, data=b'\\x00\\x00\\x00\\x00', **kwargs)[source]

Make TCP echo reply option.

Parameters:
  • code (Option) – option code

  • opt (Optional[EchoReply]) – option data

  • data (bytes) – 4 bytes of echoed info

  • **kwargs (Any) – arbitrary keyword arguments

Return type:

EchoReply

Returns:

Constructed option schema.

_make_mode_ts(code, opt=None, *, tsval=0, tsecr=0, **kwargs)[source]

Make TCP timestamps option.

Parameters:
  • code (Option) – option code

  • opt (Optional[Timestamps]) – option data

  • tsval (int) – timestamp value

  • tsecr (int) – timestamp echo reply

  • **kwargs (Any) – arbitrary keyword arguments

Return type:

Timestamps

Returns:

Constructed option schema.

_make_mode_poc(code, opt=None, **kwargs)[source]

Make TCP partial order connection option.

Parameters:
Return type:

PartialOrderConnectionPermitted

Returns:

Constructed option schema.

_make_mode_pocsp(code, opt=None, *, start=False, end=False, **kwargs)[source]

Make TCP partial order connection service profile option.

Parameters:
Return type:

PartialOrderServiceProfile

Returns:

Constructed option schema.

_make_mode_cc(code, opt=None, *, count=0, **kwargs)[source]

Make TCP connection count option.

Parameters:
  • code (Option) – option code

  • opt (Optional[CC]) – option data

  • count (int) – connection count

  • **kwargs (Any) – arbitrary keyword arguments

Return type:

CC

Returns:

Constructed option schema.

_make_mode_ccnew(code, opt=None, *, count=0, **kwargs)[source]

Make TCP connection count new option.

Parameters:
  • code (Option) – option code

  • opt (Optional[CCNew]) – option data

  • count (int) – connection count

  • **kwargs (Any) – arbitrary keyword arguments

Return type:

CCNew

Returns:

Constructed option schema.

_make_mode_ccecho(code, opt=None, *, count=0, **kwargs)[source]

Make TCP connection count echo option.

Parameters:
  • code (Option) – option code

  • opt (Optional[CCEcho]) – option data

  • count (int) – connection count

  • **kwargs (Any) – arbitrary keyword arguments

Return type:

CCEcho

Returns:

Constructed option schema.

_make_mode_chkreq(code, opt=None, *, algorithm=<Checksum.TCP_checksum: 0>, algorithm_default=None, algorithm_namespace=None, algorithm_reversed=False, **kwargs)[source]

Make TCP alternate checksum request option.

Parameters:
Return type:

AlternateChecksumRequest

Returns:

Constructed option schema.

_make_mode_chksum(code, opt=None, *, data=b'', **kwargs)[source]

Make TCP alternate checksum data option.

Parameters:
Return type:

AlternateChecksumData

Returns:

Constructed option schema.

_make_mode_sig(code, opt=None, *, digest=b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00', **kwargs)[source]

Make TCP MD5 signature option.

Parameters:
Return type:

MD5Signature

Returns:

Constructed option schema.

_make_mode_qs(code, opt=None, *, rate=0, diff=0, nonce=0, **kwargs)[source]

Make TCP quick start response option.

Parameters:
Return type:

QuickStartResponse

Returns:

Constructed option schema.

_make_mode_timeout(code, opt=None, *, timeout=0, **kwargs)[source]

Make TCP user timeout option.

Parameters:
Return type:

UserTimeout

Returns:

Constructed option schema.

_make_mode_ao(code, opt=None, *, key_id=0, next_key_id=0, mac=b'', **kwargs)[source]

Make TCP authentication option.

Parameters:
Return type:

Authentication

Returns:

Constructed option schema.

_make_mode_mp(code, opt=None, *, subtype=<MPTCPOption.MP_CAPABLE: 0>, subtype_default=None, subtype_namespace=None, subtype_reversed=False, **kwargs)[source]

Make multipath TCP option.

Parameters:
Return type:

MPTCP

Returns:

Constructed option schema.

_make_mode_fastopen(code, opt=None, *, cookie=None, **kwargs)[source]

Make TCP Fast Open option.

Parameters:
Return type:

FastOpenCookie

Returns:

Constructed option schema.

_make_mptcp_unknown(subtype, opt=None, *, data=b'\\x00', **kwargs)[source]

Make unknown multipath TCP option.

Parameters:
Return type:

MPTCPUnknown

Returns:

Constructed option schema.

_make_mptcp_capable(subtype, opt=None, *, version=0, flag_req=False, flag_ext=False, flag_hsa=False, skey=0, rkey=0, **kwargs)[source]

Make multipath TCP capable option.

Parameters:
  • subtype (MPTCPOption) – MPTCP subtype

  • opt (Optional[MPTCPCapable]) – option data

  • version (int) – MPTCP version

  • flag_req (bool) – checksum required flag

  • flag_ext (bool) – extensability flag

  • flag_hsa (bool) – use of HMAC-SHA1 flag

  • skey (int) – option sender’s key

  • rkey (Optional[int]) – option receiver’s key

  • **kwargs (Any) – arbitrary keyword arguments

Return type:

MPTCPCapable

Returns:

Constructed option schema.

_make_mptcp_join(subtype, opt=None, **kwargs)[source]

Make multipath TCP join option.

Parameters:
Return type:

MPTCPJoin

Returns:

Constructed option schema.

_make_mptcp_dss(subtype, opt=None, *, data_fin=False, ack=None, dsn=None, ssn=None, dl_len=None, checksum=None, **kwargs)[source]

Make multipath TCP DSS option.

Parameters:
Return type:

MPTCPDSS

Returns:

Constructed option schema.

_make_mptcp_addaddr(subtype, opt=None, *, addr_id=0, addr='0.0.0.0', port=None, **kwargs)[source]

Make multipath TCP add address option.

Parameters:
Return type:

MPTCPAddAddress

Returns:

Constructed option schema.

_make_mptcp_remove(subtype, opt=None, *, addr_id=None, **kwargs)[source]

Make multipath TCP remove address option.

Parameters:
Return type:

MPTCPRemoveAddress

Returns:

Constructed option schema.

_make_mptcp_prio(subtype, opt=None, *, backup=False, addr_id=None, **kwargs)[source]

Make multipath TCP priority option.

Parameters:
Return type:

MPTCPPriority

Returns:

Constructed option schema.

_make_mptcp_fail(subtype, opt=None, *, dsn=0, **kwargs)[source]

Make multipath TCP fail option.

Parameters:
  • subtype (MPTCPOption) – MPTCP subtype

  • opt (Optional[MPTCPFallback]) – option data

  • dsn (int) – data sequence number

  • **kwargs (Any) – arbitrary keyword arguments

  • Returns – Constructed option schema.

Return type:

MPTCPFallback

_make_mptcp_fastclose(subtype, opt=None, *, key=0, **kwargs)[source]

Make multipath TCP fastclose option.

Parameters:
  • subtype (MPTCPOption) – MPTCP subtype

  • opt (Optional[MPTCPFastclose]) – option data

  • key (int) – option receiver’s key

  • **kwargs (Any) – arbitrary keyword arguments

  • Returns – Constructed option schema.

Return type:

MPTCPFastclose

_make_join_syn(subtype, opt=None, *, backup=False, addr_id=0, token=0, nonce=0, **kwargs)[source]

Make multipath TCP join SYN option.

Parameters:
  • subtype (MPTCPOption) – MPTCP subtype

  • opt (Optional[MPTCPJoinSYN]) – option data

  • backup (bool) – backup flag

  • addr_id (int) – address ID

  • token (int) – receiver’s token

  • nonce (int) – sender’s random number

  • **kwargs (Any) – arbitrary keyword arguments

Return type:

MPTCPJoinSYN

Returns:

Constructed option schema.

_make_join_synack(subtype, opt=None, *, backup=False, addr_id=0, hmac=b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00', nonce=0, **kwargs)[source]

Make multipath TCP join SYN/ACK option.

Parameters:
  • subtype (MPTCPOption) – MPTCP subtype

  • opt (Optional[MPTCPJoinSYNACK]) – option data

  • backup (bool) – backup flag

  • addr_id (int) – address ID

  • hmac (bytes) – sender’s truncated HMAC

  • nonce (int) – sender’s random number

  • **kwargs (Any) – arbitrary keyword arguments

Return type:

MPTCPJoinSYNACK

Returns:

Constructed option schema.

_make_join_ack(subtype, opt=None, *, hmac=b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00', **kwargs)[source]

Make multipath TCP join ACK option.

Parameters:
Return type:

MPTCPJoinACK

Returns:

Constructed option schema.

__proto__: DefaultDict[int, ModuleDescriptor[Protocol] | Type[Protocol]]

Protocol index mapping for decoding next layer, c.f. self._decode_next_layer & self._import_next_layer.

Type:

DefaultDict[int, ModuleDescriptor[Protocol] | Type[Protocol]]

__option__: DefaultDict[int, str | tuple[OptionParser, OptionConstructor]]

Option code to method mapping, c.f. _read_tcp_options() and _make_tcp_options(). Method names are expected to be referred to the class by _read_mode_${name} and _make_mode_${name}, and if such name not found, the value should then be a method that can parse the option by itself.

Type:

DefaultDict[Enum_Option, str | tuple[OptionParser, OptionConstructor]]

__mp_option__: DefaultDict[int, str | tuple[MPOptionParser, MPOptionConstructor]]

Option code to method mapping, c.f. _read_mode_mp() and _make_mode_mp(). Method names are expected to be referred to the class by _read_mptcp_${name} and _make_mptcp_${name}, and if such name not found, the value should then be a method that can parse the option by itself.

Type:

DefaultDict[Enum_MPTCPOption, str | tuple[MPOptionParser, MPOptionConstructor]]

classmethod __index__()[source]

Numeral registry index of the protocol.

Return type:

TransType

Returns:

Numeral registry index of the protocol in IANA.

Header Schemas

class pcapkit.protocols.schema.transport.tcp.TCP(dict_=None, **kwargs)[source]

Bases: Schema

Header schema for TCP packet.

srcport: Enum_AppType = <PortEnumField srcport>

Source port.

dstport: Enum_AppType = <PortEnumField dstport>

Destination port.

seq: int = <UInt32Field seq>

Sequence number.

ack: int = <UInt32Field ack>

Acknowledgement number.

offset: OffsetFlag = <BitField offset>

Data offset.

flags: Flags = <BitField flags>

TCP flags.

window: int = <UInt16Field window>

Window size.

checksum: bytes = <BytesField checksum>

Checksum.

urgent: int = <UInt16Field urgent>

Urgent pointer.

options: list[Option] = <OptionField options>

Options.

padding: bytes = <PaddingField padding>

Padding.

payload: bytes = <PayloadField payload>

Payload.

class pcapkit.protocols.schema.transport.tcp.Flags[source]

Bases: TypedDict

TCP flags.

cwr: int

Congestion window reduced.

ece: int

ECN-Echo.

urg: int

Urgent pointer.

ack: int

Acknowledgment.

psh: int

Push function.

rst: int

Reset connection.

syn: int

Synchronize sequence numbers.

fin: int

Last packet from sender.

class pcapkit.protocols.schema.transport.tcp.Option(dict_=None, **kwargs)[source]

Bases: EnumSchema[Option]

Header schema for TCP options.

kind: Enum_Option = <EnumField kind>

Option kind.

length: int = <ConditionalField length>

Option length.

post_process(packet)[source]

Revise schema data after unpacking process.

Parameters:

packet (dict[str, Any]) – Unpacked data.

Return type:

Schema

Returns:

Revised schema.

class pcapkit.protocols.schema.transport.tcp.UnassignedOption(dict_=None, **kwargs)[source]

Bases: Option

Header schema for TCP unassigned options.

data: bytes = <BytesField data>

Option data.

class pcapkit.protocols.schema.transport.tcp.EndOfOptionList(dict_=None, **kwargs)[source]

Bases: Option

Header schema for TCP end of option list.

class pcapkit.protocols.schema.transport.tcp.NoOperation(dict_=None, **kwargs)[source]

Bases: Option

Header schema for TCP no operation.

class pcapkit.protocols.schema.transport.tcp.MaximumSegmentSize(dict_=None, **kwargs)[source]

Bases: Option

Header schema for TCP max segment size option.

mss: int = <UInt16Field mss>

Maximum segment size.

class pcapkit.protocols.schema.transport.tcp.WindowScale(dict_=None, **kwargs)[source]

Bases: Option

Header schema for TCP window scale option.

shift: int = <UInt8Field shift>

Window scale (shift count).

class pcapkit.protocols.schema.transport.tcp.SACKPermitted(dict_=None, **kwargs)[source]

Bases: Option

Header schema for TCP SACK permitted option.

class pcapkit.protocols.schema.transport.tcp.SACK(dict_=None, **kwargs)[source]

Bases: Option

Header schema for TCP SACK option.

sack: list[SACKBlock] = <ListField sack>

Selected ACK data.

class pcapkit.protocols.schema.transport.tcp.Echo(dict_=None, **kwargs)[source]

Bases: Option

Header schema for TCP echo option.

data: bytes = <BytesField data>

Info to be echoed.

class pcapkit.protocols.schema.transport.tcp.EchoReply(dict_=None, **kwargs)[source]

Bases: Option

Header schema for TCP echo reply option.

data: bytes = <BytesField data>

Echoed info.

class pcapkit.protocols.schema.transport.tcp.Timestamps(dict_=None, **kwargs)[source]

Bases: Option

Header schema for TCP timestamps option.

value: int = <UInt32Field value>

Timestamp value.

reply: int = <UInt32Field reply>

Timestamp echo reply.

class pcapkit.protocols.schema.transport.tcp.PartialOrderConnectionPermitted(dict_=None, **kwargs)[source]

Bases: Option

Header schema for TCP partial order connection permitted option.

class pcapkit.protocols.schema.transport.tcp.PartialOrderServiceProfile(dict_=None, **kwargs)[source]

Bases: Option

Header schema for TCP partial order connection service profile option.

profile: POCProfile = <BitField profile>

Profile data.

class pcapkit.protocols.schema.transport.tcp.CC(dict_=None, **kwargs)[source]

Bases: Option

Header schema for TCP CC option.

count: int = <UInt32Field count>

Connection count.

class pcapkit.protocols.schema.transport.tcp.CCNew(dict_=None, **kwargs)[source]

Bases: Option

Header schema for TCP connection count (new) option.

count: int = <UInt32Field count>

Connection count.

class pcapkit.protocols.schema.transport.tcp.CCEcho(dict_=None, **kwargs)[source]

Bases: Option

Header schema for TCP connection count (echo) option.

count: int = <UInt32Field count>

Connection count.

class pcapkit.protocols.schema.transport.tcp.AlternateChecksumRequest(dict_=None, **kwargs)[source]

Bases: Option

Header schema for TCP alternate checksum request option.

algorithm: Enum_Checksum = <EnumField algorithm>

Checksum algorithm.

class pcapkit.protocols.schema.transport.tcp.AlternateChecksumData(dict_=None, **kwargs)[source]

Bases: Option

Header schema for TCP alternate checksum data option.

data: bytes = <BytesField data>

Checksum data.

class pcapkit.protocols.schema.transport.tcp.MD5Signature(dict_=None, **kwargs)[source]

Bases: Option

Header schema for TCP MD5 signature option.

digest: bytes = <BytesField digest>

MD5 digest.

class pcapkit.protocols.schema.transport.tcp.QuickStartResponse(dict_=None, **kwargs)[source]

Bases: Option

Header schema for TCP quick start response option.

flags: QuickStartFlags = <BitField flags>

Flags.

diff: int = <UInt8Field diff>

TTL difference.

nonce: QuickStartNonce = <BitField nonce>

QS nonce.

class pcapkit.protocols.schema.transport.tcp.UserTimeout(dict_=None, **kwargs)[source]

Bases: Option

Header schema for TCP user timeout option.

info: TimeoutInfo = <BitField info>

Granularity and user timeout.

class pcapkit.protocols.schema.transport.tcp.Authentication(dict_=None, **kwargs)[source]

Bases: Option

Header schema for TCP authentication option.

key_id: int = <UInt8Field key_id>

Key ID.

next_key_id: int = <UInt8Field next_key_id>

Next key ID.

mac: bytes = <BytesField mac>

MAC value.

class pcapkit.protocols.schema.transport.tcp.FastOpenCookie(dict_=None, **kwargs)[source]

Bases: Option

“Header schema for TCP Fast Open option.

cookie: bytes = <ConditionalField cookie>

Cookie.

class pcapkit.protocols.schema.transport.tcp.MPTCP(dict_=None, **kwargs)[source]

Bases: EnumSchema[MPTCPOption]

Header schema for Multipath TCP options.

kind: Enum_Option

Option kind.

length: int

MPTCP length.

subtype: Enum_MPTCPOption

MPTCP subtype.

class pcapkit.protocols.schema.transport.tcp.MPTCPUnknown(dict_=None, **kwargs)[source]

Bases: MPTCP

Header schema for unknown Multipath TCP option.

test: MPTCPSubtypeUnknown = <BitField test>

Subtype and data.

data: bytes = <BytesField data>

Data.

class pcapkit.protocols.schema.transport.tcp.MPTCPCapable(dict_=None, **kwargs)[source]

Bases: MPTCP

Header schema for Multipath TCP capable option.

test: MPTCPSubtypeCapable = <BitField test>

Subtype and version.

flags: MPTCPCapableFlags = <BitField flags>

Flags.

skey: int = <UInt64Field skey>

Option sender’s key.

rkey: int = <ConditionalField rkey>

Option receiver’s key.

class pcapkit.protocols.schema.transport.tcp.MPTCPJoin(dict_=None, **kwargs)[source]

Bases: MPTCP

Header schema for Multipath TCP join option.

kind: Enum_Option

Option kind.

length: int

MPTCP length.

subtype: Enum_MPTCPOption

MPTCP subtype.

class pcapkit.protocols.schema.transport.tcp.MPTCPJoinSYN(dict_=None, **kwargs)[source]

Bases: MPTCPJoin

Header schema for Multipath TCP join option for SYN connection.

test: MPTCPSubtypeJoin = <BitField test>

Subtype and flags.

addr_id: int = <UInt8Field addr_id>

Address ID.

token: int = <UInt32Field token>

Receiver’s token.

nonce: int = <UInt32Field nonce>

Sender’s random number.

class pcapkit.protocols.schema.transport.tcp.MPTCPJoinSYNACK(dict_=None, **kwargs)[source]

Bases: MPTCPJoin

Header schema for Multipath TCP join option for SYN/ACK connection.

test: MPTCPSubtypeJoin = <BitField test>

Subtype and flags.

addr_id: int = <UInt8Field addr_id>

Address ID.

hmac: bytes = <BytesField hmac>

Sender’s truncated HMAC

nonce: int = <UInt32Field nonce>

Sender’s random number.

class pcapkit.protocols.schema.transport.tcp.MPTCPJoinACK(dict_=None, **kwargs)[source]

Bases: MPTCPJoin

Header schema for Multipath TCP join option for ACK connection.

test: MPTCPSubtype = <BitField test>

Subtype.

reserved: bytes = <PaddingField reserved>

Reserved.

hmac: bytes = <BytesField hmac>

Sender’s HMAC.

class pcapkit.protocols.schema.transport.tcp.MPTCPDSS(dict_=None, **kwargs)[source]

Bases: MPTCP

Header schema for Multipath TCP DSS option.

test: MPTCPSubtype = <BitField test>

Subtype and flags.

flags: MPTCPDSSFlags = <BitField flags>

Flags.

ack: int = <ConditionalField ack>

Data ACK.

dsn: int = <ConditionalField dsn>

Data sequence number.

ssn: int = <ConditionalField ssn>

Subflow sequence number.

dl_len: int = <ConditionalField dl_len>

Data level length.

checksum: bytes = <ConditionalField checksum>

Checksum.

class pcapkit.protocols.schema.transport.tcp.MPTCPAddAddress(dict_=None, **kwargs)[source]

Bases: MPTCP

Header schema for Multipath TCP add address option.

test: MPTCPSubtypeAddAddress = <BitField test>

Subtype and IP version.

addr_id: int = <UInt8Field addr_id>

Address ID.

address: IPv4Address | IPv6Address = <SwitchField address>

Address.

port: int = <ConditionalField port>

Port.

class pcapkit.protocols.schema.transport.tcp.MPTCPRemoveAddress(dict_=None, **kwargs)[source]

Bases: MPTCP

Header schema for Multipath TCP remove address option.

test: MPTCPSubtype = <BitField test>

Subtype.

addr_id: list[int] = <ListField addr_id>

Address ID.

class pcapkit.protocols.schema.transport.tcp.MPTCPPriority(dict_=None, **kwargs)[source]

Bases: MPTCP

Header schema for Multipath TCP priority option.

test: MPTCPSubtypePriority = <BitField test>

Subtype.

addr_id: int = <ConditionalField addr_id>

Address ID.

class pcapkit.protocols.schema.transport.tcp.MPTCPFallback(dict_=None, **kwargs)[source]

Bases: MPTCP

Header schema for Multipath TCP fallback option.

test: MPTCPSubtype = <BitField test>

Subtype.

dsn: int = <UInt64Field dsn>

Data sequence number.

class pcapkit.protocols.schema.transport.tcp.MPTCPFastclose(dict_=None, **kwargs)[source]

Bases: MPTCP

Header schema for Multipath TCP fastclose option.

test: MPTCPSubtype = <BitField test>

Subtype.

key: int = <UInt64Field key>

Option receiver’s key.

Type Stubs

class pcapkit.protocols.schema.transport.tcp.OffsetFlag[source]

Bases: TypedDict

TCP offset field flag.

offset: int

Data offset.

ns: int

ECN-nonce concealment protection.

class pcapkit.protocols.schema.transport.tcp.Flags[source]

Bases: TypedDict

TCP flags.

cwr: int

Congestion window reduced.

ece: int

ECN-Echo.

urg: int

Urgent pointer.

ack: int

Acknowledgment.

psh: int

Push function.

rst: int

Reset connection.

syn: int

Synchronize sequence numbers.

fin: int

Last packet from sender.

class pcapkit.protocols.schema.transport.tcp.POCProfile[source]

Bases: TypedDict

TCP partial order connection service profile.

start: int

Start flag.

end: int

End flag.

class pcapkit.protocols.schema.transport.tcp.QuickStartFlags[source]

Bases: TypedDict

TCP quick start flags.

rate: int

Rate request.

class pcapkit.protocols.schema.transport.tcp.QuickStartNonce[source]

Bases: TypedDict

TCP quick start nonce.

nonce: int

Nonce.

class pcapkit.protocols.schema.transport.tcp.TimeoutInfo[source]

Bases: TypedDict

User timeout information.

granularity: int

Granularity.

timeout: int

Timeout value.

class pcapkit.protocols.schema.transport.tcp.MPTCPSubtypeTest[source]

Bases: TypedDict

TCP MPTCP subtype.

length: int

Length.

subtype: int

Subtype.

class pcapkit.protocols.schema.transport.tcp.MPTCPSubtypeUnknown[source]

Bases: TypedDict

TCP unknown MPTCP subtype field.

subtype: int

Subtype.

data: int

Data.

class pcapkit.protocols.schema.transport.tcp.MPTCPSubtypeCapable[source]

Bases: TypedDict

MPTCP Capable subtype field.

subtype: int

Subtype.

version: int

Version.

class pcapkit.protocols.schema.transport.tcp.MPTCPCapableFlags[source]

Bases: TypedDict

MPTCP Capable flags.

req: int

Checksum required.

ext: int

Extensibility flag.

hsa: int

Use of HMAC-SHA1.

class pcapkit.protocols.schema.transport.tcp.MPTCPSubtypeJoin[source]

Bases: TypedDict

MPTCP Join subtype field.

subtype: int

Subtype.

backup: int

Backup flag.

class pcapkit.protocols.schema.transport.tcp.MPTCPSubtype[source]

Bases: TypedDict

MPTCP subtype field.

subtype: int

Subtype.

class pcapkit.protocols.schema.transport.tcp.MPTCPDSSFlags[source]

Bases: TypedDict

MPTCP-DSS flags.

F: int

DATA_FIN flag.

m: int

Data sequence number is 8 octets (if not set, DSN is 4 octets).

M: int

Data Sequence Number (DSN), Subflow Sequence Number (SSN), Data-Level Length, and Checksum present.

a: int

Data ACK is 8 octets (if not set, Data ACK is 4 octets).

A: int

Data ACK present.

class pcapkit.protocols.schema.transport.tcp.MPTCPSubtypeAddAddress[source]

Bases: TypedDict

MPTCP Add Address subtype field.

subtype: int

Subtype.

version: int

IP version.

class pcapkit.protocols.schema.transport.tcp.MPTCPSubtypePriority[source]

Bases: TypedDict

MPTCP Priority subtype field.

subtype: int

Subtype.

backup: int

Backup flag.

Auxiliary Functions

pcapkit.protocols.schema.transport.tcp.mptcp_data_selector(pkt)[source]

Selector function for _MPTCP.data field.

Parameters:

pkt (dict[str, Any]) – Packet data.

Return type:

FieldBase

Returns:

A SchemaField wrapped MPTCP subclass instance.

pcapkit.protocols.schema.transport.tcp.mptcp_add_address_selector(pkt)[source]

Selector function for MPTCPAddAddress.address field.

Parameters:

pkt (dict[str, Any]) – Packet data.

Return type:

FieldBase

Returns:

Data Models

class pcapkit.protocols.data.transport.tcp.TCP(*args: VT, **kwargs: VT)[source]

Bases: Protocol

Data model for TCP packet.

srcport: AppType

Source port.

dstport: AppType

Destination port.

seq: int

Sequence number.

ack: int

Acknowledgment number.

hdr_len: int

Data offset.

flags: Flags

Flags.

window_size: int

Window size.

checksum: bytes

Checksum.

urgent_pointer: int

Urgent pointer.

options: OrderedMultiDict[OptionNumber, Option]

TCP options.

connection: TCP_Flags

Connection control flags.

class pcapkit.protocols.data.transport.tcp.Flags(*args: VT, **kwargs: VT)[source]

Bases: Data

Data model for TCP flags.

cwr: bool

Congestion window reduced.

ece: bool

ECN-Echo.

urg: bool

Urgent.

ack: bool

Acknowledgment.

psh: bool

Push function.

rst: bool

Reset connection.

syn: bool

Synchronize sequence numbers.

fin: bool

Last packet from sender.

class pcapkit.protocols.data.transport.tcp.Option(dict_=None, **kwargs)[source]

Bases: Data

Data model for TCP options.

kind: OptionNumber

Option kind.

length: int

Option length.

class pcapkit.protocols.data.transport.tcp.UnassignedOption(*args: VT, **kwargs: VT)[source]

Bases: Option

Data model for unassigned TCP option.

data: bytes

Option data.

class pcapkit.protocols.data.transport.tcp.EndOfOptionList(*args: VT, **kwargs: VT)[source]

Bases: Option

Data model for TCP end of option list option.

class pcapkit.protocols.data.transport.tcp.NoOperation(*args: VT, **kwargs: VT)[source]

Bases: Option

Data model for TCP no operation option.

class pcapkit.protocols.data.transport.tcp.MaximumSegmentSize(*args: VT, **kwargs: VT)[source]

Bases: Option

Data model for TCP maximum segment size option.

mss: int

Maximum segment size.

class pcapkit.protocols.data.transport.tcp.WindowScale(*args: VT, **kwargs: VT)[source]

Bases: Option

Data model for TCP window scale option.

shift: int

Window scale.

class pcapkit.protocols.data.transport.tcp.SACKPermitted(*args: VT, **kwargs: VT)[source]

Bases: Option

Data model for TCP SACK permitted option.

class pcapkit.protocols.data.transport.tcp.SACK(*args: VT, **kwargs: VT)[source]

Bases: Option

Data model for TCP SACK option.

sack: tuple[SACKBlock, ...]

SACK blocks.

class pcapkit.protocols.data.transport.tcp.Echo(*args: VT, **kwargs: VT)[source]

Bases: Option

Data model for TCP echo option.

data: bytes

Echo data.

class pcapkit.protocols.data.transport.tcp.EchoReply(*args: VT, **kwargs: VT)[source]

Bases: Option

Data model for TCP echo reply option.

data: bytes

Echo data.

class pcapkit.protocols.data.transport.tcp.Timestamps(*args: VT, **kwargs: VT)[source]

Bases: Option

Data model for TCP timestamp option.

timestamp: int

Timestamp .

echo: int

Echo data.

class pcapkit.protocols.data.transport.tcp.PartialOrderConnectionPermitted(*args: VT, **kwargs: VT)[source]

Bases: Option

Data model for TCP partial order connection permitted option.

class pcapkit.protocols.data.transport.tcp.PartialOrderServiceProfile(*args: VT, **kwargs: VT)[source]

Bases: Option

Data model for TCP partial order connection profile option.

start: bool

Start flag.

end: bool

End flag.

class pcapkit.protocols.data.transport.tcp.CC(*args: VT, **kwargs: VT)[source]

Bases: Option

Data model for TCP CC option.

cc: int

Connection count.

class pcapkit.protocols.data.transport.tcp.CCNew(*args: VT, **kwargs: VT)[source]

Bases: Option

Data model for TCP CC.NEW option.

cc: int

Connection count.

class pcapkit.protocols.data.transport.tcp.CCEcho(*args: VT, **kwargs: VT)[source]

Bases: Option

Data model for TCP CC.ECHO option.

cc: int

Connection count.

class pcapkit.protocols.data.transport.tcp.AlternateChecksumRequest(*args: VT, **kwargs: VT)[source]

Bases: Option

Data model for TCP alternate checksum request option.

chksum: Checksum

Checksum algorithm.

class pcapkit.protocols.data.transport.tcp.AlternateChecksumData(kind, length, data)[source]

Bases: Option

Data model for TCP alternate checksum data option.

data: bytes

Checksum data.

class pcapkit.protocols.data.transport.tcp.MD5Signature(kind, length, digest)[source]

Bases: Option

Data model for TCP MD5 signature option.

digest: bytes

MD5 signature.

class pcapkit.protocols.data.transport.tcp.QuickStartResponse(*args: VT, **kwargs: VT)[source]

Bases: Option

Data model for TCP quick start response option.

req_rate: int

Rate request.

ttl_diff: int

TTL difference.

nonce: int

QS nonce.

class pcapkit.protocols.data.transport.tcp.UserTimeout(*args: VT, **kwargs: VT)[source]

Bases: Option

Data model for TCP user timeout option.

timeout: timedelta

User timeout.

class pcapkit.protocols.data.transport.tcp.Authentication(*args: VT, **kwargs: VT)[source]

Bases: Option

Data model for TCP authentication option.

key_id: int

Key ID.

next_key_id: int

Receive next key ID.

mac: bytes

MAC.

class pcapkit.protocols.data.transport.tcp.FastOpenCookie(*args: VT, **kwargs: VT)[source]

Bases: Option

Data model for TCP fast open cookie option.

cookie: bytes

Cookie.

class pcapkit.protocols.data.transport.tcp.MPTCP(dict_=None, **kwargs)[source]

Bases: Option

Data model for TCP MPTCP option.

subtype: MPTCPOption

Subtype.

class pcapkit.protocols.data.transport.tcp.MPTCPUnknown(*args: VT, **kwargs: VT)[source]

Bases: MPTCP

Data model for TCP unknown MPTCP option.

data: bytes

Data.

class pcapkit.protocols.data.transport.tcp.MPTCPCapable(*args: VT, **kwargs: VT)[source]

Bases: MPTCP

Data model for TCP MP_CAPABLE option.

version: int

Version.

flags: MPTCPCapableFlag

Flags.

skey: int

Option sender’s key.

rkey: Optional[int]

Option receiver’s key.

class pcapkit.protocols.data.transport.tcp.MPTCPJoin(dict_=None, **kwargs)[source]

Bases: MPTCP

Data model for TCP MP_JOIN option.

connection: TCP_Flags

Connection type.

class pcapkit.protocols.data.transport.tcp.MPTCPJoinSYN(*args: VT, **kwargs: VT)[source]

Bases: MPTCPJoin

Data model for TCP MP_JOIN-SYN option.

backup: bool

Backup path flag.

addr_id: int

Address ID.

token: int

Receiver’s token.

nonce: int

Sendder’s random number.

class pcapkit.protocols.data.transport.tcp.MPTCPJoinSYNACK(*args: VT, **kwargs: VT)[source]

Bases: MPTCPJoin

Data model for TCP MP_JOIN-SYNACK option.

backup: bool

Backup path flag.

addr_id: int

Address ID.

hmac: bytes

Sender’s truncated HMAC.

nonce: int

Sendder’s random number.

class pcapkit.protocols.data.transport.tcp.MPTCPJoinACK(*args: VT, **kwargs: VT)[source]

Bases: MPTCPJoin

Data model for TCP MP_JOIN-ACK option.

hmac: bytes

HMAC value.

class pcapkit.protocols.data.transport.tcp.MPTCPDSS(*args: VT, **kwargs: VT)[source]

Bases: MPTCP

Data model for TCP DSS option.

data_fin: bool

DATA_FIN flag.

ack: Optional[int]

Data ACK.

dsn: Optional[int]

Data sequence number.

ssn: Optional[int]

Subflow sequence number.

dl_len: Optional[int]

Data-level length.

checksum: Optional[bytes]

Checksum.

class pcapkit.protocols.data.transport.tcp.MPTCPAddAddress(*args: VT, **kwargs: VT)[source]

Bases: MPTCP

Data model for TCP ADD_ADDR option.

version: int

IP version.

addr_id: int

Address ID.

addr: IPAddress

Address.

port: Optional[int]

Port number.

class pcapkit.protocols.data.transport.tcp.MPTCPRemoveAddress(*args: VT, **kwargs: VT)[source]

Bases: MPTCP

Data model for TCP REMOVE_ADDR option.

addr_id: tuple[int, ...]

Address ID.

class pcapkit.protocols.data.transport.tcp.MPTCPPriority(*args: VT, **kwargs: VT)[source]

Bases: MPTCP

Data model for TCP MP_PRIO option.

backup: bool

Backup path flag.

addr_id: Optional[int]

Address ID.

class pcapkit.protocols.data.transport.tcp.MPTCPFallback(*args: VT, **kwargs: VT)[source]

Bases: MPTCP

Data model for TCP MP_FAIL option.

dsn: int

Data sequence number.

class pcapkit.protocols.data.transport.tcp.MPTCPFastclose(*args: VT, **kwargs: VT)[source]

Bases: MPTCP

Data model for TCP MP_FASTCLOSE option.

rkey: int

Option receiver’s key.

Footnotes