Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[52.14.224.197] |
|
Сообщ.
#1
,
|
|
|
Всем хай! Сходу к делу.
Условие звучит так. Задан 4рех байтовый IP-адрес (4 октета в виде десятичных чисел из отрезка [0 .. 255]). Необходимо преобразовать этот адрес в адрес частной сети класса "А". ------------------------------------------------------------------------------------------ Информации об адресации в гугле, конечно, валом...тысячи и тысячи страниц. Относительно частной сети класса "А" нашел лишь только такую информацию: 1ый октет (самый левый) всегда = 10. Маска подсети: 255.0.0.0 Диапазон адресов: 10.0.0.0 - 10.255.255.255 Пример такого адреса: 10.192.168.40 Но ничего не смог найти по алгоритму преобразования из произвольного айпишника в адрес частной сети класса "А". Может плохо искал, а на самом деле слишком плохо знаю эту область и, возможно, что-то и было по этому переводу, но не смог "разглядеть" смысл) --------------------------------- Вот, например, задали такой IP-адрес: 233.4.29.191 Адрес частной сети класса "А" будет иметь начало 10. а дальше, что ) Что требуется сделать, чтобы получить адрес частной сети класса "А"? Подскажите как быть-то P.S. там вроде какие-то побитовые конъюнкции надо использовать, но, насколько помню, это требуется для определения номера узла в сети или количества узлов в сети и все в таком духе |
Сообщ.
#2
,
|
|
|
Еще покопал тему. Начинаю приходить к выводу, что НЕ существует готового алгоритма такого преобразования. То есть придется с 0 что-то придумывать
В большинстве задач, как я понял, дают IP-адрес + маску сети. И тогда возможны какие-то варианты: и конъюнкции побитовые брать, и считать кол-во ведомых нулей в маске и пр. Но в моем условии дают ТОЛЬКО 4рех байтовый IP-шник и все. То есть мат. модель такая что ли получается: IP-адрес (IPv4) --> 10.XXX.XXX.XXX? То есть, дали айпишник, в нем 4ре числа из отрезка [0 ... 255] и их надо каким-то образом конвертировать в 3ри октета (1ый октет у адресов класса "А" всегда = 10)?? Т е, если отбросить все эти сети, шлюзы, маршрутизации, каналы, маски, подсети и пр. и пр. пр., то задачу можно свести к такой: преобразовать 4ре числа из отрезка от 0 до 255 в 3ри числа из отрезка 0 до 255? )) Но ведь это не всегда возможно - это раз. Во-вторых, наверняка, есть какие-то внутренние ограничение адреса в частной сети "А" помимо того, что самый левый октет = 10 всегда резюме: не понимаю пока даже на 5%, к чему стремиться |
Сообщ.
#3
,
|
|
|
Чёта дурь, а не задание. Отрыжка мохнатого ретрограда, до сих пор не знающего, что классы сетей - забытый и прочно игнорируемый анахронизм.
Но если вернуться на дофига лет назад... Цитата FasterHarder @ Задан 4рех байтовый IP-адрес (4 октета в виде десятичных чисел из отрезка [0 .. 255]). Необходимо преобразовать этот адрес в адрес частной сети класса "А". У сети класса А маска /8, оно же 255.0.0.0. Накладываем - получаем адрес сети. ВСЁ. Цитата FasterHarder @ Вот, например, задали такой IP-адрес: 233.4.29.191 Соответственно сеть класса А, в которой находится этот адрес: 233.4.29.191 AND 255.0.0.0 = 233.0.0.0. Цитата FasterHarder @ Относительно частной сети класса "А" нашел лишь только такую информацию Ну вообще-то если подходить строго, то нет такого понятия как "частная сеть" на уровне стандарта. Это всё завихрения от переводчиков. Есть маршрутизируемые и немаршрутизируемые адреса. Всё остальное - или следствие, или выдумки переводчиков. И в данном задании термин "частная" явно не связан с "приватными"/"серыми" адресами. Это обязательное условие того, чтобы задание имело хоть какой-то смысл. |
Сообщ.
#4
,
|
|
|
Цитата Akina @ Соответственно сеть класса А, в которой находится этот адрес: 233.4.29.191 AND 255.0.0.0 = 233.0.0.0. хорошо, это я понял + знаю, как запрограммировать но в условии есть фраза, мол "Адреса "частных сетей" класса А всегда начинаются с 10, например, 10.240.55.17" а в этом примере самый левый октет = 233, а 233 не равно 10) или игнорировать придется это "требование"? |
Сообщ.
#5
,
|
|
|
Цитата FasterHarder @ в условии есть фраза, мол "Адреса "частных сетей" класса А всегда начинаются с 10, например, 10.240.55.17" В упор не вижу этой фразы в условии. |
Сообщ.
#6
,
|
|
|
Сообщ.
#7
,
|
|
|
О! так с этого и надо было начинать!
От тебя фактически просят родить NAT... |
Сообщ.
#8
,
|
|
|
Цитата Akina @ От тебя фактически просят родить NAT... ого - впервОЙ слышу об этом даже) кстати, еще на др.форумах тоже упоминали вскользь про этот НАТ + ссылались на то, что постановка некорректна + давали какие-то алгоритмы типа моих из 1ого поста мне кажется, что полноценный НАТ мне НИКОГДА не реализовать в принципе (хотя я не знаю, что это такое), но чувствуется, что-то сложное). Ведь нужно только для класса "А". Вот если все донельзя упростить, вот прям до нижнего предела, то может тут есть какой-то простой алгоритм? Типа взять 2 октет входного айпишника, наложить маску, затем взять побитовую дизъюнкцию с 3им октетом и все в таком духе?) зы: открыл про НАТ статью: мда уж, совсем чужая тематика для меня, вот прям на 100%.... Добавлено Скрытый текст я ведь вообще залез в эту задачу, чтобы поработать с побитовыми операциями более плотно)) Сети, как таковые, мне, конечно, неинтересны, точнее, понимаю, что нет даже смысла их изучать, т к потребуются годы на все это изучение... |
Сообщ.
#9
,
|
|
|
Цитата FasterHarder @ потребуются годы на все это изучение На изучение того, что необходимо для осмысленного решения поставленной задачи, нужно от силы 2-3 часа. Плюс сколько-то, чтобы оно улеглось в голове в систему - вот это да, непредсказуемо. |
Сообщ.
#10
,
|
|
|
еще поизучав тему пришел к такому выводу, что нужно получить алгоритм, который "упаковывает" 4ре октета в 3ри и позволяет однозначным преобразованием восстановить заданный
т е, задан IP = 109.3.250.4, получаем, например, IP = 10.253.0.177 и обратно из него можно получить заданный. Если отбросить предметку по IP, то из 4рех чисел 0-255 получить 3ри числа 0-255 и иметь возможность восстановить из этих 3х исходные 4ри. Преобразование на побитовых операциях. Какой алгоритм здесь можно применить? Подскажите как быть-то, буду оч.признателен |
Сообщ.
#11
,
|
|
|
Цитата FasterHarder @ Какой алгоритм здесь можно применить? Само собой никакой. Ибо чисто арифметически каждому "упакованному" значению будет соответствовать в среднем аж 256 различных исходных значений - ну и в какое из них распаковывать? |
Сообщ.
#12
,
|
|
|
Akina, понял, спс, в принципе были мысли, что такое получить невозможно
а НАТ ведь умеет преобразовывать глоб.IP в приватные и наоборот |
Сообщ.
#13
,
|
|
|
Цитата FasterHarder @ НАТ ведь умеет преобразовывать глоб.IP в приватные и наоборот NAT-у проще. Он записывает сессии. А там как минимум пара адрес источника и адрес назначения. И плюс специфические для протокола данные, например, номера портов. |