Similar presentations:
Занятие 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
31. Задача 13
• В терминологии сетей TCP/IP маской сети называют двоичное число,
которое показывает, какая часть IP
-адреса узла сети относится к
адресу сети, а какая — к адресу узла в этой сети. Адрес сети
получается в результате применения поразрядной конъюнкции к
заданному адресу узла и его маске.
• Широковещательным адресом называется специализированный
адрес, в котором на месте нулей в маске стоят единицы. Адрес сети и
широковещательный адрес не могут быть использованы для
адресации сетевых устройств.
• Сеть задана IP
-адресом одного из входящих в неё узлов 191.128.66.83
и сетевой маской 255.192.0.0.Найдите в данной сети наибольший IP
адрес, который может быть назначен компьютеру. В ответе укажите
найденный IP-адрес без разделителей.
• Например, если бы найденный адрес был равен 111.22.3.44, то в
ответе следовало бы записать: 11122344.
32. Задача 13
• from ipaddress import *• net = ip_network('191.128.66.83/255.192.0.0', 0)
• print(str(net[-2]).replace('.',‘’))
• # 191191255254
33. Задача 14
• В терминологии сетей TCP/IP маской сети называютдвоичное число, которое показывает, какая часть IP
адреса узла сети относится к адресу сети, а какая — к
адресу узла в этой сети. Адрес сети получается в
результате применения поразрядной конъюнкции к
заданному адресу узла и маске сети.
• Сеть задана IP
-
адресом 172.16.168.0 и маской сети
255.255.248.0.
• Сколько в этой сети IP
-
адресов, для которых количество
единиц в двоичной записи IP
-
адреса не кратно 5?
• В ответе укажите только число
34. Задача 14
• from ipaddress import *• net = ip_network(f'172.16.168.0/255.255.248.0', 0)
• cnt = 0
• for ip in net:
s = f'{ip:b}'
if s.count('1') % 5 != 0:
cnt += 1
• print(cnt)
• # 1663
35. Задача 15
• В терминологии сетей TCP/
IP маской сети называют двоичное число,
которое показывает, какая часть IP
-адреса узла сети относится к
адресу сети, а какая — к адресу узла в этой сети.
• Адрес сети получается в результате применения поразрядной
конъюнкции к заданному адресу узла и его маске.
• Широковещательным адресом называется специализированный
адрес, в котором на месте нулей в маске стоят единицы.
• Адрес сети и широковещательный адрес не могут быть использованы
для адресации сетевых устройств.
• Сеть задана IP-адресом одного из входящих в неё узлов 98.81.154.195
и сетевой маской 255.252.0.0.Найдите наибольший в данной сети IPадрес, который может быть назначен компьютеру. В ответе укажите
найденный IP-адрес без разделителей.
• Например, если бы найденный адрес был равен 111.22.3.44, то в
ответе следовало бы записать 11122344.
36. Задача 15
• from ipaddress import *• net = ip_network('98.81.154.195/255.252.0.0', 0)
• print(str(net[-2]).replace('.',''))
• # 9883255254
37. Задача 16
• Сеть задана IP-адресом 142.108.56.118 и маскойсети 255.255.255.240. Сколько в этой сети IPадресов, для которых в двоичной записи IPадреса суммарное количество единиц в левых
двух байтах меньше суммарного количества
единиц в правых двух байтах?
• В ответе укажите только число.
38. Задача 16
• from ipaddress import *• k=0
• net = ip_network('142.108.56.118/255.255.255.240',0)
• for ip in net:
m = [bin(int(x)).count('1') for x in str(ip).split('.’)]
if m[0]+m[1]<m[2]+m[3]:
k += 1
• print(k)
• #5
39. Задача 17
• Сеть задана IP-адресом 116.29.170.89 и маскойсети 255.255.255.224. Сколько в этой сети IPадресов, для которых в двоичной записи IPадреса суммарное количество единиц в левых
двух байтах не менее суммарного количества
единиц в правых двух байтах?
• В ответе укажите только число.
40. Задача 17
• from ipaddress import *• k=0
• net = ip_network('116.29.170.89/255.255.255.224',0)
• for ip in net:
m = [bin(int(x)).count('1') for x in str(ip).split('.')]
if m[0]+m[1]>=m[2]+m[3]:
k += 1
• print(k)
• # 26
41. Задача 18
• Сеть задана IP-адресом 23.140.159.160 и маскойсети 255.255.252.0. Сколько в этой сети IPадресов, для которых в двоичной записи IPадреса суммарное количество единиц в левых
двух байтах не менее суммарного количества
единиц в правых двух байтах?
• В ответе укажите только число.
42. Задача 18
• from ipaddress import *• k=0
• net = ip_network('23.140.159.160/255.255.252.0',0)
• for ip in net:
m = [bin(int(x)).count('1') for x in str(ip).split('.')]
if m[0]+m[1]>=m[2]+m[3]:
k += 1
• print(k)
• # 176
43. Задача 19
• Сеть задана IP-адресом 253.112.169.12 имаской сети 255.255.254.0. Сколько в этой
сети IP-адресов, для которых в двоичной
записи IP-адреса суммарное количество
единиц в правых двух байтах не менее
суммарного количества единиц в левых двух
байтах? В ответе укажите только число.
44. Задача 19
• from ipaddress import *• k=0
• net = ip_network('253.112.169.12/255.255.254.0',0)
• for ip in net:
m = [bin(int(x)).count('1') for x in str(ip).split('.')]
if m[2]+m[3]>=m[0]+m[1]:
k += 1
• print(k) # 46
45. Задача 20
• Cеть задана IP-адресом 252.67.33.87 и маскойсети 255.252.0.0. Сколько в этой сети IP-адресов,
для которых в двоичной записи IP-адреса
суммарное количество единиц в правых двух
байтах более чем вдвое превосходит суммарное
количество единиц в левых двух байтах?
• В ответе укажите только число.
46. Задача 20
• from ipaddress import *• k=0
• net = ip_network('252.67.33.87/255.252.0.0',0)
• for ip in net:
m = [bin(int(x)).count('1') for x in str(ip).split('.')]
if m[2]+m[3]>2*(m[0]+m[1]):
k += 1
• print(k) #17
47. Задача 21
• Cеть задана IP-адресом 249.0.33.87 и маской сети255.252.0.0. Сколько в этой сети IPадресов, для
которых в двоичной записи IP-адреса суммарное
количество единиц в правых двух байтах более
чем вдвое превосходит суммарное количество
единиц в левых двух байтах?
• В ответе укажите только число
48. Задача 21
• from ipaddress import *• k=0
• net = ip_network('249.0.33.87/255.252.0.0',0)
• for ip in net:
m = [bin(int(x)).count('1') for x in str(ip).split('.')]
if m[2]+m[3]>2*(m[0]+m[1]):
k += 1
• print(k) # 731
49. Задача 22
• Сеть задана IP-адресом 255.211.33.160 и маскойсети 255.255.A.0, где A – некоторое допустимое
для записи маски число. Определите
минимальное значение A, для которого для всех
IP-адресов этой сети в двоичной записи IP-адреса
суммарное количество единиц в левых двух
байтах не менее суммарного количества единиц в
правых двух байтах.
• В ответе укажите только число.
50. Задача 22
from ipaddress import *
for i in range(9):
A = int('1'*i + '0'*(8-i),2)
norm = 1
net = ip_network('255.211.33.160/255.255.'+str(A)+'.0',0)
for ip in net:
m = [bin(int(x)).count('1') for x in str(ip).split('.')]
if m[0]+m[1]<m[2]+m[3]:
norm = 0
break
if norm:
print(A) # 240
break
51. Задача 23
• Сеть задана IP-адресом 191.239.130.3 и маскойсети 255.255.A.0, где A – некоторое допустимое
для записи маски число. Определите
минимальное значение A, для которого для всех
IP-адресов этой сети в двоичной записи IP-адреса
суммарное количество единиц в левых двух
байтах не менее суммарного количества единиц в
правых двух байтах.
• В ответе укажите только число.
52. Задача 23
from ipaddress import *
for i in range(9):
A = int('1'*i + '0'*(8-i),2)
norm = 1
net = ip_network('191.239.130.3/255.255.'+str(A)+'.0',0)
for ip in net:
m = [bin(int(x)).count('1') for x in str(ip).split('.')]
if m[0]+m[1]<m[2]+m[3]:
norm = 0
break
if norm:
print(A) # 224
break
53. Задача 24
• Сеть задана IP-адресом 252.63.194.3 и маскойсети 255.255.A.0, где A – некоторое допустимое
для записи маски число. Определите
минимальное значение A, для которого для всех
IP-адресов этой сети в двоичной записи IP-адреса
суммарное количество единиц в левых двух
байтах не менее суммарного количества единиц в
правых двух байтах.
• В ответе укажите только число.
54. Задача 24
from ipaddress import *
for i in range(9):
A = int('1'*i + '0'*(8-i),2)
fl = 1
net = ip_network('252.63.194.3/255.255.'+str(A)+'.0',0)
for ip in net:
m = [bin(int(x)).count('1') for x in str(ip).split('.')]
if m[0]+m[1]<m[2]+m[3]:
fl = 0
break
if fl:
print(A) # 252
break
55. Задача 25
• Сеть задана IP-адресом 199.59.129.3 и маскойсети 255.255.A.0, где A – некоторое допустимое
для записи маски число. Определите
минимальное значение A, для которого для всех
IP-адресов этой сети в двоичной записи IP-адреса
суммарное количество единиц в левых двух
байтах не менее суммарного количества единиц в
правых двух байтах.
• В ответе укажите только число.
56. Задача 25
from ipaddress import *
for i in range(9):
A = int('1'*i + '0'*(8-i),2)
fl = 1
net = ip_network('199.59.129.3/255.255.'+str(A)+'.0',0)
for ip in net:
m = [bin(int(x)).count('1') for x in str(ip).split('.')]
if m[0]+m[1]<m[2]+m[3]:
fl = 0
break
if fl:
print(A) # 254
break
57. Задача 26
• Сеть задана IP-адресом 32.0.A.5, где A –некоторое допустимое для записи IP-адреса
число, и маской сети 255.255.240.0. Определите
минимальное значение A, для которого для всех
IP-адресов этой сети в двоичной записи IP-адреса
суммарное количество единиц в левых двух
байтах не более суммарного количества единиц в
правых двух байтах.
• В ответе укажите только число.
58. Задача 26
from ipaddress import *
for A in range(256):
fl = 1
net = ip_network('32.0.'+ str(A)+ '.5/255.255.240.0',0)
for ip in net:
m = [bin(int(x)).count('1') for x in str(ip).split('.')]
if m[0]+m[1]>m[2]+m[3]:
fl = 0
break
if fl:
print(A) #16
break
59. Задача 27
• Сеть задана IP-адресом 64.129.A.10, где A –некоторое допустимое для записи IP-адреса
число, и маской сети 255.255.252.0. Определите
минимальное значение A, для которого для всех
IP-адресов этой сети в двоичной записи IP-адреса
суммарное количество единиц в левых двух
байтах не более суммарного количества единиц в
правых двух байтах.
• В ответе укажите только число.
60. Задача 27
from ipaddress import *
for A in range(256):
fl = 1
net = ip_network('64.129.'+ str(A)+ '.10/255.255.252.0',0)
for ip in net:
m = [bin(int(x)).count('1') for x in str(ip).split('.')]
if m[0]+m[1]>m[2]+m[3]:
fl = 0
break
if fl:
print(A) # 28
break
61. Задача 28
• Сеть задана IP-адресом 127.254.A.10, где A –некоторое допустимое для записи IP-адреса
число, и маской сети 255.255.224.0. Определите
максимальное значение A, для которого для всех
IP-адресов этой сети в двоичной записи IP-адреса
суммарное количество единиц в левых двух
байтах не менее суммарного количества единиц в
правых двух байтах.
• В ответе укажите только число.
62. Задача 28
from ipaddress import *
for A in range(256):
fl = 1
net = ip_network('127.254.'+ str(A)+ '.10/255.255.224.0',0)
for ip in net:
m = [bin(int(x)).count('1') for x in str(ip).split('.')]
if m[0]+m[1]<m[2]+m[3]:
fl = 0
break
if fl:
print(A) # 159
63. Задача 29
• Сеть задана IP-адресом 126.255.A.100, где A –некоторое допустимое для записи IP-адреса
число, и маской сети 255.255.240.0. Определите
максимальное значение A, для которого для всех
IP-адресов этой сети в двоичной записи IP-адреса
суммарное количество единиц в левых двух
байтах не менее суммарного количества единиц в
правых двух байтах.
• В ответе укажите только число.
64. Задача 29
from ipaddress import *
for A in range(256):
fl = 1
net = ip_network('126.255.'+ str(A)+ '.100/255.255.240.0',0)
for ip in net:
m = [bin(int(x)).count('1') for x in str(ip).split('.')]
if m[0]+m[1]<m[2]+m[3]:
fl = 0
break
if fl:
print(A) # 207
65. Задача 30
• Для узла с IP-адресом 44.44.229.28 адрес сетиравен 44.44.224.0. Каково наибольшее
возможное количество единиц в разрядах маски?
66. Задача 31
• Для узла с IP-адресом 244.55.229.28 адрес сетиравен 244.0.0.0. Каково наибольшее возможное
количество нулей в разрядах маски?
67. Задача 32
• Для узла с IP-адресом 244.55.138.100 адрес сетиравен 244.55.138.96. Чему равно наименьшее
возможное значение последнего (самого
правого) байта маски? Ответ запишите в виде
десятичного числа.
68. Задача 33
• Для узла с IP-адресом 244.55.138.100 адрес сетиравен 240.0.0.0. Чему равно максимально
возможное значение первого (самого левого)
байта маски? Ответ запишите в виде десятичного
числа.
69. Задача 34
• Для узла с IP-адресом 42.118.219.133 адрес сетиравен 42.118.216.0. Каково наибольшее
возможное количество единиц в разрядах маски?
70. Задача 35
• Для узла с IP-адресом 99.188.115.211 адрес сетиравен 99.188.115.192. Каково наибольшее
возможное количество единиц в разрядах маски?
71. Ответы 30-35
• 30) 21• 31) 26
• 32) 224
• 33) 248
• 34) 22
• 35) 27
72. Задача 36
• Сеть задана IP-адресом 192.168.32.160 и маскойсети 255.255.255.240. Сколько в этой сети IPадресов, для которых сумма единиц в двоичной
записи IP-адреса чётна?
• В ответе укажите только число
73. Задача 36
• from ipaddress import *• k=0
• net1 = ip_network(f"192.168.32.160/255.255.255.240",0)
• for ip in net1:
if f"{ip:b}".count("1")%2==0:
k += 1
• print(k) #8
internet