Сетевое программирование и взаимодействие пакетов - PullRequest
1 голос
/ 03 мая 2010

Приветствие

В этом месяце я начну работать над магистерской диссертацией. Тема моей диссертации о безопасности сети.

Мне нужно разобраться с сетевыми интерфейсами и пакетами.

Ранее я использовал shappcap для взаимодействия с пакетами, но я не уверен, является ли C # наиболее мощным языком для сетевого программирования и пакетов.

Я немного поработал с wireshark и увидел, насколько он мощный, и, как вы знаете, winsharp - открытый исходный код, разработанный с использованием C ++.

Я не уверен, стоит ли мне использовать C # или C ++ для программирования безопасности сети, и я хочу, чтобы вы узнали о том, какой язык лучше всего подходит для сетевого программирования и взаимодействия пакетов.

я должен использовать C #, C ++ или Java или что-то еще?

Пожалуйста, дайте мне ваш совет.

Спасибо,

UPDATE ..........................

Я собираюсь по-разному анализировать пакеты, беря каждый пакет и читая каждое поле в нем, затем используя эти значения, и на тех же этапах я изменяю значение некоторых пакетов, а затем отправляю их обратно.

Я хочу управлять пакетом с момента его получения сетевым интерфейсом до его передачи на прикладной уровень.

также

Ответы [ 5 ]

3 голосов
/ 03 мая 2010

WireShark использует WinPCap, чтобы вы могли также пойти по этому пути.

Для приложений безопасности - это система обнаружения вторжений или вы действительно хотите отбросить пакеты с ошибками? WinPCap, SharpPCap и т. Д. Не позволяют вам отбрасывать пакеты, для этого вам нужно взглянуть на какой-то промежуточный драйвер или посмотреть на Windows Filtering Platform (WFP)
http://www.microsoft.com/whdc/device/network/WFP.mspx

ИМХО, если вы можете найти драйвер обратного вызова, который перезванивает в пользовательский режим и позволяет фильтровать пакеты из C # или C ++, это, вероятно, подойдет для экспериментальных целей и т. Д., Но для производственного решения я Подумайте , вам нужно придерживаться уровня ядра, чтобы быть в курсе всего объема.

3 голосов
/ 03 мая 2010

Вы сможете заниматься сетевым программированием практически на любом языке. Если вам одинаково удобно пользоваться всеми языками, которые вы упомянули, вы должны определить, с какими системными библиотеками или API вы будете взаимодействовать. Например, если вы будете заниматься сетевым программированием на уровне пакетов в системе Unix, C, вероятно, будет вашим лучшим. Если вы хотите интегрироваться с Wireshark, используйте C ++. Если вы хотите использовать компонент Apache Commons, используйте Java. Я предлагаю вам придумать более конкретный набор требований для вашей настоящей программы, прежде чем пытаться решить, какой язык использовать.

0 голосов
/ 05 мая 2010

Я бы предложил использовать C #, поскольку существует очень мощная библиотека с именем Pcap.Net , которая оборачивает WinPcap кодом .NET. Это должно упростить вам прием, отправку и интерпретацию пакетов разных пакетов разных протоколов.

0 голосов
/ 03 мая 2010

Вы можете использовать java, если хотите - jpcap работает хорошо.

0 голосов
/ 03 мая 2010

Используйте C ++, Boost и Poco, и вы можете делать то, что вы хотите. Ускорение asio: Портативные сети, включая сокеты, таймеры, разрешение имени хоста и сокеты iostreams. Библиотека Poco также предоставляет решения для сети, крипрографии NetSSL ... и многое другое. Для получения дополнительной информации вы можете посетить www.boost.org и www.pocoproject.org

...