Либтинс TCP пропускает поток пакетов? - PullRequest
4 голосов
/ 28 октября 2019

Прежде всего, спасибо за ваше терпение. Эта проблема может быть только из-за моего непонимания, так как я являюсь полным новичком в PDU, ...

Я пытаюсь выполнить некоторую перезапись TCP-потока с использованием libtins для измерения некоторых метрик. Проблема в том, что libtins не обнаруживает никакого нового потока, когда я ожидал, что он будет создан.

Вот как я настраиваю свой Sniffer :

int main()
{
    SnifferConfiguration config;
    config.set_promisc_mode(true);
    config.set_filter("tcp");

    // Create our follower
    Tins::TCPIP::StreamFollower follower;

    // Set the callback for new streams. Note that this is a std::function, so you
    // could use std::bind and use a member function for this
    follower.new_stream_callback(&on_new_stream);

    // Now set up the termination callback. This will be called whenever a stream is
    // stopped being followed for some of the reasons explained above
    follower.stream_termination_callback(&on_stream_terminated);

    Sniffer sniffer("en0", config);

    // And start sniffing, forwarding all packets to our follower
    sniffer.sniff_loop([&](PDU &pdu) {
        std::cout << "Received packet:" << pdu.size() << std::endl;
        follower.process_packet(pdu);
        return true;
    });
}

А вот мой новый обратный вызов потока :

// New stream is seen
void on_new_stream(Stream &stream)
{
    std::cout << "New Stream: "
              << "client:" << stream.client_port() << " to " << stream.server_addr_v4().to_string() << ":" << stream.server_port() << std::endl;

    stream.client_data_callback(&on_client_data);
    stream.server_data_callback(&on_server_data);
}

Загружая домашнюю страницу Google с отключенным кэшем, консоль будет регистрировать большое количество «полученных пакетов» с соответствующим размером, ноне будет регистрировать что-либо, связанное с созданием нового потока.

no stream  started

Я протестировал, поддерживая работу программы и просматривая множество различных веб-сайтов иЯ иногда получаю записи, связанные с потоками, поэтому я полагаю, что весь код неверен?

Что-то не так с моим кодом? Есть ли более простой способ пересобрать размер моего TCP-потока?

Большое спасибо.

...