Member 12920604 Ответов: 2

Рекомендации по простому проектированию и внедрению генератора сетевых пакетов


Я очень новичок в программировании, так что простите меня, если мой вопрос может показаться очевидным. Мне интересно узнать больше о нетворкинге, хотя у меня никогда не было возможности поучиться в нем. Мне было предложено, что я узнаю много нового о пакетах и генерации пакетов, написав свою собственную программу для генерации простых пакетов с использованием модели OSI, сосредоточившись на уровнях 2, 3 и 4 и беспокоясь об обработке только основных важных протоколов, таких как Ethernet, IPv4, IPv6, TCP и UDP.

Я нашел эту удобную справочную страницу, так что я немного понимаю о различных слоях и их целях. Я просмотрел много источников, таких как Ostinato, Jperf, JNetPCap и т. д. Все это кажется немного более сложным, чем то, что я пытаюсь сделать. Я действительно хочу просто создавать / генерировать пакеты,которые я никогда раньше не видел.

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

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

Просто ищу какое-то направление, чтобы получить меня началась. Спасибо, я действительно ценю это!

Что я уже пробовал:

Я искал в google информацию/инструкции о том, как генерировать пакеты. Большая часть информации, которую я нашел, касается приемного конца или использования сниффера. Может быть, многое из того, что я вижу, имеет отношение к делу, но я просто не понимаю этого.

Я смотрел на эти ресурсы:

Справочное руководство: Урок 1: эталонная модель взаимосвязи открытых систем (OSI) [^]

Остинато: http://ostinato.org[^]

Утилит jperf: github.com/AgilData/jperf/tree/master/src/main/java/org/jperf[^]

JNetPCap: jnetpcap.com/examples/sendpacket[^]

2 Ответов

Рейтинг:
5

Srivats P

Хотя это хорошо, чтобы понять сеть, генерируя свои собственные пакеты, вам не нужно писать программу, чтобы сделать это. Мой совет состоит в том, чтобы генерировать пакеты с помощью Ostinato - процесс генерации пакетов как пользователя в Ostinato достаточно низок для понимания сетевых пакетов, слоев, заголовков и полей.

Также было бы полезно посмотреть на захват пакетов в Wireshark одновременно.

В идеале вы должны иметь кого-то с сетевыми знаниями, чтобы иметь возможность ответить на вопросы, которые у вас всегда будут-книга хороша, но недостаточно хороша, чтобы ответить на вопросы :-)

Если вы все еще хотите написать свою собственную программу, используйте libpcap ( или WinPCAP в Windows) - начните с этого Учебник По Отправке Пакетов

Удачи!

Раскрытие информации: я являюсь разработчиком Ostinato


Member 12920604

большая часть того, что я вижу, использует графический интерфейс для фактической генерации пакетов.Мне любопытно посмотреть, что входит в механику собственно генерации пакета. Например, если я хочу сгенерировать пакет для Ethernet-IPv4-UDP, что мне нужно сделать, чтобы установить заголовок и подготовить его к отправке?
О, кроме того, ссылка WinPCap, похоже, не работает. Я скачал JNetPCap, потому что это звучит так, как будто он предоставляет некоторые необходимые функции, но я все еще не уверен.

Srivats P

Я исправил сломанный URL-адрес. См. пример на этой странице для фактической механики генерации пакета. Не очень интересно ИМХО :-)

Member 12920604

Красивая, я думаю, что это именно то, что я искал, спасибо! Кроме того, остинато-это фантастика, я обязательно порекомендую его другим

Рейтинг:
0

Richard MacCutchan

Java-не лучший выбор языка для этого типа приложений, вам лучше изучать C или C++. Вам также необходимо глубокое понимание API, доступного в ОС, с которой вы планируете работать.