Python - Alamat IP

Alamat IP (Internet Protocol) adalah konsep jaringan dasar yang menyediakan kemampuan penetapan alamat dalam jaringan. Modul pythonipaddressdigunakan secara ekstensif untuk memvalidasi dan mengkategorikan alamat IP ke jenis IPV4 dan IPV6. Ini juga dapat digunakan untuk melakukan perbandingan nilai alamat IP serta aritmatika alamat IP untuk memanipulasi alamat ip.

Validasi Alamat IPV4

Fungsi ip_address memvalidasi alamat IPV4. Jika rentang nilai melebihi 0 hingga 255, maka itu akan menimbulkan kesalahan.

print (ipaddress.ip_address(u'192.168.0.255'))
print (ipaddress.ip_address(u'192.168.0.256'))

Ketika kami menjalankan program di atas, kami mendapatkan output berikut -

192.168.0.255
ValueError: u'192.168.0.256' does not appear to be an IPv4 or IPv6 address

Validasi Alamat IPV6

Fungsi ip_address memvalidasi alamat IPV6. Jika rentang nilai di luar 0 hingga ffff, maka itu akan memunculkan kesalahan.

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

Ketika kami menjalankan program di atas, kami mendapatkan output berikut -

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

Periksa jenis Alamat IP

Kami dapat memberikan alamat IP dalam berbagai format dan modul akan dapat mengenali format yang valid. Ini juga akan menunjukkan kategori alamat IP itu.

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

Ketika kami menjalankan program di atas, kami mendapatkan output berikut -

 
       
         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