Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 2 3 4 5 6 7 8 9 [10] 11   вперед  Ctrl      все
 Re: ZeroMQ - сокеты на стероидах, часть 3 (а для чего?).  [new]
s62
Member

Откуда: Жуковский
Сообщений: 845
s62,

то есть "поверх" сокетов видимо.
29 май 18, 16:56    [21451134]     Ответить | Цитировать Сообщить модератору
 Re: ZeroMQ - сокеты на стероидах, часть 3 (а для чего?).  [new]
alekcvp
Member

Откуда:
Сообщений: 1135
s62,

Ну так размер лимитирует приложение, а не TCP. А в ZeroMQ между приложением и TCP - библиотека, отсюда и вопрос - как в ней это сделать, раз я поступлении данных я узнаю только когда сообщение прочитано целиком (т.е. оперативка закончится раньше).
29 май 18, 17:01    [21451157]     Ответить | Цитировать Сообщить модератору
 Re: ZeroMQ - сокеты на стероидах, часть 3 (а для чего?).  [new]
чччД__
Guest
__
alekcvp
Почитал тут про ZMQ и возник один вопрос по безопасности: вот в обычном TCP, как было сказано в начале статьи, в случае если нам передали неверный заголовок сообщения мы можем либо сбросить подключение вообще, либо прочитать испорченные данные в /dev/null и приступить к обработке следующего сообщения.
А вот вопрос: какова будет реакция ZMQ, если злоумышленник, зная его протокол, попытается передать валидный пакет, объемом 100500 гигабайт (объёмом, гарантированно большим чем оперативная память + своп на сервере)?
Можно ли как-нибудь лимитировать допустимый размер сообщений?


1. Тебя не смущает неоднократное упоминание того, что ZMQ - для "внутреннего" использования? В рамках локальных сетей, или отдельного компа (для межпроцессного взаимодействия) или даже для внутрипроцессного межнитевого взаимодействия. Откуда возьмутся злоумышленники?
1.1. Про новые возможности ("работа в открытых сетях") я знаю совсем немного, но они появились, например, средства аутентификации.
2. "Сбросить" соединение нельзя, можно пересоздать сокет, что и рекомендуется для разных случаев, например, когда слишком много входящих соединений "зависло" (т.е., клиент подключился, поработал и у шел), сие один из паттернов использования zmq.
3. Да, можно установить опции сокета, ограничив размер сообщения и/или буфера под сообщения: http://api.zeromq.org/4-0:zmq-setsockopt.
29 май 18, 17:09    [21451194]     Ответить | Цитировать Сообщить модератору
 Re: ZeroMQ - сокеты на стероидах, часть 3 (а для чего?).  [new]
чччД__
Guest
s62
alekcvp,

так ZeroMQ это же обычная библиотека поверх TCP. Наверняка можно и размер лимитировать, и заголовок проверять и т.д.

Не, нельзя.
И tcp - лишь один из протоколов, которые может использовать zmq.

Ну да, есть там средства мониторинга ("это кто там подключился?" и т.п.), но zmq как раз для того, чтобы работать атомарными сообщениями: отправляешь сообщение (кадр или несколько кадров данных), и всё, на стороне приема они либо получены либо нет.
Кадр - всего лишь блок ТВОИХ данных, без каких-либо заголовков, длиной от 0 до 2^61-1 байт, дальше фантазируешь сам.

В общем, если тебе нужны сокеты Windows - не нужно искать их в zmq, это другой уровень.
29 май 18, 17:21    [21451238]     Ответить | Цитировать Сообщить модератору
 Re: ZeroMQ - сокеты на стероидах, часть 3 (а для чего?).  [new]
alekcvp
Member

Откуда:
Сообщений: 1135
чччД__
1. Тебя не смущает неоднократное упоминание того, что ZMQ - для "внутреннего" использования? В рамках локальных сетей, или отдельного компа (для межпроцессного взаимодействия) или даже для внутрипроцессного межнитевого взаимодействия. Откуда возьмутся злоумышленники?

У меня и есть внутренняя сеть. Внутренняя сеть учебного заведения. Сказать откуда тут с высокой вероятностью могут взяться злоумышленники с шилом в заднице?.. К тому же чем принципиально отличается работа в закрытой сети и в открытой, с точки зрения транспортного уровня, я не очень представляю.

