Я хочу использовать Winpcap для захвата всех сетевых пакетов, проходящих через гигабитную сетевую карту сервера.
Предполагая, что я могу использовать сетевое соединение на 100%, максимальная скорость сети составляет 1000 Мбит / с. Если исключить заголовки TCP / IP, максимальная скорость передачи данных TCP должна быть примерно 940 Мбит / с.
Допустим, я отправляю файл размером 1 ГБ через сетевой адаптер со скоростью 940 Мбит / с, используя порт назначения TCP 6000. Я использую Winpcap для захвата всех сетевых пакетов, проходящих через сетевой адаптер, а затем выгружаю их в файл pcap. Если я использую Wireshark для анализа файла pcap, а затем проверю сумму размера пакета для всех сетевых пакетов, отправленных на порт TCP 6000, смогу ли я получить ровно 1 ГБ из файла pcap?
Спасибо.
Предполагая, что вы можете использовать сетевое соединение на 100%, максимальная скорость сети НЕ составляет 1 Гбит / с. Меньше из-за межкадровых промежутков и контрольных сумм. Это еще до того, как вы начнете учитывать заголовки пакетов (как вы правильно упомянули в своем исходном вопросе).
Также, как следует из комментария выше, типичная машина будет изо всех сил пытаться генерировать пакеты на проводной скорости, не говоря уже о том, чтобы генерировать И захватывать пакеты одновременно на проводной скорости. Единственный метод, который я использую для генерации пакетов со скоростью провода (на Linux-машине), - это создание пакетов размером 1500 байт и использование tcpreplay. Используя этот метод, я могу очень близко подойти к скорости проводной сети, но при этом используется ЦП примерно на 100%, если только вы не используете очень быструю машину.
Сказав все это, нет ничего плохого в вашем плане определить объем данных, отправляемых на порт TCP 6000, путем захвата и просмотра с помощью wirehark. (Убедитесь, что вы захватываете ТОЛЬКО TCP-порт 6000, а не все пакеты на интерфейсе.) Вам просто нужно убедиться, что ЦП не загружен на 100%, так что захват пакетов не может обработать все пакеты. Но тогда это верно независимо от того, какой метод вы используете.