UDP - User Datagram Protocol¶
pcapkit.protocols.transport.udp contains
UDP only,
which implements the extractor for User Datagram Protocol
(UDP) [*], whose structure is described as below:
Octets |
Bits |
Name |
Description |
|---|---|---|---|
0 |
0 |
|
Source Port |
2 |
16 |
|
Destination Port |
4 |
32 |
|
Length (header included) |
6 |
48 |
|
Checksum |
- class pcapkit.protocols.transport.udp.UDP(file=None, length=None, **kwargs)[source]¶
-
This class implements User Datagram Protocol.
This class supports parsing of the following protocols, which are registered in the
self.__proto__attribute:Port Number
Protocol
80
1701
8080
Note
The HTTP ports resolve to
pcapkit.protocols.application.http.HTTP, which identifies the version from the payload and delegates.TCP.__proto__binds the same class for its HTTP ports.Changed in version 1.5.0:
make()takestotal_length, which afrom_data()rebuild passes so that a truncated capture keeps its declared Length (#1155), andtrailer, so that the octets past the Length field rebuild as captured (#1461).- read(length=None, **kwargs)[source]¶
Read User Datagram Protocol (UDP).
Structure of UDP header [RFC 768]:
0 7 8 15 16 23 24 31 +--------+--------+--------+--------+ | Source | Destination | | Port | Port | +--------+--------+--------+--------+ | | | | Length | Checksum | +--------+--------+--------+--------+ | | data octets ... +---------------- ...
- make(srcport=0, dstport=0, checksum=b'\x00\x00', total_length=None, payload=b'', trailer=b'', **kwargs)[source]¶
Make (construct) packet data.
- Parameters:
checksum (
bytes) – Checksum.total_length (
int|None) – Length of the datagram, header included; computed from the header and the payload when omitted.payload (
bytes|Schema|ProtocolBase) – Payload data.trailer (
bytes) – Octets after the datagram, outside the Length field; written as is and not counted in a computedtotal_length.**kwargs (
Any) – Arbitrary keyword arguments.
- Return type:
- Returns:
Constructed packet data.
Changed in version 1.5.0: An out-of-range
srcportordstportraisesValueErrorrather than being accepted (#758).total_lengthsits beforepayload(#1155), so a caller passingpayloadpositionally setstotal_lengthinstead.
- __proto__: DefaultDict[int, ModuleDescriptor[ProtocolBase] | Type[ProtocolBase]]¶
Protocol index mapping for decoding next layer, see
self._decode_next_layer&self._import_next_layer.
Header Schemas¶
- class pcapkit.protocols.schema.transport.udp.UDP(srcport=NO_VALUE, dstport=NO_VALUE, len=NO_VALUE, checksum=NO_VALUE, payload=NO_VALUE, trailer=NO_VALUE, *, __packet__=None, **kwargs)[source]¶
Bases:
SchemaHeader schema for UDP packet.
- payload: bytes = <PayloadField payload>¶
Payload. A Length below the header’s own 8 octets leaves the length negative, which takes the rest of the datagram.
- trailer: bytes = <PayloadField trailer>¶
Octets captured past the Length field, see
IPv4.trailer.
Data Models¶
- class pcapkit.protocols.data.transport.udp.UDP(srcport, dstport, len, checksum)[source]¶
Bases:
ProtocolData model for UDP protocol.
Footnotes