Computer >> Máy Tính >  >> Lập trình >> Python

ipaddress - Thư viện thao tác IPv4 / IPv6 bằng Python

Giao thức Internet hiện đang trong quá trình chuyển từ phiên bản 4 sang phiên bản 6. Điều này là cần thiết vì phiên bản 4 không cung cấp đủ địa chỉ để xử lý ngày càng nhiều thiết bị có kết nối trực tiếp với internet.

Địa chỉ IPv4 bao gồm 32 bit, được biểu diễn thành bốn nhóm tám bit được gọi là "bộ tám". Đây là định dạng "số thập phân có dấu chấm" trong đó mỗi bộ tám tám bit có thể có giá trị thập phân từ 0 đến 255.

Ví dụ :192.168.1.1

Địa chỉ IPv4 với ký hiệu CIDR:192.168.1.1/24 trong đó 24 có nghĩa là ba octet đầu tiên xác định mạng và octet cuối cùng xác định nút.

Địa chỉ IPv6 dài 128 bit. Nó sử dụng ký hiệu thập lục phân. Mỗi vị trí trong địa chỉ IPv6 đại diện cho bốn bit có giá trị từ 0 đến f. 128 bit được chia thành 8 nhóm, mỗi nhóm 16 bit được phân tách bằng dấu hai chấm.

Ví dụ: 2001:db8:abcd:100 ::1/64

Tất cả các địa chỉ IPv6 sử dụng ký hiệu CIDR để xác định có bao nhiêu bit đầu được sử dụng để nhận dạng mạng và phần còn lại để nhận dạng máy chủ / giao diện.

Thư viện tiêu chuẩn của Python có mô-đun ipaddress cung cấp khả năng tạo, thao tác và hoạt động trên mạng và địa chỉ IPv4 và IPv6.

Mô-đun cung cấp các chức năng ban đầu sau đây để tạo địa chỉ IP, mạng và giao diện một cách thuận tiện:

ip_address ()

Trả về đối tượng IPv4Address hoặc IPv6Address tùy thuộc vào địa chỉ IP được truyền dưới dạng đối số. Có thể cung cấp địa chỉ IPv4 hoặc IPv6.

>>> nhập ipaddress>>> ipaddress.ip_address ('192.168.0.1') IPv4Address ('192.168.0.1')>>> ipaddress.ip_address ('2001:ab7 ::') IPv6Address ('2001:ab7 ::') 

ip_network ()

Trả về đối tượng IPv4Network hoặc IPv6Network tùy thuộc vào địa chỉ IP được truyền dưới dạng đối số.

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

Trả về đối tượng IPv4Interface hoặc IPv6Interface tùy thuộc vào địa chỉ IP được truyền dưới dạng đối số.

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

Mô-đun ipaddress xác định các lớp sau:

IPv4Address (địa chỉ)

Hàm tạo này trả về một đối tượng địa chỉ IPv4.

Địa chỉ IPv4 hợp lệ được xác định bằng cách sau:

Một chuỗi ở ký hiệu dấu chấm thập phân, bao gồm bốn số nguyên thập phân trong phạm vi bao gồm 0–255, được phân tách bằng dấu chấm (ví dụ:192.168.0.1).

Một số nguyên có tương đương nhị phân là 32 bit.

Một số nguyên được đóng gói thành một đối tượng byte có độ dài 4 (octet quan trọng nhất đầu tiên).

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

Tạo địa chỉ IPv6.

địa chỉ IPv6 hợp lệ được cấu thành như sau:

Một chuỗi bao gồm tám nhóm bốn chữ số thập lục phân, mỗi nhóm đại diện cho 16 bit. Các nhóm được phân tách bằng dấu hai chấm.

Một số nguyên vừa với 128 bit.

Một số nguyên được đóng gói thành một đối tượng byte có độ dài 16, big-endian.

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

Phiên bản

Trả về số phiên bản thích hợp

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