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, 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, 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