ขณะนี้ 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 ก่อน>