чччД__
2. "Сбросить" соединение нельзя, можно пересоздать сокет, что и рекомендуется для разных случаев, например, когда слишком много входящих соединений "зависло" (т.е., клиент подключился, поработал и у шел), сие один из паттернов использования zmq.
Т.е. она не умеет даже определять "отвалившиеся" сокеты? Или имеется в виду что "ушел" он оставив запущенное приложение?
чччД__
3. Да, можно установить опции сокета, ограничив размер сообщения и/или буфера под сообщения: http://api.zeromq.org/4-0:zmq-setsockopt.
Ага, спасибо, про ZMQ_MAXMSGSIZE и был вопрос.
29 май 18, 17:37    [21451301]     Ответить | Цитировать Сообщить модератору
 Re: ZeroMQ - сокеты на стероидах, часть 3 (а для чего?).  [new]
alekcvp
Member

Откуда:
Сообщений: 1135
чччД__
Ну да, есть там средства мониторинга ("это кто там подключился?" и т.п.), но zmq как раз для того, чтобы работать атомарными сообщениями: отправляешь сообщение (кадр или несколько кадров данных), и всё, на стороне приема они либо получены либо нет.
Кадр - всего лишь блок ТВОИХ данных, без каких-либо заголовков, длиной от 0 до 2^61-1 байт, дальше фантазируешь сам.

В общем, если тебе нужны сокеты Windows - не нужно искать их в zmq, это другой уровень.

Мне нужно организовать взаимодействие между парой сотен клиентов и сервером на разных машинах в локальной сети (потом, возможно и в интернете), при этом сеть доступна посторонним лицам и ограничить доступ к серверу (по сети) я не могу. Взаимодействие как раз в виде передачи сообщений размером от сотен байт до единиц мегабайт.
29 май 18, 17:41    [21451314]     Ответить | Цитировать Сообщить модератору
 Re: ZeroMQ - сокеты на стероидах, часть 3 (а для чего?).  [new]
Антон Аксёнов
Member

Откуда:
Сообщений: 33
Позвольте, встряну.
alekcvp
чччД__
1. Тебя не смущает неоднократное упоминание того, что ZMQ - для "внутреннего" использования? В рамках локальных сетей, или отдельного компа (для межпроцессного взаимодействия) или даже для внутрипроцессного межнитевого взаимодействия. Откуда возьмутся злоумышленники?

У меня и есть внутренняя сеть. Внутренняя сеть учебного заведения. Сказать откуда тут с высокой вероятностью могут взяться злоумышленники с шилом в заднице?.. К тому же чем принципиально отличается работа в закрытой сети и в открытой, с точки зрения транспортного уровня, я не очень представляю.






В этом и проблема. Надо представлять. Тут речь о многосерверной архитектуре (микросервисы и т.д.), это когда ты строишь архитектуру чего-то большого и крутого, когда у тебя не один сервер и куча клиентов а много серверов и между ними надо общаться.
Т.е., не для клиент-сервер это, а для сервер-сервер. Хотя xxxД вот дал ссылку что в этом направлении таки что-то делают (лично я могу понять почему - ZMQ очень крутая).
29 май 18, 17:50    [21451359]     Ответить | Цитировать Сообщить модератору
 Re: ZeroMQ - сокеты на стероидах, часть 3 (а для чего?).  [new]
чччД__
Guest
alekcvp
Т.е. она не умеет даже определять "отвалившиеся" сокеты? Или имеется в виду что "ушел" он оставив запущенное приложение?

Имеется в виду, что "она" даже не знает, приконнектился кто-то или нет.
Все, что есть - это работа с сообщениями.

Ждешь сообщение - получил - обработал. Всё. :)
29 май 18, 17:50    [21451360]     Ответить | Цитировать Сообщить модератору
 Re: ZeroMQ - сокеты на стероидах, часть 3 (а для чего?).  [new]
kealon(Ruslan)
Member

Откуда: Нижневартовск
Сообщений: 3448
alekcvp
чччД__
2. "Сбросить" соединение нельзя, можно пересоздать сокет, что и рекомендуется для разных случаев, например, когда слишком много входящих соединений "зависло" (т.е., клиент подключился, поработал и у шел), сие один из паттернов использования zmq.
Т.е. она не умеет даже определять "отвалившиеся" сокеты? Или имеется в виду что "ушел" он оставив запущенное приложение?

