Python
 Computer >> コンピューター >  >> プログラミング >> Python

ipaddress-PythonのIPv4/IPv6操作ライブラリ


インターネットプロトコルは現在、バージョン4からバージョン6に移行中です。バージョン4は、インターネットに直接接続するデバイスの数の増加に対応するのに十分なアドレスを提供していないため、これが必要です。

IPv4アドレスは32ビットで構成され、「オクテット」と呼ばれる4つの8ビットグループに表されます。これは「ドット付き10進」形式であり、各8ビットオクテットの10進値は0〜255です。

:192.168.1.1

CIDR表記のIPv4アドレス:192.168.1.1/24ここで、24は、最初の3つのオクテットがネットワークを識別し、最後のオクテットがノードを識別することを意味します。

IPv6アドレスの長さは128ビットです。 16進表記を使用します。 IPv6アドレスの各位置は、0からfまでの値を持つ4ビットを表します。 128ビットは、それぞれコロンで区切られた16ビットの8つのグループに分割されます。

例: 2001:db8:abcd:100 ::1/64

すべてのIPv6アドレスは、CIDR表記を使用して、ネットワークの識別に使用される先頭ビットの数と、ホスト/インターフェイスの識別に使用される残りのビットを決定します。

Pythonの標準ライブラリには、IPv4およびIPv6アドレスとネットワークを作成、操作、操作する機能を提供するipaddressモジュールがあります。

このモジュールは、IPアドレス、ネットワーク、およびインターフェースを便利に作成するために、次のファクトリ機能を提供します。

ip_address()

引数として渡されたIPアドレスに応じて、IPv4AddressまたはIPv6Addressオブジェクトを返します。 IPv4またはIPv6アドレスのいずれかを指定できます。

>>> import ipaddress
>>> ipaddress.ip_address('192.168.0.1')
IPv4Address('192.168.0.1')
>>> ipaddress.ip_address('2001:ab7::')
IPv6Address('2001:ab7::')

ip_network()

引数として渡されたIPアドレスに応じて、IPv4NetworkまたはIPv6Networkオブジェクトを返します。

>>> ipaddress.ip_network('192.168.100.0/24')
IPv4Network('192.168.100.0/24')
>>> ipaddress.ip_network('2001:db8:abcd:100::/64')
IPv6Network('2001:db8:abcd:100::/64')

ip_interface()

引数として渡されたIPアドレスに応じて、IPv4InterfaceまたはIPv6Interfaceオブジェクトを返します。

>>> ipaddress.ip_interface('192.168.100.10/24')
IPv4Interface('192.168.100.10/24')
>>> ipaddress.ip_interface('2001:db8:abcd:100::1/64')
IPv6Interface('2001:db8:abcd:100::1/64')

ipaddressモジュールは、次のクラスを定義します。

IPv4Address(address)

このコンストラクタは、IPv4アドレスオブジェクトを返します。

有効なIPv4アドレスは、次のように識別されます。

ドットで区切られた0〜255の範囲の4つの10進整数で構成される、10進ドット表記の文字列(例:192.168.0.1)。

同等の2進数が32ビットの整数。

長さ4のバイトオブジェクトにパックされた整数(最上位オクテットが最初)。

>>> ipaddress.IPv4Address('192.168.0.1')
IPv4Address('192.168.0.1')
>>> ipaddress.IPv4Address(3162581505)
IPv4Address('188.129.42.1')
>>> ipaddress.IPv4Address(b'\xC0\xA8\x00\x01')
IPv4Address('192.168.0.1')

IPv6Address()

IPv6アドレスを作成します。

有効なIPv6アドレスは次のように構成されています。

4つの16進数の8つのグループで構成される文字列。各グループは16ビットを表します。グループはコロンで区切られます。

128ビットに収まる整数。

長さ16、ビッグエンディアンのバイトオブジェクトにパックされた整数。

>>> ipaddress.IPv6Address('2001:db8::1000')
IPv6Address('2001:db8::1000')
>>> ipaddress.IPv6Address("::abc:7:def")
IPv6Address('::abc:7:def')

バージョン

適切なバージョン番号を返します

>>> add = ipaddress.IPv4Address('192.168.0.1')
>>> add.version
4
>>> ip = ipaddress.IPv6Address('2001:db8::1000')
>>> ip.version
6

  1. PythonのSeabornライブラリで棒グラフをどのように使用できますか?

    Seabornは、データの視覚化に役立つライブラリです。カスタマイズされたテーマと高レベルのインターフェースが付属しています。 以前のプロットでは、データセット全体をグラフにプロットしました。バープロットの助けを借りて、データの分布の中心傾向を理解することができます。 棒グラフ関数は、カテゴリ変数と連続変数の間の関係を確立します。データは長方形のバーの形式で表され、バーの長さはその特定のカテゴリのデータの割合を示します。 「タイタニック」データセットを使用してバープロットを理解しましょう- 例 import pandas as pd import seaborn as sb from m

  2. Scikit-learnでの学習モデル構築:Python機械学習ライブラリ

    この記事では、Scikit-learn:Python MachineLearningLibraryでの学習モデルの構築について学習します。 無料の機械学習ライブラリです。ランダムフォレスト、ベクターマシン、k最近傍法などのさまざまなアルゴリズムをサポートし、numpyとscipyを直接実装します。 データセットのインポート import pandas Url = < specify your URL here> data=pandas.rad_csv(url) データの探索とクリーニング headメソッドを使用して、必要に応じてレコードを指定/フィルタリングできます。 data