IP адреса
Определение
Определение
Определение
Задача 1
Ручное решение
Модуль ipaddress
Программное решение
Задача 2
Задача 2
Задача 3
Задача 3
Задача 4
Задача 4
Задача 5
Задача 5
Задача 6
Задача 6
Задача 7
Задача 7
Задача 8
Задача 8
Задача 9
Задача 9
Задача 10
Задача 10
Задача 11
Задача 11
Задача 12
Задача 12
321.17K
Категория: ИнтернетИнтернет

Занятие 2.4

1. IP адреса

2. Определение

• IP-адрес (IPv4)
• Формат: 4 октета по 8 бит = 32 бита
• Вид: XXX.XXX.XXX.XXX (каждое число от 0 до 255)
• Пример: 192.168.1.1
• В двоичном виде:
• 11000000.10101000.00000001.00000001
• Быстрый перевод:
• '.'.join(f'{x:>08b}' for x in [192,168,1,1])

3. Определение

• Маска подсети
• Назначение: отделяет адрес сети от адреса узла
• /8
• /255.0.0.0 /11111111.00000000.00000000.00000000
• /16
• /255.255.0.0 /11111111.11111111.00000000.00000000
• /26
• /255.255.255.192 /11111111.11111111.11111111.11000000
• Сначала все единицы, затем нули
• Формула количества адресов: 2^(32-n), где n — префикс

4. Определение

• Адреса сети = IP-адрес AND Маска (побитовое И)

5. Задача 1


В терминологии сетей TCP/IP маской сети называют двоичное число, которое
показывает, какая часть IP-адреса узла сети относится к адресу сети, а какая к адресу узла в этой сети. Адрес сети получается в результате применения
поразрядной конъюнкции к заданному адресу узла и маске сети.
• По заданным IP-адресу узла сети и маске определите
адрес сети:
• IP-адрес: 10.8.248.131
• Маска: 255.255.224.0
• При записи ответа выберите из приведённых в таблице
чисел 4 фрагмента четыре элемента IP-адреса и запишите
в нужном порядке соответствующие им буквы без точек.

6. Ручное решение

7. Модуль ipaddress

• Встроенный модуль Python для работы с IPадресами и сетями.
• Позволяет создавать объекты IP-адресов и сетей,
автоматически вычисляет адрес сети, маску,
широковещательный адрес, количество хостов..
Умеет проверять принадлежность адреса сети.
Для задач ЕГЭ удобен тем, что одной строкой
ip_network("IP/маска", 0) сразу даёт адрес сети и
все параметры.

8. Программное решение

• from ipaddress import *
• net = ip_network("10.8.248.131/255.255.224.0",0)
• print(net) #10.8.224.0/19 выводит адрес сети
• # сопоставить числа в адресе сети с буквами из
таблицы

9. Задача 2

• В терминологии сетей TCP/IP маской сети называют
двоичное число, которое показывает, какая часть IPадреса узла сети относится к адресу сети, а какая - к
адресу узла в этой сети. Адрес сети получается в
результате применения поразрядной конъюнкции к
заданному адресу узла и маске сети.
• Для узла с IP адресом 118.193.30.139 адрес сети равен
118.193.24.0. Чему равно значение третьего слева байта
маски? Ответ запишите в виде десятичного числа.

10. Задача 2

• from ipaddress import *
• for mask in range(33):
net = ip_network(f"118.193.30.139/{mask}",0)
print(net, net.netmask)
• # 248

11. Задача 3

• В терминологии сетей TCP/IP маской сети называют
двоичное число, которое показывает, какая часть IPадреса узла сети относится к адресу сети, а какая - к
адресу узла в этой сети. Адрес сети получается в
результате применения поразрядной конъюнкции к
заданному адресу узла и маске сети.
• Для узла с IP-адресом 154.201.208.17 адрес сети равен
154.201.192.0. Чему равно наибольшее возможное
значение третьего слева байта маски? Ответ запишите в
виде десятичного числа.

12. Задача 3

• from ipaddress import *
• for mask in range(33):
net = ip_network(f"154.201.208.17/{mask}",0)
print(net, net.netmask)
• # 224

13. Задача 4

• В терминологии сетей TCP/IP маской сети называют
двоичное число, которое показывает, какая часть IPадреса узла сети относится к адресу сети, а какая - к
адресу узла в этой сети. Адрес сети получается в
результате применения поразрядной конъюнкции к
заданному адресу узла и маске сети.
• Для узла с IP адресом 122.21.49.91 адрес сети равен
122.21.48.0. Найдите наименьшее возможное количество
единиц в двоичной записи маски подсети.

14. Задача 4

• from ipaddress import *
• for mask in range(33):
net = ip_network(f"122.21.49.91/{mask}",0)
print(net, net.netmask)
• # 20

15. Задача 5

• В терминологии сетей TCP/IP маской сети называют
двоичное число, которое показывает, какая часть IPадреса узла сети относится к адресу сети, а какая - к
адресу узла в этой сети. Адрес сети получается в
результате применения поразрядной конъюнкции к
заданному адресу узла и маске сети.
• Для узла с IP адресом 173.103.25.118 адрес сети равен
173.103.24.0. Найдите наибольшее возможное количество
нулей в двоичной записи маски подсети.

16. Задача 5