а что вас удивляет? какая разница ушёл он или нет, не посылает - значит Так не надо
не обвязке же решать что делать

когда-то когда связь была "очень быстрая" и "очень надёжная", сокеты постоянно отваливались - вот такая физика нашего мира
29 май 18, 19:17    [21451618]     Ответить | Цитировать Сообщить модератору
 Re: ZeroMQ - сокеты на стероидах, часть 3 (а для чего?).  [new]
alekcvp
Member

Откуда:
Сообщений: 1135
kealon(Ruslan),

Да, я понял, походу для моей системы, где кроме самого сообщения необходимо знать ещё и от кого оно пришло, эта штука не подходит.
29 май 18, 19:29    [21451625]     Ответить | Цитировать Сообщить модератору
 Re: ZeroMQ - сокеты на стероидах, часть 3 (а для чего?).  [new]
чччД__
Guest
alekcvp
kealon(Ruslan),

Да, я понял, походу для моей системы, где кроме самого сообщения необходимо знать ещё и от кого оно пришло, эта штука не подходит.

Ну так добавь в сообщение кадр с нужной инфой.
Ты думаешь, "чистые" tcp сокеты на приеме волшебным образом эту инфу получают? Нет, ее с передающей стороны присылают. :)
29 май 18, 19:35    [21451631]     Ответить | Цитировать Сообщить модератору
 Re: ZeroMQ - сокеты на стероидах, часть 3 (а для чего?).  [new]
alekcvp
Member

Откуда:
Сообщений: 1135
чччД__
Ну так добавь в сообщение кадр с нужной инфой.
Ты думаешь, "чистые" tcp сокеты на приеме волшебным образом эту инфу получают? Нет, ее с передающей стороны присылают. :)

В "чистом" TCP адресат привязывается к соединению, а тут мало того что придётся передавать информацию в каждом сообщении, так ещё и придумывать какой-то механизм защиты от её подмены.
29 май 18, 20:11    [21451695]     Ответить | Цитировать Сообщить модератору
 Re: ZeroMQ - сокеты на стероидах, часть 3 (а для чего?).  [new]
чччД__
Guest
alekcvp
чччД__
Ну так добавь в сообщение кадр с нужной инфой.
Ты думаешь, "чистые" tcp сокеты на приеме волшебным образом эту инфу получают? Нет, ее с передающей стороны присылают. :)

В "чистом" TCP адресат привязывается к соединению, а тут мало того что придётся передавать информацию в каждом сообщении, так ещё и придумывать какой-то механизм защиты от её подмены.


Я фигею, дорогая редакция - (с).

Дело твое, конечно, но решение всех твои "проблем" отлично описаны в открытых источниках по ZMQ - и механизмы защиты, и методы идентификации, и обеспечения устойчивой связи.

А если ты хочешь от zmq получить функционал нижнего уровня - то вообще непонятно, нафига тебе ZMQ.

И, если ты думаешь, что tcp пакет сложно подменить пятью строчками кода - то заодно передавай от меня привет Деду Морозу.
29 май 18, 20:41    [21451787]     Ответить | Цитировать Сообщить модератору
 Re: ZeroMQ - сокеты на стероидах, часть 3 (а для чего?).  [new]
alekcvp
Member

Откуда:
Сообщений: 1135
чччД__
А если ты хочешь от zmq получить функционал нижнего уровня - то вообще непонятно, нафига тебе ZMQ.
И, если ты думаешь, что tcp пакет сложно подменить пятью строчками кода - то заодно передавай от меня привет Деду Морозу.

Нет, функционал мне как раз нравится, но не хватает однозначной идентификации от кого пришло сообщение. Надо будет почитать.

Да, расскажи как пятью строчками подменить обратный адрес в tcp-пакете, а потом получить на него ответ на свой адрес? :)
29 май 18, 20:48    [21451797]     Ответить | Цитировать Сообщить модератору
 Re: ZeroMQ - сокеты на стероидах, часть 3 (а для чего?).  [new]
