Почему пакеты, получаемые из сокета, меньше, чем перехваченные Wireshark?

avatar
Wonter
8 апреля 2018 в 08:54
90
1
0

У меня возникла очень странная проблема.

Мой код получил только пакеты 87266, но в Wireshark есть пакеты 167917

Это мой код (python3):

counter = 0
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.settimeout(10)
sock.bind(('', 57130))
while True:
    try:
        data, _ = sock.recvfrom(4096)
        counter += 1
    except socket.timeout:
        break
print(counter)
exit(0)

Вывод 87266

Но в Wireshark я получил 167917 пакетов

enter image description here

Я пометил все пакеты, которые dstport == 57130 и экспортировал их в файл, затем открыл этот файл, так что эти No. следуют друг за другом.

Моя ОС Windows 7

Источник
Christopher Maynard
8 апреля 2018 в 14:52
0

Я не программист на Python, но что произойдет, если вы увеличите 4096 до чего-то большего? 8192, 16384, ...? Возможно, Python не может обрабатывать пакеты достаточно быстро, а ваш буфер слишком мал для скорости потока пакетов? Глядя на временные метки, кажется, что все пакеты прибывают в течение очень короткого промежутка времени друг от друга.

Ответы (1)

avatar
Zac67
8 апреля 2018 в 09:04
0

Может быть драйвер сетевого фильтра, который перехватывает определенные кадры, чтобы Wireshark не мог их увидеть. Они учитываются драйвером сетевой карты, но не Wireshark.