mDNS и все-все-все
От: vnp  
Дата: 17.04.13 06:25
Оценка:
Ковыряю Bonjour и иже с ним. Возникли вопросы. Буду признателен.

1. Сервис зарегистрировался и умер. Как респондер узнает об этом печальном факте?
2. Кто-то зарегистрировался и нагло врет. Есть ли способ сказать об этом респондеру?
3. Респондер флудит. Есть ли средства призвать его к порядку?
4. Есть подозрение, что jmDNS игнорирует KnownAnswer. Кто-нибудь с этим сталкивался?
Re: mDNS и все-все-все
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 17.04.13 06:28
Оценка: 4 (1)
Здравствуйте, vnp, Вы писали:

vnp>1. Сервис зарегистрировался и умер. Как респондер узнает об этом печальном факте?


Пересканировав сеть по таймауту.

vnp>2. Кто-то зарегистрировался и нагло врет. Есть ли способ сказать об этом респондеру?


Начать "диалог" с хостом. В зависимости от того, кем прикинулся хост он будет вести себя по разному, и наглая ложь может всплыть.

vnp>3. Респондер флудит. Есть ли средства призвать его к порядку?


Нет, это Zeroconf сеть.

vnp>4. Есть подозрение, что jmDNS игнорирует KnownAnswer. Кто-нибудь с этим сталкивался?


Re[2]: mDNS и все-все-все
От: vnp  
Дата: 18.04.13 06:33
Оценка:
Здравствуйте, kaa.python, Вы писали:

KP>Здравствуйте, vnp, Вы писали:


vnp>>1. Сервис зарегистрировался и умер. Как респондер узнает об этом печальном факте?


KP>Пересканировав сеть по таймауту.


Оказалось, что существуют мирные средства. Респондера с сервисом связывает сокет, и если сервис не реагирует на, то респондер имеет право счесть его мертвым. Все счастливы.

vnp>>2. Кто-то зарегистрировался и нагло врет. Есть ли способ сказать об этом респондеру?


KP>Начать "диалог" с хостом. В зависимости от того, кем прикинулся хост он будет вести себя по разному, и наглая ложь может всплыть.


Таки пичалько. Донести на злодея невозможно.
Re[3]: mDNS и все-все-все
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 18.04.13 06:35
Оценка:
Здравствуйте, vnp, Вы писали:

vnp>Оказалось, что существуют мирные средства. Респондера с сервисом связывает сокет, и если сервис не реагирует на, то респондер имеет право счесть его мертвым. Все счастливы.


Это решение хорошо для того случая, если у тебя есть постоянное соединение с сервисом. Но это далеко не самый распространенный сценарий использования Bonjour.
Re[4]: mDNS и все-все-все
От: vnp  
Дата: 19.04.13 05:01
Оценка:
Здравствуйте, kaa.python, Вы писали:

KP>Здравствуйте, vnp, Вы писали:


vnp>>Оказалось, что существуют мирные средства. Респондера с сервисом связывает сокет, и если сервис не реагирует на, то респондер имеет право счесть его мертвым. Все счастливы.


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


Можно с этого места поподробнее? Мне показалось, что респондер с провайдером поддерживают астральную связь постоянно. Типа, sdRef, event callbacks всякие. Если чего, то я полный чайник в этих делах, и буду крайне признателен за любое наставление.

В частности, мой use case — домашняя сетка. Один сервис (и один респондер на том же ящике) и пара-тройка клиентов. Какие грабли меня ждут?
Re[5]: mDNS и все-все-все
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 19.04.13 05:05
Оценка:
Здравствуйте, vnp, Вы писали:

vnp>В частности, мой use case — домашняя сетка. Один сервис (и один респондер на том же ящике) и пара-тройка клиентов. Какие грабли меня ждут?


Я имел ввиду следующую ситуацию. В сети сидит устройство, к примеру принтер. Клиент, на старте, запрашивает все доступные устройства интересующего его класса. Принтер говорит что "вот он тут". Но клиент не устанавливает с ним соединения, он просто хранит информацию о том, где найти принтер. Т.е. принтеру ничего не мешает уйти в оффлай ничего не сказав.
Re[6]: mDNS и все-все-все
От: vnp  
Дата: 20.04.13 05:52
Оценка:
Здравствуйте, kaa.python, Вы писали:

KP>Здравствуйте, vnp, Вы писали:


vnp>>В частности, мой use case — домашняя сетка. Один сервис (и один респондер на том же ящике) и пара-тройка клиентов. Какие грабли меня ждут?


KP>Я имел ввиду следующую ситуацию. В сети сидит устройство, к примеру принтер. Клиент, на старте, запрашивает все доступные устройства интересующего его класса. Принтер говорит что "вот он тут". Но клиент не устанавливает с ним соединения, он просто хранит информацию о том, где найти принтер. Т.е. принтеру ничего не мешает уйти в оффлай ничего не сказав.


А. Понял. Прошу прощения за невнятность. Меня изначально интересовал такой сценарий:
— Сервис регистрируется
— Респондер говорит "вот сервис, кому сервис!"
— Сервис умирает
— Респондер не замечает потери бойца и продолжает его рекламировать
— Все в расстройстве

Оказывается, замечает и перестает.
Re[7]: mDNS и все-все-все
От: henson Россия http://www.njt-rails.com
Дата: 28.10.13 14:07
Оценка:
Здравствуйте, vnp, Вы писали:

vnp>Здравствуйте, kaa.python, Вы писали:


KP>>Здравствуйте, vnp, Вы писали:


vnp>>>В частности, мой use case — домашняя сетка. Один сервис (и один респондер на том же ящике) и пара-тройка клиентов. Какие грабли меня ждут?


KP>>Я имел ввиду следующую ситуацию. В сети сидит устройство, к примеру принтер. Клиент, на старте, запрашивает все доступные устройства интересующего его класса. Принтер говорит что "вот он тут". Но клиент не устанавливает с ним соединения, он просто хранит информацию о том, где найти принтер. Т.е. принтеру ничего не мешает уйти в оффлай ничего не сказав.


vnp>А. Понял. Прошу прощения за невнятность. Меня изначально интересовал такой сценарий:

vnp>- Сервис регистрируется
vnp>- Респондер говорит "вот сервис, кому сервис!"
vnp>- Сервис умирает
vnp>- Респондер не замечает потери бойца и продолжает его рекламировать
vnp>- Все в расстройстве

vnp>Оказывается, замечает и перестает.


Это целиком ответственность сервиса перестать рекламировать себя если он не работает.
Касательно примера выше, никогда не надо хранить информацию ГДЕ найти принтер. Топология сети может измениться и толку от этой информации будет 0.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.