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] чую что сразу на поток поставят
From:
Anonymous( )Anonymous This account has disabled anonymous posting.
OpenID( )OpenID You can comment on this post while signed in with an account from many other sites, once you have confirmed your email address. Sign in using OpenID.
User
Account name:
Password:
If you don't have an account you can create one now.
Subject:
HTML doesn't work in the subject.

Message:

 
Notice: This account is set to log the IP addresses of everyone who comments.
Links will be displayed as unclickable URLs to help prevent spam.

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:24 pm
Powered by Dreamwidth Studios