Как Wireshark рассчитывает количество коротких кадров - PullRequest
1 голос
/ 15 февраля 2020

Statistics->Protocol Hierarchy показывает различную статистику, включая короткие кадры. Как wireshark считает это, и что он считает короткими кадрами? Это то же самое, что пакеты, которые были намеренно обрезаны во время захвата? (в этом случае caplen поле struct pcap_pkthdr будет меньше len, что является размером полезной нагрузки IP).

Однако, когда я реализовал простое приложение (используйте libpcap) для чтения pcap, и посчитал таким образом (caplen против len), мои цифры немного выше, чем сообщает wireshark.

Wireshark Версия 2.2.6, захват содержит TLS, т.е. через TCP. Меню Wireshark ProtocolHierarchy отображает 15240 пакетов SSL и 13640 коротких кадров из этих 15240.

1 Ответ

1 голос
/ 15 февраля 2020

Как Wireshark считает это, и что он считает короткими кадрами?

Когда Wireshark ловит исключение BoundsError или ScsiBoundsError, он помечает кадр как короткий кадр.

Из epan / show_exception. c: 41

        proto_short = proto_register_protocol("Short Frame", "Short frame", "_ws.short");

С epan / show_exception. c: 81-104

        case BoundsError:
                {   
                gboolean display_info = TRUE;

                ....................................

                if (display_info)
                        col_append_str(pinfo->cinfo, COL_INFO, "[Packet size limited during capture]");
                proto_tree_add_protocol_format(tree, proto_short, tvb, 0, 0,
                                "[Packet size limited during capture: %s truncated]", pinfo->current_proto);
                /* Don't record BoundsError exceptions as expert events - they merely
                 * reflect a capture done with a snapshot length too short to capture
                 * all of the packet
                 * (any case where it's caused by something else is a bug). */
        }

Это то же самое, что пакеты, которые были намеренно усечены во время захвата?

Да, так и должно быть. Но я бы сказал, что небольшая разница возможна, так как Wireshark не учитывает короткие кадры напрямую, как вы делаете это в своем приложении, но этот счет зависит от исключений, которые могут не генерироваться из-за некоторых ошибок.

(в этом случае поле caplen структуры struct pcap_pkthdr будет меньше, чем len, то есть размер полезной нагрузки IP).

Исправить.

Однако, когда я реализовал простое приложение ( используйте libpcap), чтобы прочитать pcap, и посчитав таким образом (caplen против len), мои цифры немного выше, чем то, что сообщает wireshark.

Это либо ошибка в Wireshark, либо в вашем коде. Вы можете использовать фильтр _ws.short, чтобы просмотреть все короткие кадры в Wireshark, а затем попытаться найти кадр, который ваше приложение обнаруживает как короткий, но Wireshark нет.

Wireshark Версия 2.2.6, захват содержит TLS, то есть по TCP

Ваша версия немного устарела. Последняя версия 3.2.1, поэтому рассмотрите возможность обновления или, по крайней мере, тестирования с обеими версиями.

...