Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

ipaddress - ไลบรารีการจัดการ IPv4 / IPv6 ใน Python


ขณะนี้ Internet Protocol กำลังอยู่ระหว่างการย้ายจากเวอร์ชัน 4 เป็นเวอร์ชัน 6 ซึ่งจำเป็นเนื่องจากเวอร์ชัน 4 ไม่มีที่อยู่เพียงพอที่จะรองรับจำนวนอุปกรณ์ที่เพิ่มขึ้นด้วยการเชื่อมต่อโดยตรงกับอินเทอร์เน็ต

ที่อยู่ IPv4 ประกอบด้วย 32 บิต ซึ่งแสดงเป็นกลุ่มแปดบิตสี่กลุ่มที่เรียกว่า "octets" นี่คือรูปแบบ "จุดทศนิยม" ซึ่งแต่ละแปดบิตสามารถมีค่าทศนิยม 0 ถึง 255

ตัวอย่าง :192.168.1.1

ที่อยู่ IPv4 พร้อมสัญลักษณ์ CIDR:192.168.1.1/24 โดยที่ 24 หมายถึง octets สามตัวแรกระบุเครือข่าย และ octet สุดท้ายระบุโหนด

ที่อยู่ IPv6 มีความยาว 128 บิต มันใช้สัญกรณ์ฐานสิบหก แต่ละตำแหน่งในที่อยู่ IPv6 แสดงถึงสี่บิตที่มีค่าตั้งแต่ 0 ถึง f 128 บิตแบ่งออกเป็น 8 กลุ่ม กลุ่มละ 16 บิตคั่นด้วยเครื่องหมายทวิภาค

ตัวอย่าง: 2001:db8:abcd:100::1/64

ที่อยู่ IPv6 ทั้งหมดใช้รูปแบบ CIDR เพื่อกำหนดจำนวนบิตนำหน้าที่ใช้สำหรับการระบุเครือข่ายและส่วนที่เหลือสำหรับการระบุโฮสต์/อินเทอร์เฟซ

ไลบรารีมาตรฐานของ Python มีโมดูล ipaddress ซึ่งให้ความสามารถในการสร้าง จัดการ และดำเนินการบนที่อยู่ IPv4 และ IPv6 และเครือข่าย

โมดูลนี้มีฟังก์ชันโรงงานดังต่อไปนี้ เพื่อสร้างที่อยู่ IP เครือข่าย และอินเทอร์เฟซได้อย่างสะดวก:

ip_address()

ส่งกลับวัตถุ IPv4Address หรือ IPv6Address ขึ้นอยู่กับที่อยู่ IP ที่ส่งผ่านเป็นอาร์กิวเมนต์ อาจมีการระบุที่อยู่ IPv4 หรือ IPv6

>>> นำเข้า ipaddress>>> ipaddress.ip_address('192.168.0.1')IPv4Address('192.168.0.1')>>> ipaddress.ip_address('2001:ab7::')IPv6Address('2001:ab7 ::')

ip_network()

ส่งกลับวัตถุ IPv4Network หรือ IPv6Network ขึ้นอยู่กับที่อยู่ IP ที่ส่งผ่านเป็นอาร์กิวเมนต์

<ก่อนหน้า>>>> 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()

ส่งคืนวัตถุ IPv4Interface หรือ IPv6Interface ขึ้นอยู่กับที่อยู่ IP ที่ส่งผ่านเป็นอาร์กิวเมนต์

<ก่อนหน้า>>>> ipaddress.ip_interface('192.168.100.10/24')IPv4Interface('192.168.100.10/24')>>> ipaddress.ip_interface('2001:db8:abcd:100::16/64') IPv6Interface('2001:db8:abcd:100::16/64')

โมดูล ipaddress กำหนดคลาสต่อไปนี้:

IPv4Address(ที่อยู่)

ตัวสร้างนี้ส่งคืนวัตถุที่อยู่ IPv4

มีการระบุที่อยู่ IPv4 ที่ถูกต้องโดยสิ่งต่อไปนี้:

สตริงในรูปแบบจุดทศนิยม ซึ่งประกอบด้วยจำนวนเต็มทศนิยมสี่ตัวในช่วงที่รวม 0-255 คั่นด้วยจุด (เช่น 192.168.0.1)

จำนวนเต็มที่มีค่าไบนารีเท่ากับ 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 ที่ถูกต้องประกอบด้วย:

สตริงที่ประกอบด้วยเลขฐานสิบหกสี่หลักแปดกลุ่ม แต่ละกลุ่มมี 16 บิต กลุ่มจะถูกคั่นด้วยเครื่องหมายทวิภาค

จำนวนเต็มที่พอดีกับ 128 บิต

จำนวนเต็มที่บรรจุลงในอ็อบเจ็กต์ไบต์ที่มีความยาว 16 ซึ่งเป็น big-endian

<ก่อนหน้า>>>> 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.version4>>>> ip =ipaddress.IPv6Address('2001:db8::1000')>>> ip.version6

ก่อน>