mirror of
https://github.com/python/cpython.git
synced 2025-10-23 15:12:02 +00:00
Issue 14814: Further clean ups to the ipaddress tutorial
This commit is contained in:
parent
b582ecc562
commit
ccd712a8d1
1 changed files with 24 additions and 13 deletions
|
@ -9,11 +9,11 @@ An Introduction to the ipaddress module
|
||||||
|
|
||||||
.. topic:: Overview
|
.. topic:: Overview
|
||||||
|
|
||||||
This document aims to provide a gentle introduction to :mod:`ipaddress`
|
This document aims to provide a gentle introduction to the
|
||||||
module. It is aimed primarily at users that aren't already familiar with
|
:mod:`ipaddress` module. It is aimed primarily at users that aren't
|
||||||
IP networking terminology, but may also be useful to network engineers
|
already familiar with IP networking terminology, but may also be useful
|
||||||
wanting an overview of how the ipaddress module represents IP network
|
to network engineers wanting an overview of how :mod:`ipaddress`
|
||||||
addressing concepts.
|
represents IP network addressing concepts.
|
||||||
|
|
||||||
|
|
||||||
Creating Address/Network/Interface objects
|
Creating Address/Network/Interface objects
|
||||||
|
@ -45,8 +45,9 @@ IP Host Addresses
|
||||||
|
|
||||||
Addresses, often referred to as "host addresses" are the most basic unit
|
Addresses, often referred to as "host addresses" are the most basic unit
|
||||||
when working with IP addressing. The simplest way to create addresses is
|
when working with IP addressing. The simplest way to create addresses is
|
||||||
to use the :func:`ipaddress.ip_address` factory function, which automatically determines
|
to use the :func:`ipaddress.ip_address` factory function, which automatically
|
||||||
whether to create an IPv4 or IPv6 address based on the passed in value::
|
determines whether to create an IPv4 or IPv6 address based on the passed in
|
||||||
|
value::
|
||||||
|
|
||||||
>>> ipaddress.ip_address('192.0.2.1')
|
>>> ipaddress.ip_address('192.0.2.1')
|
||||||
IPv4Address('192.0.2.1')
|
IPv4Address('192.0.2.1')
|
||||||
|
@ -121,8 +122,9 @@ integer, so the network prefix includes the entire network address::
|
||||||
>>> ipaddress.ip_network(42540766411282592856903984951653826560)
|
>>> ipaddress.ip_network(42540766411282592856903984951653826560)
|
||||||
IPv6Network('2001:db8::/128')
|
IPv6Network('2001:db8::/128')
|
||||||
|
|
||||||
Creation of a particular kind of network can be forced by calling the
|
As with addresses, creation of a particular kind of network can be forced
|
||||||
class constructor directly instead of using the factory function.
|
by calling the class constructor directly instead of using the factory
|
||||||
|
function.
|
||||||
|
|
||||||
|
|
||||||
Host Interfaces
|
Host Interfaces
|
||||||
|
@ -130,7 +132,7 @@ Host Interfaces
|
||||||
|
|
||||||
As mentioned just above, if you need to describe an address on a particular
|
As mentioned just above, if you need to describe an address on a particular
|
||||||
network, neither the address nor the network classes are sufficient.
|
network, neither the address nor the network classes are sufficient.
|
||||||
Notation like ``192.0.2.1/24`` is commonly used network engineers and the
|
Notation like ``192.0.2.1/24`` is commonly used by network engineers and the
|
||||||
people who write tools for firewalls and routers as shorthand for "the host
|
people who write tools for firewalls and routers as shorthand for "the host
|
||||||
``192.0.2.1`` on the network ``192.0.2.0/24``", Accordingly, :mod:`ipaddress`
|
``192.0.2.1`` on the network ``192.0.2.0/24``", Accordingly, :mod:`ipaddress`
|
||||||
provides a set of hybrid classes that associate an address with a particular
|
provides a set of hybrid classes that associate an address with a particular
|
||||||
|
@ -213,10 +215,19 @@ the hostmask (any bits that are not part of the netmask):
|
||||||
|
|
||||||
Exploding or compressing the address::
|
Exploding or compressing the address::
|
||||||
|
|
||||||
>>> net6.exploded
|
|
||||||
'2001:0000:0000:0000:0000:0000:0000:0000/96'
|
|
||||||
>>> addr6.exploded
|
>>> addr6.exploded
|
||||||
'2001:0000:0000:0000:0000:0000:0000:0001'
|
'2001:0db8:0000:0000:0000:0000:0000:0000'
|
||||||
|
>>> addr6.compressed
|
||||||
|
'2001:db8::'
|
||||||
|
>>> net6.exploded
|
||||||
|
'2001:0db8:0000:0000:0000:0000:0000:0000/96'
|
||||||
|
>>> net6.compressed
|
||||||
|
'2001:db8::/96'
|
||||||
|
|
||||||
|
While IPv4 doesn't support explosion or compression, the associated objects
|
||||||
|
still provide the relevant properties so that version neutral code can
|
||||||
|
easily ensure the most concise or most verbose form is used for IPv6
|
||||||
|
addresses while still correctly handling IPv4 addresses.
|
||||||
|
|
||||||
|
|
||||||
Networks as lists of Addresses
|
Networks as lists of Addresses
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue