Python - IP-адрес

IP-адрес (Интернет-протокол) - это фундаментальная сетевая концепция, которая обеспечивает возможность назначения адресов в сети. Модуль 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