Доступ к данным, проходящим через сетевую карту, используя C ++ - PullRequest
0 голосов
/ 22 декабря 2009

Есть ли способ контролировать данные, поступающие из Интернета с определенного адреса через сетевую карту, прежде чем они будут получены ядром операционной системы с использованием C ++ или любого другого языка?

Другими словами, Есть ли способ доступа к модели OSI Seven Layer с использованием C ++ для управления данными, проходящими через любой уровень семи уровней, или они просто логически реализованы.

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

также есть ли какое-либо программное обеспечение для моделирования для OSI?.

Ответы [ 3 ]

4 голосов
/ 22 декабря 2009

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

2 голосов
/ 22 декабря 2009

Можно было бы создать многоуровневого поставщика услуг, который сможет перехватывать данные, вставляя себя в стек winsock, но это не приведет к короткому замыканию данных, проходящих через ядро ​​и уровень NDIS в окнах. Ваше единственное реальное решение здесь - драйвер устройства. Кроме того, есть некоторые сетевые карты, которые реализуют свой собственный стек TCP / IP в аппаратном обеспечении, и вы можете связываться с ними напрямую, однако это не очень распространено. Любой из этих подходов не является тривиальным, и вы смотрите на большую часть режима ядра C. Если вам это неудобно, вам не следует пытаться это делать.

Вы также можете рассмотреть возможность использования winpcap, поскольку это даст вам множество необходимых вам функций. http://www.winpcap.org/devel.htm

2 голосов
/ 22 декабря 2009

Вы спрашиваете, может ли ненадежное приложение контролировать то, что операционная система видит из сети?

Ответ должен быть очевидным.

Большинство операционных систем предоставляют интерфейсы для доступа к исходным данным, поступающим из сети, и вы должны их использовать, а не пытаться втиснуться между сетевой картой и операционной системой.

Также C ++! = C #. Даже близко.

...