IP-адрес (Интернет-протокол) является фундаментальной сетевой концепцией, которая обеспечивает возможность назначения адресов в сети. Ipaddress модуля Python широко используется для проверки и классификации 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
Сравнение IP-адресов
Мы можем сделать логическое сравнение IP-адресов, чтобы выяснить, равны они или нет. Мы также можем сравнить, если один IP-адрес больше, чем другой по своему значению.
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'))
Когда мы запускаем вышеуказанную программу, мы получаем следующий вывод:
True False True
Арифметика IP-адресов
Мы также можем применять арифметические операции для управления IP-адресами. Мы можем добавить или вычесть целые числа в IP-адрес. Если после добавления значение последнего октета выходит за пределы 255, то предыдущий октет увеличивается для соответствия значению. Если дополнительное значение не может быть поглощено ни одним из предыдущих октетов, возникает ошибка значения.
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)
Когда мы запускаем вышеуказанную программу, мы получаем следующий вывод: