Python - ที่อยู่ IP
ที่อยู่ IP (Internet Protocol) เป็นแนวคิดพื้นฐานของเครือข่ายที่ให้ความสามารถในการกำหนดที่อยู่ในเครือข่าย โมดูล pythonipaddressถูกใช้อย่างกว้างขวางเพื่อตรวจสอบความถูกต้องและจัดประเภทที่อยู่ IP เป็นประเภท IPV4 และ IPV6 นอกจากนี้ยังสามารถใช้เพื่อทำการเปรียบเทียบค่าที่อยู่ IP รวมทั้งเลขคณิตที่อยู่ IP เพื่อจัดการกับที่อยู่ IP
ตรวจสอบที่อยู่ IPV4
ฟังก์ชัน ip_address ตรวจสอบที่อยู่ IPV4 หากช่วงของค่าเกิน 0 ถึง 255 แสดงว่ามีข้อผิดพลาด
print (ipaddress.ip_address(u'192.168.0.255'))
print (ipaddress.ip_address(u'192.168.0.256'))
เมื่อเรารันโปรแกรมข้างต้นเราจะได้ผลลัพธ์ดังต่อไปนี้ -
192.168.0.255
ValueError: u'192.168.0.256' does not appear to be an IPv4 or IPv6 address
ตรวจสอบที่อยู่ IPV6
ฟังก์ชัน ip_address ตรวจสอบความถูกต้องของที่อยู่ IPV6 หากช่วงของค่าเกิน 0 ถึง ffff แสดงว่าเกิดข้อผิดพลาด
print (ipaddress.ip_address(u'FFFF:9999:2:FDE:257:0:2FAE:112D'))
#invalid IPV6 address
print (ipaddress.ip_address(u'FFFF:10000:2:FDE:257:0:2FAE:112D'))
เมื่อเรารันโปรแกรมข้างต้นเราจะได้ผลลัพธ์ดังต่อไปนี้ -
ffff:9999:2:fde:257:0:2fae:112d
ValueError: u'FFFF:10000:2:FDE:257:0:2FAE:112D' does not appear to be an IPv4 or IPv6 address
ตรวจสอบประเภทของที่อยู่ IP
เราสามารถจัดหาที่อยู่ IP ของรูปแบบต่างๆและโมดูลจะสามารถจดจำรูปแบบที่ถูกต้องได้ นอกจากนี้ยังระบุว่าเป็นที่อยู่ IP ประเภทใด
print type(ipaddress.ip_address(u'192.168.0.255'))
print type(ipaddress.ip_address(u'2001:db8::'))
print ipaddress.ip_address(u'192.168.0.255').reverse_pointer
print ipaddress.ip_network(u'192.168.0.0/28')
เมื่อเรารันโปรแกรมข้างต้นเราจะได้ผลลัพธ์ดังต่อไปนี้ -
255.0.168.192.in-addr.arpa 192.168.0.0/28
Comparison of IP Addresses
We can make a logical comparison of the IP addresses finding out if they are equal or not. We can also compare if one IP address is greater than the other in its value.
print (ipaddress.IPv4Address(u'192.168.0.2') > ipaddress.IPv4Address(u'192.168.0.1'))
print (ipaddress.IPv4Address(u'192.168.0.2') == ipaddress.IPv4Address(u'192.168.0.1'))
print (ipaddress.IPv4Address(u'192.168.0.2') != ipaddress.IPv4Address(u'192.168.0.1'))
When we run the above program, we get the following output −
True
False
True
IP Addresses Arithmetic
We can also apply arithmetic operations to manipulate IP addresses. We can add or subtract integers to an IP address. If after addition the value of the last octet goes beyond 255 then the previous octet gets incremented to accommodate the value. If the extra value can not be absorbed by any of the previous octet then a value error is raised.
print (ipaddress.IPv4Address(u'192.168.0.2')+1)
print (ipaddress.IPv4Address(u'192.168.0.253')-3)
# Increases the previous octet by value 1.
print (ipaddress.IPv4Address(u'192.168.10.253')+3)
# Throws Value error
print (ipaddress.IPv4Address(u'255.255.255.255')+1)
When we run the above program, we get the following output −
192.168.0.3
192.168.0.250
192.168.11.0
AddressValueError: 4294967296 (>= 2**32) is not permitted as an IPv4 address