Base Protocol

pcapkit.protocols.internet.internet contains Internet, which is a base class for internet layer protocols, eg. AH, IPsec, IPv4, IPv6, IPX, and etc.

class pcapkit.protocols.internet.internet.Internet(file=None, length=None, **kwargs)[source]

Bases: Protocol[PT], Generic[PT]

Abstract base class for internet layer protocol family.

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

Index

Protocol

HOPOPT

pcapkit.protocols.internet.hopopt.HOPOPT

IPv4

pcapkit.protocols.internet.ipv4.IPv4

TCP

pcapkit.protocols.transport.tcp.TCP

UDP

pcapkit.protocols.transport.udp.UDP

IPv6

pcapkit.protocols.internet.ipv6.IPv6

IPv6_Route

pcapkit.protocols.internet.ipv6_route.IPv6_Route

IPv6_Frag

pcapkit.protocols.internet.ipv6_frag.IPv6_Frag

AH

pcapkit.protocols.internet.ah.AH

IPv6_NoNxt

pcapkit.protocols.misc.raw.Raw

IPv6_Opts

pcapkit.protocols.internet.ipv6_opts.IPv6_Opts

IPX_in_IP

pcapkit.protocols.internet.ipx.IPX

Mobility_Header

pcapkit.protocols.internet.mh.MH

HIP

pcapkit.protocols.internet.hip.HIP

Parameters
  • *args (Any) – Arbitrary positional arguments.

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

Return type

Protocol[PT]

property layer: Literal['Internet']

Protocol layer.

Return type

Literal[‘Internet’]

classmethod register(code, module, class_)[source]

Register a new protocol class.

Notes

The full qualified class name of the new protocol class should be as {module}.{class_}.

Parameters
Return type

None

_read_protos(size)[source]

Read next layer protocol type.

Parameters

size (int) – buffer size

Return type

TransType

Returns

Next layer’s protocol enumeration.

_decode_next_layer(dict_, proto=None, length=None, *, version=4, ipv6_exthdr=None)[source]

Decode next layer extractor.

Parameters
  • dict_ (TypeVar(PT, bound= Info)) – info buffer

  • proto (Optional[int]) – next layer protocol index

  • length (Optional[int]) – valid (non-padding) length

  • version (Literal[4, 6]) – IP version

  • ipv6_exthdr (Optional[ProtoChain]) – protocol chain of IPv6 extension headers

Return type

TypeVar(PT, bound= Info)

Returns

Current protocol with next layer extracted.

_import_next_layer(proto, length=None, *, version=4, extension=False)[source]

Import next layer extractor.

Parameters
  • proto (int) – next layer protocol index

  • length (Optional[int]) – valid (non-padding) length

  • version (Literal[4, 6]) – IP protocol version

  • extension (bool) – if is extension header

Return type

Protocol

Returns

Instance of next layer.

__layer__: Optional[Literal['Link', 'Internet', 'Transport', 'Application']] = 'Internet'

Layer of protocol.

__proto__: DefaultDict[int, tuple[str, str]]

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

Type

DefaultDict[int, Tuple[str, str]]