чччД__
Guest
alekcvp
чччД__
А если ты хочешь от zmq получить функционал нижнего уровня - то вообще непонятно, нафига тебе ZMQ.
И, если ты думаешь, что tcp пакет сложно подменить пятью строчками кода - то заодно передавай от меня привет Деду Морозу.

Нет, функционал мне как раз нравится, но не хватает однозначной идентификации от кого пришло сообщение. Надо будет почитать.

Да, расскажи как пятью строчками подменить обратный адрес в tcp-пакете, а потом получить на него ответ на свой адрес? :)



"Пятью строчками" не подменить, да, лишку сболтнул.

А что ты подразумеваешь под "однозначной идентификацией", конкретно?
29 май 18, 22:12    [21451921]     Ответить | Цитировать Сообщить модератору
 Re: ZeroMQ - сокеты на стероидах, часть 3 (а для чего?).  [new]
alekcvp
Member

Откуда:
Сообщений: 1135
чччД__
"Пятью строчками" не подменить, да, лишку сболтнул.
А что ты подразумеваешь под "однозначной идентификацией", конкретно?

Ну, грубо говоря, после accept() и прохождения идентификации клиента ты можешь полученный сокет использовать как идентификатор клиента, т.е. сервер всегда знает от какого клиента пришло сообщение и может у себя хранить некоторые "характеристики" этого клиента, ассоциированные с ним (через сокет). И "подменить пакет" довольно сложно, т.к. это придётся делать на уровне ip-пакетов и, не вдаваясь в подробности, это довольно геморно.
29 май 18, 22:19    [21451938]     Ответить | Цитировать Сообщить модератору
 Re: ZeroMQ - сокеты на стероидах, часть 3 (а для чего?).  [new]
чччД__
Guest
alekcvp
чччД__
"Пятью строчками" не подменить, да, лишку сболтнул.
А что ты подразумеваешь под "однозначной идентификацией", конкретно?

Ну, грубо говоря, после accept() и прохождения идентификации клиента ты можешь полученный сокет использовать как идентификатор клиента, т.е. сервер всегда знает от какого клиента пришло сообщение и может у себя хранить некоторые "характеристики" этого клиента, ассоциированные с ним (через сокет). И "подменить пакет" довольно сложно, т.к. это придётся делать на уровне ip-пакетов и, не вдаваясь в подробности, это довольно геморно.


Ну и тут сокеты идентифицируются, если нужно. Если используешь пару сокетов типа REQ-REP, то сервер ВСЕГДА отправляет ответ тому, кто послал запрос, со стороны программиста вообще никаких действий не нужно, просто возвращаешь ответ в тот же сокет, откуда пришел запрос. Тут (без твоего участия) сообщение автоматически дополняется кадром идентификации (по умолчанию - случайное число), этот кадр отсекается перед передачей в обрабатывающий код, а потом автоматически дополняется при отсылке ответа.

Для других типов сокетов ты этот кадр можешь отловить ручками и также использовать для обратной адресации, но уже не автоматически.

Для третьих типов (например, PUB-SUB) идентификация вообще не нужна, ибо логически бессмысленна.
29 май 18, 22:37    [21451967]     Ответить | Цитировать Сообщить модератору
 Re: ZeroMQ - сокеты на стероидах, часть 3 (а для чего?).  [new]
чччД__
Guest
alekcvp,

ну вот я клиент, создал сокет, задал ему в качестве идентификатора, например случайное 64-битное число.
Сервер, получив от меня сообщение, будет всегда отправлять ответ мне же, используя этот же идентификатор (часть сообщения).
Что тут можно подменить и с какой целью, конкретно?
29 май 18, 22:44    [21451970]     Ответить | Цитировать Сообщить модератору
 Re: ZeroMQ - сокеты на стероидах, часть 3 (а для чего?).  [new]
alekcvp
Member

Откуда:
Сообщений: 1135
чччД__,

Ну да, выглядит как то что надо. Короче, надо будет глубже почитать документацию.
29 май 18, 23:02    [21451996]     Ответить | Цитировать Сообщить модератору
 Re: ZeroMQ - сокеты на стероидах, часть 3 (а для чего?).  [new]
чччД__
Guest
alekcvp,

я так понимаю, что ты желаешь получить ip адрес "той стороны"?

