Давайте разберем задачу по шагам.
Задача:
Нам даны два IP-адреса: 98.162.71.150 и 98.162.71.140. Они находятся в одной сети, то есть при применении маски к обоим IP-адресам результат (адрес сети) одинаков.
Нужно определить, какое максимальное число единиц может быть в маске сети.
Шаг 1. Запишем IP-адреса в двоичной форме
Для каждого IP-адреса разбиваем его на 4 байта (по 8 бит), затем каждый байт переводим в двоичный формат.
IP-1: 98.162.71.150
- 98: 01100010
- 162: 10100010
- 71: 01000111
- 150: 10010110
IP-2: 98.162.71.140
- 98: 01100010
- 162: 10100010
- 71: 01000111
- 140: 10001100
Шаг 2. Сравним двоичные представления и определим, где они совпадают
Обратим внимание на байты по порядку.
Первые три байта одинаковы у обоих IP-адресов:
- 98: 01100010
- 162: 10100010
- 71: 01000111
Четвертые байты отличаются:
- 150: 10010110
- 140: 10001100
Вывод:
Наиболее значащие байты совпадают полностью, а различие есть только в последнем байте.
Шаг 3. Определим, какая часть маски должна покрывать совпадающие биты
Так как IP-адреса находятся в одной сети, при применении маски маска должна сбивать отличающиеся биты, то есть эти двоичные байты должны быть "объединены" маской.
Маска — это число, где слева — единицы, а справа — нули, и нули могут находиться только после единиц.
Для двух адресов, чтобы они находились в одной сети, их двоичные представления должны "подтягиваться" под маску.
Шаг 4. Обратимся к последнему байту
Рассмотрим последний байт:
- 150: 10010110
- 140: 10001100
Общая часть (совпадающие биты):
Сравним побитно оба байта:
| Бит |
150 |
140 |
Результат совпадения? |
| 1 |
1 |
1 |
совпадает (1) |
| 2 |
0 |
0 |
совпадает (0) |
| 3 |
0 |
0 |
совпадает (0) |
| 4 |
1 |
0 |
различаются |
| 5 |
0 |
1 |
различаются |
| 6 |
1 |
1 |
совпадает |
| 7 |
1 |
0 |
различаются |
| 8 |
0 |
0 |
совпадает |
Общие биты:
- Биты 1, 2, 3, 6, 8 совпадают
- Остальные — различаются
или, по позициям:
- 1 (старший бит): 1 и 1 — совпадает
- 2: 0 и 0 — совпадает
- 3: 0 и 0 — совпадает
- 4: 1 и 0 — различается
- 5: 0 и 1 — различается
- 6: 1 и 1 — совпадает
- 7: 1 и 0 — различается
- 8: 0 и 0 — совпадает
Количество совпадающих битов в этом байте: 5 (битами 1,2,3,6,8).
Максимальный блок совпадения — это последовательные единицы "слева" (без разрывов).
Но в данном случае совпадающие биты не расположены подряд, а разбросаны.
Шаг 5. Возможное объединение — это подряд идущие совпадающие биты, начиная с старшего (левого) бита.
Чтобы маска могла покрывать оба IP-адреса, она должна покрывать ту часть, где биты совпадают у обоих адресов, начиная с самого старшего бита.
Поскольку биты 1, 2, 3, 6, 8 совпадают, а между ними есть разрывы,
максимальная длина подряд идущей последовательности совпадающих битов в этом байте — это 3 байта или их части.
- Первый байт: полностью совпадает — 8 бит.
- Второй и третий байты: тоже полностью совпадают — по 8 бит.
- В последнем байте: совпадают только 3 бита подряд (например, биты 1-3 или 6-8 — смотрите подробнее).
Но, для определения максимального количества единиц в маске, важна самая длинная последовательность подряд идущих совпадающих битов с начала.
Шаг 6. Подготовим ответ — чем больше, тем лучше?
- В первых трех байтах (98, 162, 71) все биты совпадают, поэтому в этих байтах можно поставить по 8 единиц.
- В четвертом байте, из-за различия в битах, максимально возможное совпадение начинается с самого старшего бита и идет до бита 3 или 6, в зависимости от расположения.
Наибольшая возможная длина подряд идущих единиц с начала маски — это сумма всех совпадающих битов с их места.
Но на практике, чтобы IP-адреса находились в одной сети, маска должна покрывать протяженность, которую обеспечивает самый длинный их блок совпадающих бит.
Итоговый ответ:
- Общий способ максимизации количества единиц в маске — это покрыть как можно больше совпадающих битов, начиная с самого старшего.
- В первом байте совпадают все 8 бит.
- Во втором и третьем байтах — также все 8 бит.
- В последнем байте — максимум 3 совпадающих бита подряд (например, биты 1-3 или 6-8, согласно сравнениям).
Это дает:
[ 8 + 8 + 8 + 3 = 27 ]
Ответ:
Наибольшее количество единиц в маске этой сети равно 27.