magistr: (Default)
[personal profile] magistr
все начиналось невинно
люди, скажите, а какие методы проверки целостности сетевых пакетов есть?
[00:34:14] они в tcp встроены ))
[00:34:34] AH + ESP
[00:34:38] да, но у меня передача по udp
[00:34:49] делай сам
[00:34:59] udp это не будет делать для тебя
[00:35:04] а ну udp и не заботится о целостности
[00:35:08] он stateless
[00:35:09] *** Night Nord has left the room


[00:35:11] была мысль вычилсть md5 данных, в пакете, а потом на проверяющей стороне проверять
[00:35:20] проще
[00:35:22] crc32
[00:35:27] *** krigstask has joined the room as a moderator and an administrator
[00:35:50] мне, так чтобы в c++ встроить удобно, алгоритмы там
[00:36:31] openssl выбирай любой быстрый алгоритм хеширования
[00:37:08] да вот md5 прикручивал, в принципе да, но не удобно, md5 например требует только байтовый массив
[00:37:30] *** Night Nord has joined the room as a moderator and an administrator
[00:37:33] а у меня передаются структуры, есть мысли как обходить, но имхо это гемор
[00:37:55] а ы чем проблема
[00:38:07] запихал в буфер
[00:38:11] взял сумму
[00:38:18] послал из буфера
[00:38:23] послал сумму
[00:38:33] вопрос только как проверять саму сумму
[00:38:39] да просто
[00:39:03] передавать не структуру, а массив, из 2-х элементов. В 1 сама структура, во втором ее хешь
[00:39:22] не
[00:39:28] а что?
[00:39:39] тут ведь проблема в том, что сумму тоже может побить при передаче
[00:39:52] а зачем udp?
[00:41:02] ну так вот начальство сказало, они считают это самым оптимальным, для передачи данных например от гидролакациооной фигни, на пульт управления, и также от него, на сам управляемый объект
[00:41:15] вообще для взаимодействия
[00:41:47] круто
[00:42:06] поставим вопрос иначе
[00:42:13] мда ладно тв сигнал со спутника .. потеря кадров нестрашна .. а тут то
[00:42:26] во главу ставится надежность или скорость приема?
[00:42:38] *** cheerfulboy has left the room
[00:43:15] ну например, протокол ими сформулированный, предполагает кидать данные 1 раз в секунду, но помоему хотят ускорится, и вот надежность привить
[00:43:52] ммм
[00:44:35] там данные прямо таки архисрочные и их так много в единицу времени?
[00:45:34] неособо
[00:46:15] так сказать координаты спускаемого аппарата, относительно корабля, ну и другие параметры, и управление самим аппаратом
[00:46:24] тогда почему UDP ?
[00:46:45] да хз, вот решили они так, и менять не собираются
[00:47:24] я думаю приделывание возможности надежности протоколу udp накладнее в плане реализации по сравнению со встроенным в tcp механизмами
[00:47:45] *** burik666 has joined the room as a participant
[00:47:50] ну про мд5 они также считают
[00:48:01] и что то мне подсказывает, что новый протокол будет вряд ли быстрее
[00:48:16] хм
[00:48:35] *** Brainsburn has joined the room as a participant
[00:48:59] *** Brainsburn has left the room (offline)
[00:49:21] ну скажу так, что с 3-5 устройств по сети на одно, а с этого одного ведется управление аппаратом
[00:49:28] *Magistr даже вспомнил задачку из одного соревнования .. там использовалось тоже подобие тсп для управления движением и навигацией апарата
[00:49:29] нармальнотсп?
[00:49:40] *нормально там тсп?
[00:50:01] а расстояние ?
[00:50:18] xscrew: а что будет если данные сломались?
[00:50:29] лебедка максимум 850 метров
[00:50:54] tcp пошлет запрос не перепосылку и затормозит всю очередь, пока не получит потерянный пакет - чтобы сохранить последовательность
[00:51:09] Если это то что нужно - то хорошо
[00:51:22] ну те которые переодически передаются, с теми ничего, забьют на них, и будут ждать новых, ибо это координаты грубо говоря каждую секунду
[00:51:36] А управляющие?
[00:51:57] *** 0xwhite has left the room
[00:52:02] Просто если надо делать хитрожопно - то надо делать udp и самому контролировать очередность, делать очереди ожидания и т.п.
[00:52:18] Где надо, а где не надо - тупо сбрасывать
[00:56:54] во-во
[00:57:04] если пакет не придет, то все, все встало
[00:57:36] а мож гдето юзать tcp а гдето udp ?
[00:57:44] но на проверку целостности, не знаю что прикручивать
[00:58:00] evadim: для них сложно очень) они хотят как можно проще
[00:58:27] тут может получится что проще будет сложно сильно
[00:58:50] ну по факту осталось только проверку целостности
[00:58:52] tcp обрабатывает сетевуха на аппаратном уровне...
[00:59:29] ну удп с костылем имхо хуже чем тсп)
[01:00:10] хых проще использовать проверенное временем ..
[01:00:20] и без костылей ..
[01:00:29] может быть, но ничего не изменить, по крайней мере в ближайшее время, им надо вот этот проект завершить, не меняя их стандартов, а в новом подумаем
[01:01:12] то есть мд5 их тоже не устраивает?
[01:01:41] устраивает, вроде... пока они не возразили
[01:02:07] значит мд5 будем прикручивать
[01:02:35] бери более быстрый алгоритм
[01:02:47] вот какой?
[01:02:53] http://old.antichat.ru/txt/hashes/
[01:03:21] *** cobain has joined the room as a participant
[01:04:23] winterheart: а ты говорил мол, что сам хешь отправленный может быть битым
[01:04:37] как обходить такое?
[01:04:48] посылать несколько раз
[01:05:16] crc?
[01:05:30] не знаю
[01:05:32] имхо crc и там и там нужно
[01:05:42] чтоб понять битое или нет
[01:05:56] где и там и там?
[01:06:09] в той глубкой молодости когда нужно было придумывать похожий алгоритм, меня реализацией миновали
[01:06:25] =)
[01:06:39] а вот это чисто мой гемморой)
[01:07:54] есть мысля использовать еще 1 сокет, так сказать резервный, и дублировать. отправку хеша
[01:08:27] xscrew: да не, так нормально udp
[01:08:38] Делай по sha
[01:09:04] xscrew: пакеты бинарные?
[01:09:09] протокол тобишь
[01:09:22] надо все таки пару раз хеш слать
[01:10:01] Зачем?
[01:10:06] Если протокол текстовый
[01:10:18] Первой строчкой хэш
[01:10:21] Потом данные
[01:10:34] Прога берет первую строчку отцепляет
[01:10:35] xscrew: хеш нужен исключительно для проверки целостности? вероятность подмен исключена?
[01:10:46] От данных берет хэш и сравнивает
[01:10:56] Mellon: а че, акула в провод вцепиццо?
[01:11:07] И будет слать комманды на таран судна?
[01:11:11] а вот хз :)
[01:11:26] xscrew: и при отправке данных и при отправке хэша
[01:11:40] авот
[01:11:48] кстати да
[01:12:01] хеш и данные надо слать одним пакетом
[01:12:18] можно даже виртуальную структуру под пакет сбацать
[01:12:20] имхо, если протокол текстовый, то лучше в xmpp одеть :D
[01:12:26] боги
[01:12:29] а что значит бинарные данные?
[01:12:39] двоичный поток
[01:12:49] структура данных
[01:12:52] Mellon: бахнулся?
[01:12:58] Обработка XML нехило стоит
[01:13:05] Проще заюзать HTTP
[01:13:11] Или наваять свое
[01:13:16] Night Nord: пыхнулся :D
[01:13:32] я понял
[01:13:44] Если пакеты и протокол - вещи раздельные
[01:13:54] То надо делать по OSI
[01:14:00] xscrew разрабатывает сверх секретный протокол управлением кофеварками
[01:14:07] делать хеадер пакета, футер пакета
[01:14:08] И т.п.
[01:14:12] xscrew: почитай про структуры данных, если еще не читал
[01:14:24] почему не читал
[01:14:25] winterheart: батискафы он неуправляемые делает
[01:14:34] Тьфу
[01:14:37] Не пилотируемые =)
[01:14:37] психованные чтоли?
[01:14:39] как раз уже сделали, что данные - это структура, ее и передаем
[01:14:41] )
[01:14:41] про OSI точно
[01:14:59] xscrew: эм, вы че, RPC творите?
[01:15:04] память кидаете?
[01:15:14] не
[01:15:23] координаты в дерево записываете?
[01:15:30] Для координат юзайте NMEA
[01:15:32] Это стандарт
[01:15:37] ну типо так, в поля структуры, и ее в сеть
[01:15:42] *evadim тихо фигеет с такой картины... гентушники скопом делают спеки протокола управления подводными аппаратами...
[01:15:48] Который поддерживается чертовступе всякой фигни
[01:16:19] По нему всякие гпс, рации и т.п. работают
[01:16:19] Night Nord: беда в том что у них есть "протокол" в который, они хотят присобачить проверку
[01:16:25] и все
[01:16:32] А протокол-то какой?
[01:16:34] Текстовый?
[01:16:38] вот я и думаю какую... а мне тут натолкали
[01:16:39] Или бинарный?
[01:16:54] Ну ты сделай как они хотят
[01:17:02] А паралельно сделай человеческий
[01:17:15] И покажи оба
[01:17:16] мде, я теряюсь в понятиях. Протокол описывает то, что данные загоняют в поля структуры, и дальше структуры в сеть, вот и все
[01:17:38] xscrew: структуры? те которые struct в си?
[01:17:42] хехе
[01:17:48] если и делать человеческий, то к их новому проекту, а им этот надо завершиь
[01:17:53] да struct
[01:17:56] Тобишь вы кидаете память по сети?
[01:18:03] Тобишь это бинарный рпц
[01:18:05] ну значит так)
[01:18:13] Самый страшный ахтунг который тока можно придумать =)
[01:18:25] ну у них оно пашет черти сколько
[01:18:40] Ну... никакой обратной совместимости
[01:18:44] блин, интересная у вас работка там)
[01:18:59] и менять не собираются, еле уговариваем пульт управления на куте4 писать, пока не ясно уговорили или нет
[01:19:08] Чее???
[01:19:10] Нахрена?
[01:19:14] <Торчёк> winterheart: http://pastebin.ca/1322013
[01:19:16] xscrew: железо наше? если да, то бери из хешоев что полегче :)
[01:19:16] ну пульт оператора
[01:19:36] они сидит и видит, карту, там параметры и т.п.
[01:19:43] Ммм
[01:19:55] *Night Nord всегда думал, что такие вещи можно вообще делать на ncurses типа
[01:20:00] Mellon:чесно, я хз что за железо
[01:20:08] Night Nord: не, там пульт такой
[01:20:17] Ну я понял
[01:20:17] ну функциональный
[01:20:21] очень
[01:20:23] В МСВС правда 4 нету
[01:20:27] и им мало
[01:20:29] Торчёк: ну я вижу пока что один пакет проверенный
[01:20:46] xscrew: эта, ты как определяешь что структура началась/закончилась?
[01:20:54] sizeof
[01:20:57] Торчёк: такой качал - j2me_wireless_toolkit-2_2-update_2-linux.zip?
[01:21:02] оно вполне работает
[01:21:08] Тобишь ты читаешь блоками из сокета?
[01:21:11] <Торчёк> winterheart: дык второй там же скачивается
[01:21:20] Вотсмотри, берешь 256битный хэш, sha1
[01:21:21] да. на прослушку порт и вуаля
[01:21:32] Читаешь sizeof+256
[01:22:03] Либо сначала sizeof
[01:22:07] потом еще раз 256
[01:22:21] и шлешь,соответственно, сначала структуру, потом хэш
[01:22:23] Торчёк: так, какие файлы ты скачал?
[01:22:43] sha1 160 бит
[01:22:45] <Торчёк> winterheart: те, что там в копипасте указаны
[01:22:53] Потом делаешь хэш и сравниваешь с тем что получил
[01:22:54] хм, а как он определит что ему пришла структура или хешь?
[01:23:00] <Торчёк> а...
[01:23:02] <Торчёк> стоп
[01:23:24] xscrew: ну
[01:23:29] При такой системе - никак
[01:23:36] или по второму порту хешь кидать
[01:23:45] <Торчёк> winterheart: апдейт 2 просит... а у меня 1... странно...
[01:23:51] Тебе тогда надо делать надстройку над udp
[01:24:19] ну вот
[01:24:23] шлешь сначала некоторую последовательность байт - это начало пакета
[01:24:36] вот такие дела блин, батискафы по удп работают
[01:24:37] потом шлешь длинну пакета
[01:24:45] :)
[01:24:48] Потом номер пакета
[01:25:02] а давайте по icmp
[01:25:06] Все это строго фиксированной длинны
[01:25:15] Потом шлешь данные
[01:25:15] с аутентификацией пакета
[01:25:24] жесть
[01:25:24] Читаешь их по длинне
[01:25:34] Потом шлешь последовательность байт - конец пакета
[01:26:00] xscrew: найт сейчас суть создания tcp-пакета расписывает
[01:26:05] Если пакет собрался - проверяешь хэш от данных с хэщем из хеадера
[01:26:05] Ага
[01:26:14] winterheart: тока ему нужно иногда сбрасывать, а иногда нет
[01:26:19] ага
[01:26:21] tcpoudp :D
[01:26:24] А тсп всегда будет получать
[01:27:53] xscrew: на самом деле ничо сложного. Хэш - определенного размера, номер берешь int, к примеру, начало пакета некое число/строка, конец аналогично
[01:27:55] Лучше даже строку
[01:28:08] Вероятность того, что случайные данные сложатся в слово - мало
[01:28:18] Если пакет не собрался - сбрасываешь весь буффер
[01:28:22] надстройка это тема
[01:29:02] хеш функцию еще сам напиши, чтоб они ошалели от твоей крутизны
[01:29:22] Да не, тут, как я понимаю, околовоенные круги
[01:29:33] А там делаеться по принципу следования линии партии
[01:29:50] ага, не хотят ничего менять
[01:29:50] Сказано по удп - делай по удп и скажи спасибо, что не по ip голому =)
[01:30:32] Там, вообщем-то, провод передает, как я понимаю
[01:30:36] здесь на ржачь ппц пробивает :D пойдука фильм смотреть :D
[01:30:49] там пакеты врядли перепутаются местами
[01:30:53] За один хоп
[01:31:06] А вот побиться могут
[01:31:16] а фдруг диверсанты
[01:31:37] поэтому я настоятельно реквестирую в протокол шифрование данных
[01:31:41] иголки под водой будут в провода втыкать
[01:31:48] смешно блин вам?
[01:31:53] :)
[01:31:56] Кстати, про шифрование это шутка
[01:31:56] да ладно
[01:31:59] Но можно заюзать
[01:32:02] Как проверку
[01:32:12] если расшифровалось- все нормально
[01:32:17] если нет - че-то не так =)
[01:32:23] диверсанты!
[01:32:23] Заюзать ssl
[01:32:29] вот и решение xD
[01:32:37] Потом на пульте вылазит такая мессага
[01:32:40] серьезная тема!
[01:32:49] У батискафа сертификат подписан ненадежным поставщиком
[01:32:51] они там офигеют
[01:32:57] просили просто чексум приделать
[01:32:58] :-D
[01:33:03] Вы уверены,что это тот батискаф о котором вы думаете? =)
[01:33:14] а ты им целый протокол атидиверсинной деятельности
[01:33:36] :)
[01:33:36] дооо
[01:33:49] повод потренироваться в криптографии
[01:34:09] *evadim думает что от brainstorm у комутнити этот самый brain сорвало...
[01:34:37] Мне это чем-то напоминает как мы на работе придумавали алгоритм создания сессии для сайта, чтобы не стырили =)
[01:34:57] Там сессия в результате была с тремя вложенными хэшами нехилого размера =)
[01:35:34] мда
[01:35:39] xscrew еще щас спаяет свою шифровальную машинку
[01:36:05] да хрен я что спаяю, я только учусь
[01:36:44] тоесть то что ты делаеш в реальные аппараты ни ни?
[01:36:57] *** Night Nord has left the room
[01:37:05] чую что сразу на поток поставят

Date: 2009-01-30 04:44 am (UTC)
From: [identity profile] darkk.livejournal.com
Совсем ожирели, IP в батискаф засунули :-)

Date: 2009-01-30 05:00 am (UTC)
From: [identity profile] u-magistr.livejournal.com
хых не там пока udp .. и 850 метров кабеля ..

Date: 2009-01-30 05:32 am (UTC)
From: [identity profile] darkk.livejournal.com
«Припаяют» — будет.

Profile

magistr: (Default)
magistr

April 2014

S M T W T F S
  12345
6789101112
1314151617 1819
20212223242526
27282930   

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 20th, 2017 02:34 pm
Powered by Dreamwidth Studios