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.Optionenumeration: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.MPTCPOptionenumeration: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
8plus2.
- _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-Permittedoption [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-SPoption [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
CCoption [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.NEWoption [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.ECHOoption [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
SIGoption [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
20or32.
- _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_FINflag**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:
SchemaHeader 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:
OptionHeader schema for TCP unassigned options.
- data: bytes = <BytesField data>¶
Option data.
- class pcapkit.protocols.schema.transport.tcp.EndOfOptionList(dict_=None, **kwargs)[source]¶
Bases:
OptionHeader schema for TCP end of option list.
- class pcapkit.protocols.schema.transport.tcp.NoOperation(dict_=None, **kwargs)[source]¶
Bases:
OptionHeader schema for TCP no operation.
- class pcapkit.protocols.schema.transport.tcp.MaximumSegmentSize(dict_=None, **kwargs)[source]¶
Bases:
OptionHeader 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:
OptionHeader 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:
OptionHeader schema for TCP SACK permitted option.
- class pcapkit.protocols.schema.transport.tcp.SACK(dict_=None, **kwargs)[source]¶
Bases:
OptionHeader 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:
OptionHeader 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:
OptionHeader schema for TCP echo reply option.
- data: bytes = <BytesField data>¶
Echoed info.
- class pcapkit.protocols.schema.transport.tcp.Timestamps(dict_=None, **kwargs)[source]¶
Bases:
OptionHeader 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:
OptionHeader schema for TCP partial order connection permitted option.
- class pcapkit.protocols.schema.transport.tcp.PartialOrderServiceProfile(dict_=None, **kwargs)[source]¶
Bases:
OptionHeader 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:
OptionHeader schema for TCP CC option.
- count: int = <UInt32Field count>¶
Connection count.
- class pcapkit.protocols.schema.transport.tcp.CCNew(dict_=None, **kwargs)[source]¶
Bases:
OptionHeader 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:
OptionHeader 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:
OptionHeader 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:
OptionHeader 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:
OptionHeader schema for TCP MD5 signature option.
- digest: bytes = <BytesField digest>¶
MD5 digest.
- class pcapkit.protocols.schema.transport.tcp.QuickStartResponse(dict_=None, **kwargs)[source]¶
Bases:
OptionHeader 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:
OptionHeader 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:
OptionHeader 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:
MPTCPHeader 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:
MPTCPHeader 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:
MPTCPHeader 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:
MPTCPJoinHeader schema for Multipath TCP join option for
SYNconnection.- 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:
MPTCPJoinHeader schema for Multipath TCP join option for
SYN/ACKconnection.- 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:
MPTCPJoinHeader schema for Multipath TCP join option for
ACKconnection.- 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:
MPTCPHeader 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:
MPTCPHeader 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:
MPTCPHeader 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:
MPTCPHeader 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:
MPTCPHeader 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:
MPTCPHeader 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:
TypedDictTCP offset field flag.
- class pcapkit.protocols.schema.transport.tcp.POCProfile[source]¶
Bases:
TypedDictTCP partial order connection service profile.
- class pcapkit.protocols.schema.transport.tcp.QuickStartFlags[source]¶
Bases:
TypedDictTCP quick start flags.
- class pcapkit.protocols.schema.transport.tcp.QuickStartNonce[source]¶
Bases:
TypedDictTCP quick start nonce.
- class pcapkit.protocols.schema.transport.tcp.TimeoutInfo[source]¶
Bases:
TypedDictUser timeout information.
- class pcapkit.protocols.schema.transport.tcp.MPTCPSubtypeTest[source]¶
Bases:
TypedDictTCP MPTCP subtype.
- class pcapkit.protocols.schema.transport.tcp.MPTCPSubtypeUnknown[source]¶
Bases:
TypedDictTCP unknown MPTCP subtype field.
- class pcapkit.protocols.schema.transport.tcp.MPTCPSubtypeCapable[source]¶
Bases:
TypedDictMPTCP Capable subtype field.
- class pcapkit.protocols.schema.transport.tcp.MPTCPCapableFlags[source]¶
Bases:
TypedDictMPTCP Capable flags.
- class pcapkit.protocols.schema.transport.tcp.MPTCPSubtypeJoin[source]¶
Bases:
TypedDictMPTCP Join subtype field.
- class pcapkit.protocols.schema.transport.tcp.MPTCPSubtype[source]¶
Bases:
TypedDictMPTCP subtype field.
- class pcapkit.protocols.schema.transport.tcp.MPTCPDSSFlags[source]¶
Bases:
TypedDictMPTCP-DSS flags.
Auxiliary Functions¶
- pcapkit.protocols.schema.transport.tcp.mptcp_data_selector(pkt)[source]¶
Selector function for
_MPTCP.datafield.
- pcapkit.protocols.schema.transport.tcp.mptcp_add_address_selector(pkt)[source]¶
Selector function for
MPTCPAddAddress.addressfield.- Parameters:
- Return type:
- Returns:
If IP version is 4, a
IPv4AddressFieldinstance.If IP version is 6, a
IPv6AddressFieldinstance.
Data Models¶
- class pcapkit.protocols.data.transport.tcp.TCP(*args: VT, **kwargs: VT)[source]¶
Bases:
ProtocolData 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:
DataData 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:
DataData 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:
OptionData model for unassigned TCP option.
- data: bytes¶
Option data.
- class pcapkit.protocols.data.transport.tcp.EndOfOptionList(*args: VT, **kwargs: VT)[source]¶
Bases:
OptionData model for TCP end of option list option.
- class pcapkit.protocols.data.transport.tcp.NoOperation(*args: VT, **kwargs: VT)[source]¶
Bases:
OptionData model for TCP no operation option.
- class pcapkit.protocols.data.transport.tcp.MaximumSegmentSize(*args: VT, **kwargs: VT)[source]¶
Bases:
OptionData 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:
OptionData model for TCP window scale option.
- shift: int¶
Window scale.
- class pcapkit.protocols.data.transport.tcp.SACKPermitted(*args: VT, **kwargs: VT)[source]¶
Bases:
OptionData model for TCP SACK permitted option.
- class pcapkit.protocols.data.transport.tcp.SACK(*args: VT, **kwargs: VT)[source]¶
Bases:
OptionData model for TCP SACK option.
- sack: tuple[SACKBlock, ...]¶
SACK blocks.
- class pcapkit.protocols.data.transport.tcp.Echo(*args: VT, **kwargs: VT)[source]¶
Bases:
OptionData model for TCP echo option.
- data: bytes¶
Echo data.
- class pcapkit.protocols.data.transport.tcp.EchoReply(*args: VT, **kwargs: VT)[source]¶
Bases:
OptionData model for TCP echo reply option.
- data: bytes¶
Echo data.
- class pcapkit.protocols.data.transport.tcp.Timestamps(*args: VT, **kwargs: VT)[source]¶
Bases:
OptionData 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:
OptionData model for TCP partial order connection permitted option.
- class pcapkit.protocols.data.transport.tcp.PartialOrderServiceProfile(*args: VT, **kwargs: VT)[source]¶
Bases:
OptionData 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:
OptionData model for TCP CC option.
- cc: int¶
Connection count.
- class pcapkit.protocols.data.transport.tcp.CCNew(*args: VT, **kwargs: VT)[source]¶
Bases:
OptionData model for TCP CC.NEW option.
- cc: int¶
Connection count.
- class pcapkit.protocols.data.transport.tcp.CCEcho(*args: VT, **kwargs: VT)[source]¶
Bases:
OptionData model for TCP CC.ECHO option.
- cc: int¶
Connection count.
- class pcapkit.protocols.data.transport.tcp.AlternateChecksumRequest(*args: VT, **kwargs: VT)[source]¶
Bases:
OptionData model for TCP alternate checksum request option.
- chksum: Checksum¶
Checksum algorithm.
- class pcapkit.protocols.data.transport.tcp.AlternateChecksumData(kind, length, data)[source]¶
Bases:
OptionData model for TCP alternate checksum data option.
- data: bytes¶
Checksum data.
- class pcapkit.protocols.data.transport.tcp.MD5Signature(kind, length, digest)[source]¶
Bases:
OptionData model for TCP MD5 signature option.
- digest: bytes¶
MD5 signature.
- class pcapkit.protocols.data.transport.tcp.QuickStartResponse(*args: VT, **kwargs: VT)[source]¶
Bases:
OptionData 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:
OptionData model for TCP user timeout option.
- timeout: timedelta¶
User timeout.
- class pcapkit.protocols.data.transport.tcp.Authentication(*args: VT, **kwargs: VT)[source]¶
Bases:
OptionData 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:
OptionData model for TCP fast open cookie option.
- cookie: bytes¶
Cookie.
- class pcapkit.protocols.data.transport.tcp.MPTCP(dict_=None, **kwargs)[source]¶
Bases:
OptionData model for TCP MPTCP option.
- subtype: MPTCPOption¶
Subtype.
- class pcapkit.protocols.data.transport.tcp.MPTCPUnknown(*args: VT, **kwargs: VT)[source]¶
Bases:
MPTCPData model for TCP unknown MPTCP option.
- data: bytes¶
Data.
- class pcapkit.protocols.data.transport.tcp.MPTCPCapable(*args: VT, **kwargs: VT)[source]¶
Bases:
MPTCPData model for TCP
MP_CAPABLEoption.- 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:
MPTCPData model for TCP
MP_JOINoption.- connection: TCP_Flags¶
Connection type.
- class pcapkit.protocols.data.transport.tcp.MPTCPJoinSYN(*args: VT, **kwargs: VT)[source]¶
Bases:
MPTCPJoinData model for TCP
MP_JOIN-SYNoption.- 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:
MPTCPJoinData model for TCP
MP_JOIN-SYNACKoption.- 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:
MPTCPJoinData model for TCP
MP_JOIN-ACKoption.- hmac: bytes¶
HMAC value.
- class pcapkit.protocols.data.transport.tcp.MPTCPDSS(*args: VT, **kwargs: VT)[source]¶
Bases:
MPTCPData model for TCP
DSSoption.- data_fin: bool¶
DATA_FINflag.
- 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:
MPTCPData model for TCP
ADD_ADDRoption.- 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:
MPTCPData model for TCP
REMOVE_ADDRoption.- addr_id: tuple[int, ...]¶
Address ID.
- class pcapkit.protocols.data.transport.tcp.MPTCPPriority(*args: VT, **kwargs: VT)[source]¶
Bases:
MPTCPData model for TCP
MP_PRIOoption.- backup: bool¶
Backup path flag.
- addr_id: Optional[int]¶
Address ID.
- class pcapkit.protocols.data.transport.tcp.MPTCPFallback(*args: VT, **kwargs: VT)[source]¶
Bases:
MPTCPData model for TCP
MP_FAILoption.- dsn: int¶
Data sequence number.
- class pcapkit.protocols.data.transport.tcp.MPTCPFastclose(*args: VT, **kwargs: VT)[source]¶
Bases:
MPTCPData model for TCP
MP_FASTCLOSEoption.- rkey: int¶
Option receiver’s key.
Footnotes