В терминологии сетей TCP/IP маской сети называют д...
創建於:2025年10月27日
使用 GPT-5 Thinking 回答 Chat01
創建於:2025年10月27日
使用 GPT-5 Thinking 回答 Chat01
В терминологии сетей TCP/IP маской сети называют двоичное число, которое показывает, какая часть IP-адреса узла сети относится к адресу сети, а какая — к адресу узла в этой сети. Адрес сети получается в результате применения поразрядной конъюнкции к заданному адресу узла и маске сети.
Для узла с IP адресом 158.116.11.146 адрес сети равен 158.116.0.0. Для скольких различных значений маски это возможно? Почему возможны маски 255.255.252.0 и 255.255.254.0
В терминологии сетей TCP/IP маской сети называют двоичное число, которое показывает, какая часть IP-адреса узла сети относится к адресу сети, а какая — к адресу узла в этой сети. Адрес сети получается в результате применения поразрядной конъюнкции к заданному адресу узла и маске сети.
Для узла с IP адресом 158.116.11.146 адрес сети равен 158.116.0.0. Для скольких различных значений маски это возможно? Почему возможны маски 255.255.252.0 и 255.255.254.0
pythonip = [158,116,11,146] b = ["{:08b}".format(x) for x in ip] b, ".".join(b) (['10011110', '01110100', '00001011', '10010010'], '10011110.01110100.00001011.10010010')
pythonimport ipaddress ip = ipaddress.IPv4Address('158.116.11.146') desired = ipaddress.IPv4Address('158.116.0.0') valid = [] for prefix in range(0,33): net = ipaddress.IPv4Network((int(ip), prefix), strict=False) # ipaddress.IPv4Network with (addr,prefix) treats addr as network address maybe; But with strict=False, it will adjust network to that. # Let's compute network_addr = ip & mask. mask = (0xffffffff << (32-prefix)) & 0xffffffff if prefix>0 else 0 network_addr = int(ip) & mask if network_addr == int(desired): valid.append(prefix) valid, len(valid) ([14, 15, 16, 17, 18, 19, 20], 7)
pythondef mask_from_prefix(prefix): mask = (0xffffffff << (32-prefix)) & 0xffffffff if prefix>0 else 0 return ".".join(str((mask >> (24-8*i)) & 0xff) for i in range(4)) [(p, mask_from_prefix(p)) for p in [14,15,16,17,18,19,20]] [(14, '255.252.0.0'), (15, '255.254.0.0'), (16, '255.255.0.0'), (17, '255.255.128.0'), (18, '255.255.192.0'), (19, '255.255.224.0'), (20, '255.255.240.0')]
Коротко: таких масок 7. Это префиксы /14…/20, т.е. маски
255.252.0.0, 255.254.0.0, 255.255.0.0, 255.255.128.0, 255.255.192.0, 255.255.224.0, 255.255.240.0.
Почему так
Про «255.255.252.0» и «255.255.254.0»