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 |
|
Source Port |
2 |
16 |
|
Destination Port |
4 |
32 |
|
Sequence Number |
8 |
64 |
|
Acknowledgement Number (if ACK set) |
12 |
96 |
|
Data Offset |
12 |
100 |
Reserved (must be |
|
12 |
103 |
|
ECN Concealment Protection (NS) |
13 |
104 |
|
Congestion Window Reduced (CWR) |
13 |
105 |
|
ECN-Echo (ECE) |
13 |
106 |
|
Urgent (URG) |
13 |
107 |
|
Acknowledgement (ACK) |
13 |
108 |
|
Push Function (PSH) |
13 |
109 |
|
Reset Connection (RST) |
13 |
110 |
|
Synchronize Sequence Numbers (SYN) |
13 |
111 |
|
Last Packet from Sender (FIN) |
14 |
112 |
|
Size of Receive Window |
16 |
128 |
|
Checksum |
18 |
144 |
|
Urgent Pointer (if URG set) |
20 |
160 |
|
TCP Options (if data offset > 5) |
- class pcapkit.protocols.transport.tcp.TCP(file=None, length=None, **kwargs)[source]¶
-
This class implements Transmission Control Protocol.
This class currently supports parsing of the following protocols, which are registered in the
self.__proto__
attribute:Port Number
Protocol
21
80
This class currently supports parsing of the following TCP options, which are directly mapped to the
pcapkit.const.tcp.option.Option
enumeration:Option Code
Option Parser
Option Constructor
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:Option Code
Option Parser
Option Constructor
- property name: Literal['Transmission Control Protocol']¶
Name of current protocol.
- 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 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- 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:
seq_no (
int
) – Sequence number.ack_no (
int
) – Acknowledgement number.ns (
bool
) – ECN-nonce concealment protection.cwr (
bool
) – Congestion window reduced.ece (
bool
) – ECN-Echo.urg (
bool
) – Urgent.ack (
bool
) – Acknowledgement.psh (
bool
) – Push function.rst (
bool
) – Reset connection.syn (
bool
) – Synchronize sequence numbers.fin (
bool
) – Last packet from sender.window (
int
) – Window size.checksum (
bytes
) – Checksum.urgent (
int
) – Urgent pointer.options (
Union
[list
[Option
|tuple
[Option
,dict
[str
,Any
]] |bytes
],OrderedMultiDict
[Option
,Option
],None
]) – TCP options.payload (
bytes
|ProtocolBase
|Schema
) – Payload of the packet.**kwargs (
Any
) – Arbitrary keyword arguments.
- Return type:
- Returns:
Constructed packet data.
- _read_tcp_options(size)[source]¶
Read TCP option list.
- Parameters:
size (
int
) – length of option list- Return type:
- Returns:
Extracted TCP options.
- Raises:
ProtocolError – If the threshold is NOT matching.
- _read_mode_donone(schema, *, options)[source]¶
Read options request no process.
- Parameters:
schema (
UnassignedOption
) – parsed option schemaoptions (
OrderedMultiDict
[Option
,Option
]) – extracted TCP options
- Return type:
- 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:
schema (
EndOfOptionList
) – parsed option schemaoptions (
OrderedMultiDict
[Option
,Option
]) – extracted TCP options
- Return type:
- 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:
schema (
NoOperation
) – parsed option schemaoptions (
OrderedMultiDict
[Option
,Option
]) – extracted TCP options
- Return type:
- 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:
schema (
MaximumSegmentSize
) – parsed option schemaoptions (
OrderedMultiDict
[Option
,Option
]) – extracted TCP options
- Return type:
- 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:
schema (
WindowScale
) – parsed option schemaoptions (
OrderedMultiDict
[Option
,Option
]) – extracted TCP options
- Return type:
- 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:
schema (
SACKPermitted
) – parsed option schemaoptions (
OrderedMultiDict
[Option
,Option
]) – extracted TCP options
- Return type:
- 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:
schema (
SACK
) – parsed option schemaoptions (
OrderedMultiDict
[Option
,Option
]) – extracted TCP options
- Return type:
- Returns:
Parsed option data.
- Raises:
ProtocolError – If length is NOT multiply of
8
plus2
.
- _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:
schema (
Echo
) – parsed option schemaoptions (
OrderedMultiDict
[Option
,Option
]) – extracted TCP options
- Return type:
- 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:
schema (
EchoReply
) – parsed option schemaoptions (
OrderedMultiDict
[Option
,Option
]) – extracted TCP options
- Return type:
- 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:
schema (
Timestamps
) – parsed option schemaoptions (
OrderedMultiDict
[Option
,Option
]) – extracted TCP options
- Return type:
- 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:
schema (
PartialOrderConnectionPermitted
) – parsed option schemaoptions (
OrderedMultiDict
[Option
,Option
]) – extracted TCP options
- Return type:
- 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:
schema (
PartialOrderServiceProfile
) – parsed option schemaoptions (
OrderedMultiDict
[Option
,Option
]) – extracted TCP options
- Return type:
- 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:
schema (
CC
) – parsed option schemaoptions (
OrderedMultiDict
[Option
,Option
]) – extracted TCP options
- Return type:
- 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:
schema (
CCNew
) – parsed option schemaoptions (
OrderedMultiDict
[Option
,Option
]) – extracted TCP options
- Return type:
- 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:
schema (
CCEcho
) – parsed option schemaoptions (
OrderedMultiDict
[Option
,Option
]) – extracted TCP options
- Return type:
- 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:
schema (
AlternateChecksumRequest
) – parsed option schemaoptions (
OrderedMultiDict
[Option
,Option
]) – extracted TCP options
- Return type:
- 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:
schema (
AlternateChecksumData
) – parsed option schemaoptions (
OrderedMultiDict
[Option
,Option
]) – extracted TCP options
- Return type:
- 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:
schema (
MD5Signature
) – parsed option schemaoptions (
OrderedMultiDict
[Option
,Option
]) – extracted TCP options
- Return type:
- 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:
schema (
QuickStartResponse
) – parsed option schemaoptions (
OrderedMultiDict
[Option
,Option
]) – extracted TCP options
- Return type:
- 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:
schema (
UserTimeout
) – parsed option schemaoptions (
OrderedMultiDict
[Option
,Option
]) – extracted TCP options
- Return type:
- 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:
schema (
Authentication
) – parsed option schemaoptions (
OrderedMultiDict
[Option
,Option
]) – extracted TCP options
- Return type:
- 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:
schema (
MPTCP
) – parsed option schemaoptions (
OrderedMultiDict
[Option
,Option
]) – extracted TCP options
- Return type:
- Returns:
Parsed option data.
- _read_mode_fastopen(schema, *, options)[source]¶
Read Fast Open option.
Structure of TCP
FASTOPEN
[RFC 7413]:+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Kind | Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | ~ Cookie ~ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Parameters:
schema (
FastOpenCookie
) – parsed option schemaoptions (
OrderedMultiDict
[Option
,Option
]) – extracted TCP options
- Return type:
- Returns:
Parsed option data.
- Raises:
ProtocolError – If length is NOT valid.
- _read_mptcp_unknown(schema, *, options)[source]¶
Read unknown MPTCP subtype.
- Parameters:
schema (
MPTCPUnknown
) – parsed option schemaoptions (
OrderedMultiDict
[Option
,Option
]) – extracted TCP options
- Return type:
- 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:
schema (
MPTCPCapable
) – parsed option schemaoptions (
OrderedMultiDict
[Option
,Option
]) – extracted TCP options
- Return type:
- Returns:
Parsed option data.
- Raises:
ProtocolError – If length is NOT
20
or32
.
- _read_mptcp_join(schema, *, options)[source]¶
Read Join Connection option.
- Parameters:
schema (
MPTCPJoin
) – parsed option schemaoptions (
OrderedMultiDict
[Option
,Option
]) – extracted TCP options
- Return type:
- 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:
schema (
MPTCPDSS
) – parsed option schemaoptions (
OrderedMultiDict
[Option
,Option
]) – extracted TCP options
- Return type:
- 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:
schema (
MPTCPAddAddress
) – parsed option schemaoptions (
OrderedMultiDict
[Option
,Option
]) – extracted TCP options
- Return type:
- 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:
schema (
MPTCPRemoveAddress
) – parsed option schemaoptions (
OrderedMultiDict
[Option
,Option
]) – extracted TCP options
- Return type:
- 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:
schema (
MPTCPPriority
) – parsed option schemaoptions (
OrderedMultiDict
[Option
,Option
]) – extracted TCP options
- Return type:
- 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:
schema (
MPTCPFallback
) – parsed option schemaoptions (
OrderedMultiDict
[Option
,Option
]) – extracted TCP options
- Return type:
- 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:
schema (
MPTCPFastclose
) – parsed option schemaoptions (
OrderedMultiDict
[Option
,Option
]) – extracted TCP options
- Return type:
- 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:
schema (
MPTCPJoinSYN
) – parsed option schemaoptions (
OrderedMultiDict
[Option
,Option
]) – extracted TCP options
- Return type:
- 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:
schema (
MPTCPJoinSYNACK
) – parsed option schemaoptions (
OrderedMultiDict
[Option
,Option
]) – extracted TCP options
- Return type:
- 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:
schema (
MPTCPJoinACK
) – parsed option schemaoptions (
OrderedMultiDict
[Option
,Option
]) – extracted TCP options
- Return type:
- Returns:
Parsed option data.
- Raises:
ProtocolError – If length is NOT
24
.
- _make_mode_donone(code, opt=None, *, data=b'', **kwargs)[source]¶
Make TCP unassigned option.
- Parameters:
- Return type:
- Returns:
Constructed option schema.
- _make_mode_eool(code, opt=None, **kwargs)[source]¶
Make TCP End of Option List option.
- Parameters:
code (
Option
) – option codeopt (
Optional
[EndOfOptionList
]) – option data**kwargs (
Any
) – arbitrary keyword arguments
- Return type:
- Returns:
Constructed option schema.
- _make_mode_nop(code, opt=None, **kwargs)[source]¶
Make TCP NoOperation option.
- Parameters:
code (
Option
) – option codeopt (
Optional
[NoOperation
]) – option data**kwargs (
Any
) – arbitrary keyword arguments
- Return type:
- Returns:
Constructed option schema.
- _make_mode_mss(code, opt=None, *, mss=65535, **kwargs)[source]¶
Make TCP maximum segment size option.
- Parameters:
code (
Option
) – option codeopt (
Optional
[MaximumSegmentSize
]) – option datamss (
int
) – maximum segment size**kwargs (
Any
) – arbitrary keyword arguments
- Return type:
- Returns:
Constructed option schema.
- _make_mode_ws(code, opt=None, *, shift=0, **kwargs)[source]¶
Make TCP window scale option.
- Parameters:
code (
Option
) – option codeopt (
Optional
[WindowScale
]) – option datashift (
int
) – window scale shift count**kwargs (
Any
) – arbitrary keyword arguments
- Return type:
- Returns:
Constructed option schema.
- _make_mode_sackpmt(code, opt=None, **kwargs)[source]¶
Make TCP SACK permitted option.
- Parameters:
code (
Option
) – option codeopt (
Optional
[SACKPermitted
]) – option data**kwargs (
Any
) – arbitrary keyword arguments
- Return type:
- Returns:
Constructed option schema.
- _make_mode_echo(code, opt=None, *, data=b'\\x00\\x00\\x00\\x00', **kwargs)[source]¶
Make TCP echo option.
- _make_mode_echore(code, opt=None, *, data=b'\\x00\\x00\\x00\\x00', **kwargs)[source]¶
Make TCP echo reply option.
- _make_mode_ts(code, opt=None, *, tsval=0, tsecr=0, **kwargs)[source]¶
Make TCP timestamps option.
- Parameters:
- Return type:
- Returns:
Constructed option schema.
- _make_mode_poc(code, opt=None, **kwargs)[source]¶
Make TCP partial order connection option.
- Parameters:
code (
Option
) – option codeopt (
Optional
[PartialOrderConnectionPermitted
]) – option data**kwargs (
Any
) – arbitrary keyword arguments
- Return type:
- 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:
- Returns:
Constructed option schema.
- _make_mode_ccnew(code, opt=None, *, count=0, **kwargs)[source]¶
Make TCP connection count new option.
- _make_mode_ccecho(code, opt=None, *, count=0, **kwargs)[source]¶
Make TCP connection count echo option.
- _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:
code (
Option
) – option codeopt (
Optional
[AlternateChecksumRequest
]) – option dataalgorithm (
Checksum
|IntEnum
|IntEnum
|int
|str
) – checksum algorithmalgorithm_default (
Optional
[int
]) – default value for checksum algorithmalgorithm_namespace (
Union
[dict
[str
,int
],dict
[int
,str
],Type
[IntEnum
],Type
[IntEnum
],None
]) – namespace for checksum algorithmalgorithm_reversed (
bool
) – reversed flag for checksum algorithm**kwargs (
Any
) – arbitrary keyword arguments
- Return type:
- Returns:
Constructed option schema.
- _make_mode_chksum(code, opt=None, *, data=b'', **kwargs)[source]¶
Make TCP alternate checksum data option.
- Parameters:
code (
Option
) – option codeopt (
Optional
[AlternateChecksumData
]) – option datadata (
bytes
) – checksum data**kwargs (
Any
) – arbitrary keyword arguments
- Return type:
- 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:
code (
Option
) – option codeopt (
Optional
[MD5Signature
]) – option datadigest (
bytes
) – digest**kwargs (
Any
) – arbitrary keyword arguments
- Return type:
- 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:
- Returns:
Constructed option schema.
- _make_mode_timeout(code, opt=None, *, timeout=0, **kwargs)[source]¶
Make TCP user timeout option.
- Parameters:
- Return type:
- 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:
- 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:
code (
Option
) – option codesubtype (
MPTCPOption
|IntEnum
|IntEnum
|int
|str
) – MPTCP subtypesubtype_default (
Optional
[int
]) – default value for MPTCP subtypesubtype_namespace (
Union
[dict
[str
,int
],dict
[int
,str
],Type
[IntEnum
],Type
[IntEnum
],None
]) – namespace for MPTCP subtypesubtype_reversed (
bool
) – reversed flag for MPTCP subtype**kwargs (
Any
) – arbitrary keyword arguments
- Return type:
- Returns:
Constructed option schema.
- _make_mode_fastopen(code, opt=None, *, cookie=None, **kwargs)[source]¶
Make TCP Fast Open option.
- Parameters:
- Return type:
- Returns:
Constructed option schema.
- _make_mptcp_unknown(subtype, opt=None, *, data=b'\\x00', **kwargs)[source]¶
Make unknown multipath TCP option.
- Parameters:
subtype (
MPTCPOption
) – MPTCP subtypeopt (
Optional
[MPTCPUnknown
]) – option datadata (
bytes
) – option payload data**kwargs (
Any
) – arbitrary keyword arguments
- Return type:
- 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 subtypeopt (
Optional
[MPTCPCapable
]) – option dataversion (
int
) – MPTCP versionflag_req (
bool
) – checksum required flagflag_ext (
bool
) – extensability flagflag_hsa (
bool
) – use of HMAC-SHA1 flagskey (
int
) – option sender’s key**kwargs (
Any
) – arbitrary keyword arguments
- Return type:
- Returns:
Constructed option schema.
- _make_mptcp_join(subtype, opt=None, **kwargs)[source]¶
Make multipath TCP join option.
- Parameters:
subtype (
MPTCPOption
) – MPTCP subtype**kwargs (
Any
) – arbitrary keyword arguments
- Return type:
- 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:
subtype (
MPTCPOption
) – MPTCP subtypedata_fin (
bool
) –DATA_FIN
flag**kwargs (
Any
) – arbitrary keyword arguments
- Return type:
- 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:
subtype (
MPTCPOption
) – MPTCP subtypeopt (
Optional
[MPTCPAddAddress
]) – option dataaddr_id (
int
) – address IDaddr (
IPv4Address
|IPv6Address
|int
|bytes
|str
) – address**kwargs (
Any
) – arbitrary keyword arguments
- Return type:
- Returns:
Constructed option schema.
- _make_mptcp_remove(subtype, opt=None, *, addr_id=None, **kwargs)[source]¶
Make multipath TCP remove address option.
- Parameters:
subtype (
MPTCPOption
) – MPTCP subtypeopt (
Optional
[MPTCPRemoveAddress
]) – option data**kwargs (
Any
) – arbitrary keyword arguments
- Return type:
- Returns:
Constructed option schema.
- _make_mptcp_prio(subtype, opt=None, *, backup=False, addr_id=None, **kwargs)[source]¶
Make multipath TCP priority option.
- Parameters:
subtype (
MPTCPOption
) – MPTCP subtypeopt (
Optional
[MPTCPPriority
]) – option databackup (
bool
) – backup flag**kwargs (
Any
) – arbitrary keyword arguments
- Return type:
- Returns:
Constructed option schema.
- _make_mptcp_fail(subtype, opt=None, *, dsn=0, **kwargs)[source]¶
Make multipath TCP fail option.
- Parameters:
subtype (
MPTCPOption
) – MPTCP subtypeopt (
Optional
[MPTCPFallback
]) – option datadsn (
int
) – data sequence number**kwargs (
Any
) – arbitrary keyword argumentsReturns – Constructed option schema.
- Return type:
- _make_mptcp_fastclose(subtype, opt=None, *, key=0, **kwargs)[source]¶
Make multipath TCP fastclose option.
- Parameters:
subtype (
MPTCPOption
) – MPTCP subtypeopt (
Optional
[MPTCPFastclose
]) – option datakey (
int
) – option receiver’s key**kwargs (
Any
) – arbitrary keyword argumentsReturns – Constructed option schema.
- Return type:
- _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 subtypeopt (
Optional
[MPTCPJoinSYN
]) – option databackup (
bool
) – backup flagaddr_id (
int
) – address IDtoken (
int
) – receiver’s tokennonce (
int
) – sender’s random number**kwargs (
Any
) – arbitrary keyword arguments
- Return type:
- 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 subtypeopt (
Optional
[MPTCPJoinSYNACK
]) – option databackup (
bool
) – backup flagaddr_id (
int
) – address IDhmac (
bytes
) – sender’s truncated HMACnonce (
int
) – sender’s random number**kwargs (
Any
) – arbitrary keyword arguments
- Return type:
- 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:
subtype (
MPTCPOption
) – MPTCP subtypeopt (
Optional
[MPTCPJoinACK
]) – option datahmac (
bytes
) – sender’s HMAC**kwargs (
Any
) – arbitrary keyword arguments
- Return type:
- 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.
- __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.
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.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.
- 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.
- class pcapkit.protocols.schema.transport.tcp.POCProfile[source]¶
Bases:
TypedDict
TCP partial order connection service profile.
- class pcapkit.protocols.schema.transport.tcp.QuickStartFlags[source]¶
Bases:
TypedDict
TCP quick start flags.
- class pcapkit.protocols.schema.transport.tcp.QuickStartNonce[source]¶
Bases:
TypedDict
TCP quick start nonce.
- class pcapkit.protocols.schema.transport.tcp.TimeoutInfo[source]¶
Bases:
TypedDict
User timeout information.
- class pcapkit.protocols.schema.transport.tcp.MPTCPSubtypeTest[source]¶
Bases:
TypedDict
TCP MPTCP subtype.
- class pcapkit.protocols.schema.transport.tcp.MPTCPSubtypeUnknown[source]¶
Bases:
TypedDict
TCP unknown MPTCP subtype field.
- class pcapkit.protocols.schema.transport.tcp.MPTCPSubtypeCapable[source]¶
Bases:
TypedDict
MPTCP Capable subtype field.
- class pcapkit.protocols.schema.transport.tcp.MPTCPCapableFlags[source]¶
Bases:
TypedDict
MPTCP Capable flags.
- class pcapkit.protocols.schema.transport.tcp.MPTCPSubtypeJoin[source]¶
Bases:
TypedDict
MPTCP Join subtype field.
- class pcapkit.protocols.schema.transport.tcp.MPTCPSubtype[source]¶
Bases:
TypedDict
MPTCP subtype field.
- class pcapkit.protocols.schema.transport.tcp.MPTCPDSSFlags[source]¶
Bases:
TypedDict
MPTCP-DSS flags.
Auxiliary Functions¶
- pcapkit.protocols.schema.transport.tcp.mptcp_data_selector(pkt)[source]¶
Selector function for
_MPTCP.data
field.
- pcapkit.protocols.schema.transport.tcp.mptcp_add_address_selector(pkt)[source]¶
Selector function for
MPTCPAddAddress.address
field.- Parameters:
- Return type:
- Returns:
If IP version is 4, a
IPv4AddressField
instance.If IP version is 6, a
IPv6AddressField
instance.
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