Jump to content

    
Sign in to follow this  
smk

мониторинг TCP-соединения

Recommended Posts

Раньше подобного не делал. Есть две задачи, которые нужно решить в одной программе. 1) Прием/передача данных по TCP при этом устройство и программа знают IP друг друга. 2) Программа мониторит общение устройства с другим компьютером. Устройство Server, программа Client. Есть ли возможность мониторить пакеты именно те, которые проходят непосредственно между устройством и другим компьютером программой работающей на третьем компьютере? Может можно как-то настроить сетевую карту? Да и как это все будет выглядеть в виде программного кода в VisualStudio201 C# пока не очень представляю. По идее эти две задачи можно разделить на две программы, наврядли обе эти функции понадобятся на одном компьютере одновременно. Вот и прошу помощи/подсказок. Готовые программы типа WireShark не подойдут, т.к. при мониторинге нужно правильно интерпретировать данные в пакете. Просто набор чисел не интересен. Нужен контроль телеметрии. Спасибо.

Share this post


Link to post
Share on other sites
Раньше подобного не делал. Есть две задачи, которые нужно решить в одной программе. 1) Прием/передача данных по TCP при этом устройство и программа знают IP друг друга. 2) Программа мониторит общение устройства с другим компьютером. Устройство Server, программа Client. Есть ли возможность мониторить пакеты именно те, которые проходят непосредственно между устройством и другим компьютером программой работающей на третьем компьютере? Может можно как-то настроить сетевую карту? Да и как это все будет выглядеть в виде программного кода в VisualStudio201 C# пока не очень представляю. По идее эти две задачи можно разделить на две программы, наврядли обе эти функции понадобятся на одном компьютере одновременно. Вот и прошу помощи/подсказок. Готовые программы типа WireShark не подойдут, т.к. при мониторинге нужно правильно интерпретировать данные в пакете. Просто набор чисел не интересен. Нужен контроль телеметрии. Спасибо.

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

 

Edited by Dubov

Share this post


Link to post
Share on other sites
Wireshark предоставляет не просто набор чисел. Эта программа "знает" множество стандартизированных протоколов, в т.ч. и телеметрии.

Ну вот скажем пришел пакет с 256 байтами. Мне нужно (например) первые три интерпретировать в число, два последующих разобрать так чтоб видеть какие флаги стоят. Еще другие числа показать и подписать. И т.д. Не уверен, что получится без самописного монитора. Да и сообщения хорошо бы в информационную строчку генерировать, логи вести нужные, а не все подряд.

Share this post


Link to post
Share on other sites
Ну вот скажем пришел пакет с 256 байтами. Мне нужно (например) первые три интерпретировать в число, два последующих разобрать так чтоб видеть какие флаги стоят. Еще другие числа показать и подписать. И т.д. Не уверен, что получится без самописного монитора. Да и сообщения хорошо бы в информационную строчку генерировать, логи вести нужные, а не все подряд.

конечно, для этого вам надо писать программу самому. я лищь замолвил свово за wireshark. В нём удобно разбирать пакеты стандартизированых протоколов, тестировать свои программы... вобщем удобный снифер

Share this post


Link to post
Share on other sites

Удобный, не спорю. Однако специфика диктует свои условия. Попутно вопрос, как в VisualStudio 2010 C# организовать прием/передачу буфера в (ну пусть 1024) байта. Порт и IP должны настраиваться т.к. могут меняться. С остальным, думаю разберусь для начала. Ну и в части мониторинга с третьего компьютера пока не ясно. Как это сделать, если это возможно? Сразу признаюсь, уровень опыта в этих делах маловат, но связь по UDP раз сделал. Не без помощи. Вот как оно в TCP?

Share this post


Link to post
Share on other sites

Еще появсился вопрос. Вот если у меня 2 сетевые карточки. Одна смотрит в интернет, а вторая в прибор. Как мне сказать программе, что использовать нужно ту, которая смотрит в прибор?

Share this post


Link to post
Share on other sites
У них разные IP.

Это я понимаю. А програмно как это будет не знаю. Вот чтоб интернет не тормозил я менял приоритет. А можно ли как-то прямо в программе указать, что связь нужно производить только с указанной карточки? Раньше я видел, что IP подхватывался текущий. Теперь их два. Вот и интересует какими средствами я привязываю программу к нужной карточке? Собственно и про мониторинг пока ничего не понятно.

Share this post


Link to post
Share on other sites

Схожую историю обсуждаем сейчас здесь - http://electronix.ru/forum/index.php?showtopic=120469 Вернее, решение задачки схожее. Любой снифер, разбирающий пакеты, строится на основе конечного автомата. Иначе никак.

 

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

 

ЗЫ. Коммуникационные задачки, конечно, кашмар кашмарный :) Тут только конечный автомат... А строиться он должен на основе RFC 1180. Можно, кстати, поискать в сети исходники снифферов, должно помочь.

Share this post


Link to post
Share on other sites
..Как мне сказать программе, что использовать нужно ту, которая смотрит в прибор?

 

1) в протоколе TCP нет пакетов. это к сведению.

2) не важно в си бимоле или каком бэйсик - как правило везде напрямую или лёгкая оболочка над форточной реализацией сокета.

3) по поводу двух карточек... вы через апи енумерите набор каналов связи (это может быть какая нить сетевуха и через USB воткнута - как пример),

выбираете нужную. указываете при открытии-связывании сокета. далее как везде...

4) если по сети общаются две станции, то третья может и не услышать поток (не зависимо от локальных настроек). см. понятие маршрутиризатор...

5) помимо сетевых заморочек, и юая - вам потребуется разобраться с многопоточностью и синхронизацией.

 

 

 

 

Share this post


Link to post
Share on other sites

Про маршрутизацию в курсе. Нужен концентратор. Глянул на цены - не понравилось. Как бы не пришлось еще его делать...

 

Видать не делали. Есть такое понятие - сокет. Без него вы ничего не напишите. Надо изучать.

Про сокет тоже в курсе. Благо помогли увидеть как надо его открыть/закрыть и пользовать. В ТСР должно быть аналогично, но по нему опыта нет.

Share this post


Link to post
Share on other sites
...Как бы не пришлось еще его делать...

 

тут есть товарищ (читай господин) iosik - вот у него опыт по использованию многопортовых готовых решений.

частенько он приводит ссылку на свой ресурс в сети - думаю там можно подчерпнуть обзорного и наверное бОльшего плана инфу,

по таким вещам.

 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this