• from ipaddress import *
• for mask in range(33):
net = ip_network(f"173.103.25.118/{mask}",0)
print(net, net.netmask)
• #количество нулей равно 32-количество единиц, чем
меньше 1, тем больше 0

17. Задача 6

• В терминологии сетей TCP/IP маской сети называют
двоичное число, которое показывает, какая часть IPадреса узла сети относится к адресу сети, а какая - к
адресу узла в этой сети. Адрес сети получается в
результате применения поразрядной конъюнкции к
заданному адресу узла и маске сети.
• Для узла с IP адресом 158.116.11.146 адрес сети равен
158.116.0.0. Для скольких различных значений маски это
возможно?

18. Задача 6

• from ipaddress import *
• for mask in range(33):
net = ip_network(f"158.116.11.146/{mask}",0)
print(net, net.netmask)
• #7

19. Задача 7

• В терминологии сетей TCP/IP маской сети называют
двоичное число, которое показывает, какая часть IPадреса узла сети относится к адресу сети, а какая - к
адресу узла в этой сети. Адрес сети получается в
результате применения поразрядной конъюнкции к
заданному адресу узла и маске сети.
• Для узла с IP адресом 191.173.145.240 адрес сети равен
191.173.144.0. Чему равно наименьшее количество
возможных адресов в этой сети?

20. Задача 7

• from ipaddress import *
• for mask in range(33):
net = ip_network(f"191.173.145.240/{mask}",0)
print(net, net.netmask, net.num_addresses)
• # 512

21. Задача 8

• В терминологии сетей TCP/IP маской сети называют
двоичное число, которое показывает, какая часть IPадреса узла сети относится к адресу сети, а какая - к
адресу узла в этой сети. Адрес сети получается в
результате применения поразрядной конъюнкции к
заданному адресу узла и маске сети.
• Для некоторой подсети используется маска 255.255.240.0.
Сколько различных адресов компьютеров теоретически
допускает эта маска, если два адреса (адрес сети и
широковещательный) не используют?

22. Задача 8

• from ipaddress import *
• net = ip_network(f"0.0.0.0/255.255.240.0",0)
• print(net, net.netmask, net.num_addresses)
• # 4094

23. Задача 9

• В терминологии сетей TCP/IP маской сети называют
двоичное число, которое показывает, какая часть IPадреса узла сети относится к адресу сети, а какая - к
адресу узла в этой сети. Адрес сети получается в
результате применения поразрядной конъюнкции к
заданному адресу узла и маске сети.
• Два узла, находящиеся в одной сети, имеют IP-адреса
165.112.200.70 и 165.112.175.80. Найдите наибольшее
возможное количество единиц в двоичной записи маски
подсети.

24. Задача 9

• from ipaddress import *
• for mask in range(33):
net1 = ip_network(f"165.112.200.70/{mask}",0)
net2 = ip_network(f"165.112.175.80/{mask}",0)
if net1 == net2:
• # 17
print(net1, net1.netmask)

25. Задача 10

• В терминологии сетей TCP/IP маской сети называют
двоичное число, которое показывает, какая часть IPадреса узла сети относится к адресу сети, а какая - к
адресу узла в этой сети. Адрес сети получается в
результате применения поразрядной конъюнкции к
заданному адресу узла и маске сети.
• Два узла, находящиеся в разных подсетях, имеют IPадреса 10.96.180.231 и 10.96.140.118. В масках обеих
подсетей одинаковое количество единиц. Найдите
наибольшее возможное количество нулей в двоичной
записи маски подсети.

26. Задача 10

• from ipaddress import *
• for mask in range(33):
net1 = ip_network(f"10.96.180.231/{mask}",0)
net2 = ip_network(f"10.96.140.118/{mask}",0)
if net1 != net2:
• # 13
print(net1, net1.netmask)

27. Задача 11

• В терминологии сетей TCP/IP маской сети называют
двоичное число, которое показывает, какая часть IPадреса узла сети относится к адресу сети, а какая - к
адресу узла в этой сети. Адрес сети получается в
результате применения поразрядной конъюнкции к
заданному адресу узла и маске сети.
• Сеть задана IP-адресом 192.168.240.0 и маской сети
255.255.255.0. Сколько в этой сети IP-адресов, для которых
количество единиц и нулей в двоичной записи IP-адреса
одинаково?
• В ответе укажите только число.

28. Задача 11

• from ipaddress import *
• k=0
• net1 = ip_network(f"192.168.240.0/255.255.255.0",0)
• for ip in net1:
if f"{ip:b}".count("1") == f"{ip:b}".count("0"):
k += 1
• print(k) #8

29. Задача 12

• В терминологии сетей TCP/IP маской сети называют
двоичное число, которое показывает, какая часть IPадреса узла сети относится к адресу сети, а какая - к
адресу узла в этой сети. Адрес сети получается в
результате применения поразрядной конъюнкции к
заданному адресу узла и маске сети.
• Сеть задана IP-адресом 10.48.96.0 и маской сети
255.255.240.0. Сколько в этой сети IP-адресов, для которых
количество единиц в двоичной записи IP-адреса больше,
чем количество нулей?
• В ответе укажите только число.

30. Задача 12

• from ipaddress import *
• k=0
• net1 = ip_network(f"10.48.96.0/255.255.240.0",0)
• for ip in net1:
if f"{ip:b}".count("1") > f"{ip:b}".count("0"):
k += 1
• print(k) #13
English     Русский Правила