### Internet protocol requirements

An internet protocol must meet the requirements for a protocol as well as the additional requirements listed below.

In the table below, `X` denotes an internet protocol class, `a` denotes a value of type `X`, and `b` denotes a value of type `X`.

Table 12. InternetProtocol requirements

expression | return type | assertion/note pre/post-conditions
--- | --- | ---
`X::resolver` | `ip::basic_resolver<X>` | The type of a resolver for the protocol.
`X::v4()` | `X` | Returns an object representing the IP version 4 protocol.
`X::v6()` | `X` | Returns an object representing the IP version 6 protocol.
`a == b` | convertible to `bool` | Returns whether two protocol objects are equal.
`a != b` | convertible to `bool` | Returns `!(a == b)`.