реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> мониторинг TCP-соединения, VisualStudio C#
smk
сообщение Apr 23 2014, 06:42
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 246
Регистрация: 17-03-05
Из: Украина, Киев
Пользователь №: 3 446



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


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post
megajohn
сообщение Apr 23 2014, 06:56
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 080
Регистрация: 16-11-04
Из: СПб
Пользователь №: 1 143



думаю, что нужно читать API на winpcap


--------------------
Марс - единственная планета, полностью населенная роботами (около 7 штук).
Go to the top of the page
 
+Quote Post
Dubov
сообщение Apr 23 2014, 07:14
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 408
Регистрация: 28-05-12
Пользователь №: 72 052



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

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


Сообщение отредактировал Dubov - Apr 23 2014, 07:15
Go to the top of the page
 
+Quote Post
smk
сообщение Apr 23 2014, 07:33
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 246
Регистрация: 17-03-05
Из: Украина, Киев
Пользователь №: 3 446



Цитата(Dubov @ Apr 23 2014, 10:14) *
Wireshark предоставляет не просто набор чисел. Эта программа "знает" множество стандартизированных протоколов, в т.ч. и телеметрии.

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


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post
Dubov
сообщение Apr 23 2014, 07:59
Сообщение #5


Местный
***

Группа: Участник
Сообщений: 408
Регистрация: 28-05-12
Пользователь №: 72 052



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

конечно, для этого вам надо писать программу самому. я лищь замолвил свово за wireshark. В нём удобно разбирать пакеты стандартизированых протоколов, тестировать свои программы... вобщем удобный снифер
Go to the top of the page
 
+Quote Post
smk
сообщение Apr 23 2014, 08:08
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 2 246
Регистрация: 17-03-05
Из: Украина, Киев
Пользователь №: 3 446



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


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post
smk
сообщение Apr 23 2014, 10:57
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 2 246
Регистрация: 17-03-05
Из: Украина, Киев
Пользователь №: 3 446



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


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post
DpInRock
сообщение Apr 23 2014, 11:05
Сообщение #8


Гуру
******

Группа: Участник
Сообщений: 2 254
Регистрация: 4-05-07
Из: Moscow
Пользователь №: 27 515



У них разные IP.


--------------------
On the road again (Canned Heat)
Go to the top of the page
 
+Quote Post
smk
сообщение Apr 23 2014, 11:11
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 2 246
Регистрация: 17-03-05
Из: Украина, Киев
Пользователь №: 3 446



Цитата(DpInRock @ Apr 23 2014, 14:05) *
У них разные IP.

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


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post
tdocs.su
сообщение Apr 23 2014, 13:27
Сообщение #10


Частый гость
**

Группа: Участник
Сообщений: 143
Регистрация: 27-02-14
Из: Москва
Пользователь №: 80 728



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

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

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


--------------------
Go to the top of the page
 
+Quote Post
DpInRock
сообщение Apr 23 2014, 18:45
Сообщение #11


Гуру
******

Группа: Участник
Сообщений: 2 254
Регистрация: 4-05-07
Из: Moscow
Пользователь №: 27 515



Цитата
но связь по UDP раз сделал

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


--------------------
On the road again (Canned Heat)
Go to the top of the page
 
+Quote Post
kolobok0
сообщение Apr 23 2014, 19:17
Сообщение #12


практикующий тех. волшебник
*****

Группа: Участник
Сообщений: 1 190
Регистрация: 9-09-05
Пользователь №: 8 417



Цитата(smk @ Apr 23 2014, 14:57) *
..Как мне сказать программе, что использовать нужно ту, которая смотрит в прибор?


1) в протоколе TCP нет пакетов. это к сведению.
2) не важно в си бимоле или каком бэйсик - как правило везде напрямую или лёгкая оболочка над форточной реализацией сокета.
3) по поводу двух карточек... вы через апи енумерите набор каналов связи (это может быть какая нить сетевуха и через USB воткнута - как пример),
выбираете нужную. указываете при открытии-связывании сокета. далее как везде...
4) если по сети общаются две станции, то третья может и не услышать поток (не зависимо от локальных настроек). см. понятие маршрутиризатор...
5) помимо сетевых заморочек, и юая - вам потребуется разобраться с многопоточностью и синхронизацией.



Go to the top of the page
 
+Quote Post
smk
сообщение Apr 24 2014, 08:36
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 2 246
Регистрация: 17-03-05
Из: Украина, Киев
Пользователь №: 3 446



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

Цитата(DpInRock @ Apr 23 2014, 21:45) *
Видать не делали. Есть такое понятие - сокет. Без него вы ничего не напишите. Надо изучать.

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


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post
kolobok0
сообщение Apr 24 2014, 18:58
Сообщение #14


практикующий тех. волшебник
*****

Группа: Участник
Сообщений: 1 190
Регистрация: 9-09-05
Пользователь №: 8 417



Цитата(smk @ Apr 24 2014, 12:36) *
...Как бы не пришлось еще его делать...


тут есть товарищ (читай господин) iosik - вот у него опыт по использованию многопортовых готовых решений.
частенько он приводит ссылку на свой ресурс в сети - думаю там можно подчерпнуть обзорного и наверное бОльшего плана инфу,
по таким вещам.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 10:33
Рейтинг@Mail.ru


Страница сгенерированна за 0.01475 секунд с 7
ELECTRONIX ©2004-2016