RARP/DRARP - (Dynamic) Reverse Address Resolution Protocol

pcapkit.protocols.application.rarp contains RARP only, which implements extractor for (Dynamic) Reverse Address Resolution Protocol (RARP/DRARP) [*], whose structure is described as below:

Octets

Bits

Name

Description

0

0

rarp.htype

Hardware Type

2

16

rarp.ptype

Protocol Type

4

32

rarp.hlen

Hardware Address Length

5

40

rarp.plen

Protocol Address Length

6

48

rarp.oper

Operation

8

64

rarp.sha

Sender Hardware Address

14

112

rarp.spa

Sender Protocol Address

18

144

rarp.tha

Target Hardware Address

24

192

rarp.tpa

Target Protocol Address

class pcapkit.protocols.application.rarp.RARP(file=None, length=None, **kwargs)[source]

Bases: Application, ARP

This class implements Reverse Address Resolution Protocol.

RFC 1122 Section 1.1.3 lists RARP in the application layer, among the “support protocols, used for host name mapping, booting, and management”, while putting ARP in the Link Layer chapter at RFC 1122 Section 2.3.2 – two sibling protocols sharing one frame format and one EtherType, placed on function alone. Hence the two bases: the layer base Application first, for layer == 'Application', then the protocol family base ARP for the shared parser. See Protocol Layer Placement.

Note

The order is load-bearing, not stylistic. ARP’s chain reaches Link, which owns __layer__, so class RARP(ARP, Application) would report 'Link'.

The subpackage does not track the dispatch tier either: RARP is dispatched from Link.__proto__ at Reverse_Address_Resolution_Protocol, since an Ethernet frame is what carries it.

classmethod id()[source]

Index ID of the protocol.

Return type:

tuple[Literal['RARP'], Literal['DRARP']]

classmethod __index__()[source]

Numeral registry index of the protocol.

Return type:

EtherType

Returns:

Numeral registry index of the protocol in IANA.

class pcapkit.protocols.application.rarp.DRARP(file=None, length=None, **kwargs)[source]

Bases: RARP

This class implements Dynamic Reverse Address Resolution Protocol.

Inherits RARP’s bases unchanged, so layer == 'Application' here too – RFC 1931 makes it RARP with dynamic allocation, the same function and so the same layer.

classmethod id()[source]

Index ID of the protocol.

Return type:

tuple[Literal['DRARP']]

Footnotes