Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

ipaddress - Python의 IPv4/IPv6 조작 라이브러리

<시간/>

인터넷 프로토콜은 현재 버전 4에서 버전 6으로 이동하는 과정에 있습니다. 버전 4는 인터넷에 직접 연결되는 점점 더 많은 수의 장치를 처리하기에 충분한 주소를 제공하지 않기 때문에 이것이 필요합니다.

IPv4 주소는 "옥텟"이라고 하는 4개의 8비트 그룹으로 표현되는 32비트로 구성됩니다. 이것은 각 8비트 옥텟이 0에서 255까지의 10진수 값을 가질 수 있는 "점으로 구분된 10진수" 형식입니다.

예를 들어 :192.168.1.1

CIDR 표기법이 있는 IPv4 주소:192.168.1.1/24 여기서 24는 처음 세 옥텟이 네트워크를 식별하고 마지막 옥텟이 노드를 식별함을 의미합니다.

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 주소를 제공할 수 있습니다.

>>> IP 주소 가져오기>>> 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 모듈은 다음 클래스를 정의합니다.

IPv4주소(주소)

이 생성자는 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')> \xC0\xA8\x00\x01')IPv4주소('192.168.0.1')

IPv6주소()

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')

버전

적절한 버전 번호를 반환합니다.

>>> 추가 =ipaddress.IPv4Address('192.168.0.1')>>> add.version4>>> ip =ipaddress.IPv6Address('2001:db8::1000')>>> ip.version6