Существует способ захвата входящих / исходящих пакетов в .NET, используя только стандартную реализацию winsocks.Я видел блог с примером того, как, но у меня больше нет ссылки.
Короче говоря, это крайний крайний случай, потому что это не то, для чего предназначен winsocks (стандартный сетевой драйвер Windows).
Причина, по которой Pcap обычно необходим для захвата пакетов, заключается в том, что он использует собственный сетевой драйвер NDIS, который открывает все возможности вашей сетевой карты.Кроме того, он также предоставляет простой способ установки фильтров для ограничения количества пакетов, перехваченных на указанном интерфейсе.
IE, драйвер будет игнорировать пакеты определенного типа на уровне ядра вместоуровень пользовательского режима.Таким образом, вы сможете фильтровать пакеты намного эффективнее и захватывать при больших нагрузках в сети.
В .NET для фильтрации пакетов вам потребуется собственная схема фильтрации пакетов прикладного уровня, котораябудет гораздо менее эффективным.
Windows блокирует доступ к нестандартным протоколам по «соображениям безопасности», поэтому они не поддерживают использование пакетов RAW для работы в сети (даже если для этого существует код),Пакеты RAW всегда предназначались для исследования разработки новых протоколов, а не общего использования.
По всем этим причинам обычно рекомендуется выбрать Winpcap и оболочку для вашего конкретного языка для реализации любого типа.Захват приложения.
Примечание. Я лично предпочитаю SharpPcap, но я также склонен к разработке проекта.Pcap.net очень похож в своей реализации, когда дело доходит до захвата, он в основном расходится, когда речь идет о том, как анализируются пакеты.