ZeroMQ создавался, чтобы в т.ч. и спрятать от тебя процесс управление соединениями, чтобы ты сосредоточился именно на обмене сообщениями. Это самое управление соединениями включает в себя в том числе и автоматическое переподключение, что запросто может привести к изменению IP-адреса, а сокет zmq, подключенного с другой стороны, будет тот же самый. Т.е., даже если ты сможешь из нутра ZeroMQ вытянут IP-адрес удаленного корреспондента, совершенно нет гарантии, что этот адрес не изменится в процессе работы.

Я уж не говорю о том, что zmq вовсю используют для создания промежуточных узлов, когда сообщение просто разбирается, обрабатывается и создается заново, пройдя бог знает какой логический маршрут.
...

Или тебе не ip-шник нужен?
29 май 18, 23:02    [21451997]     Ответить | Цитировать Сообщить модератору
 Re: ZeroMQ - сокеты на стероидах, часть 3 (а для чего?).  [new]
alekcvp
Member

Откуда:
Сообщений: 1135
чччД__
Что тут можно подменить и с какой целью, конкретно?

Например, после это клиент может попытаться отправить серверу сообщение с другим ID, прикидываясь другим клиентом. Как он узнает этот "другой ID" мы пока оставим за скобками.
29 май 18, 23:04    [21452002]     Ответить | Цитировать Сообщить модератору
 Re: ZeroMQ - сокеты на стероидах, часть 3 (а для чего?).  [new]
alekcvp
Member

Откуда:
Сообщений: 1135
чччД__
alekcvp,
Или тебе не ip-шник нужен?

Мне нужна двусторонняя связь, правда "наоборот": есть сервер, к нему подключаются клиенты, он им рассылает сообщения, они на них отвечают. Всё. Ключевой момент: нельзя допустить чтобы какой-то клиент имел возможность отвечая на сообщение прикинуться другим клиентом.
29 май 18, 23:06    [21452008]     Ответить | Цитировать Сообщить модератору
 Re: ZeroMQ - сокеты на стероидах, часть 3 (а для чего?).  [new]
чччД__
Guest
alekcvp
чччД__
Что тут можно подменить и с какой целью, конкретно?

Например, после это клиент может попытаться отправить серверу сообщение с другим ID, прикидываясь другим клиентом. Как он узнает этот "другой ID" мы пока оставим за скобками.


Не-не-не. Нужно определиться, что за вид атаку мы отражаем, а потом уже бороться со злоумышленниками.
...
Касаемо твоего случая - сервер будет "думать", что у него два клиента...и?
29 май 18, 23:09    [21452011]     Ответить | Цитировать Сообщить модератору
 Re: ZeroMQ - сокеты на стероидах, часть 3 (а для чего?).  [new]
чччД__
Guest
alekcvp
чччД__
alekcvp,
Или тебе не ip-шник нужен?

Мне нужна двусторонняя связь, правда "наоборот": есть сервер, к нему подключаются клиенты, он им рассылает сообщения, они на них отвечают. Всё. Ключевой момент: нельзя допустить чтобы какой-то клиент имел возможность отвечая на сообщение прикинуться другим клиентом.


Если один клиент прикинется другим клиентом (уже существующим, подключенным), то сервер будет слать сообщения им по очереди (такая логика ZMQ). Если я ничего не путаю. Т.е., скорее всего, получится фигня на стороне клиента.
Сие очень легко проверить.
...
Если студенты не "под присмотром" ментора - что им мешает не менять свой адрес, а просто ответить за другого? А если под присмотром - в чем проблема?
29 май 18, 23:15    [21452026]     Ответить | Цитировать Сообщить модератору
 Re: ZeroMQ - сокеты на стероидах, часть 3 (а для чего?).  [new]
alekcvp
Member

Откуда:
Сообщений: 1135
чччД__
Если студенты не "под присмотром" ментора - что им мешает не менять свой адрес, а просто ответить за другого? А если под присмотром - в чем проблема?

То, что никто не видит - что он там у себя делает на экране, а беготня по залу пресекается.
29 май 18, 23:25    [21452049]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 2 3 4 5 6 7 8 9 [10] 11   вперед  Ctrl      все
Все форумы / Delphi Ответить