Python - IP Address


Advertisements

IP Address (Internet Protocol) is a fundamental networking concept that provides address assignation capability in a network. The python module ipaddress is used extensively to validate and categorize IP address to IPV4 and IPV6 type. It can also be used to do comparison of the IP address values as well as IP address arithmetic for manipulating the ip addresses.

Validate the IPV4 Address

The ip_address function validates the IPV4 address. If the range of values is beyond 0 to 255, then it throws an error.

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

When we run the above program, we get the following output −

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

Validate the IPV6 Address

The ip_address function validates the IPV6 address. If the range of values is beyond 0 to ffff, then it throws an error.

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

When we run the above program, we get the following output −

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

Check the type of IP Address

We can supply the IP address of various formats and the module will be able to recognize the valid formats. It will also indicate which category of IP address it is.

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

When we run the above program, we get the following output −



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

Useful Video Courses


Video

Python Online Training

Most Popular

187 Lectures 17.5 hours

Malhar Lathkar

Video

Python Essentials Online Training

55 Lectures 8 hours

Arnab Chakraborty

Video

Learn Python Programming in 100 Easy Steps

136 Lectures 11 hours

In28Minutes Official

Video

Python with Data Science

75 Lectures 13 hours

Eduonix Learning Solutions

Video

Python 3 from scratch to become a developer in demand

70 Lectures 8.5 hours

Lets Kode It

Video

Python Data Science basics with Numpy, Pandas and Matplotlib

63 Lectures 6 hours

Abhilash Nelson

Advertisements