Розетки VS WinPcap - PullRequest
       9

Розетки VS WinPcap

4 голосов
/ 13 октября 2009

Кто-нибудь знает, почему я должен использовать Winpcap, а не только .Net сокеты, чтобы перехватывать пакеты на моем локальном компьютере?

TY

Ответы [ 2 ]

11 голосов
/ 14 октября 2009

Сокеты (.NET, Winsock и т. Д.) Обычно собираются на уровне 7, прикладном уровне. То есть все, что отправлено отправителем, является тем, что получено получателем. Все различные заголовки, которые автоматически добавляются на отправляющей стороне, удаляются к тому времени, когда получатель считывает данные из сокета.

Можно настроить сокет в качестве необработанного сокета, в этом случае вы можете увидеть все заголовки вплоть до уровня 3, сетевого уровня. Более того, вы можете перевести необработанный сокет в случайный режим, который позволяет вам видеть весь трафик в сети, а не только пакеты, предназначенные для вашей машины. Но даже это ограничено. Например, когда вы конфигурируете необработанный сокет, вы указываете тип используемого протокола, например, IP, ICMP и т. Д. Это ограничивает сокет для «просмотра» пакетов, которые придерживаются этого протокола. Мне не удалось выяснить, как заставить сокет видеть все пакеты на уровне 3 независимо от протокола.

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

Что касается выбора между ними, это действительно сводится к требованиям вашей конкретной задачи. Если вы пытаетесь реализовать какие-либо реалистичные возможности сетевого анализа, вам будет сложно сделать это, используя только сокеты. Winpcap имеет больше смысла в этом случае. Однако, если вы заинтересованы, например, только в IP-пакетах, сокеты для этого подойдут.

1 голос
/ 13 октября 2009

Насколько я понимаю, сокеты .Net - это IPC для связи между двумя процессами. В то время как winpcap - это библиотека, которая помогает вам получить доступ к канальному слою данных, сниффакет проходит через сетевые (или виртуальные) устройства на вашей машине. Канальный уровень данных позволяет получать данные в любой сокет (.Net или нет), созданный в вашей системе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...