Моя программа выполняет анализ пакетов. Теперь у меня проблема с DNS/Radius. DNS использует UDP-порт 53. Radius использует UDP-порт 1645/1646/1812/1813.
Логика такова, если я вижу 53, то это пакет DNS; если я вижу 1812... это пакеты Radius. Затем возникает проблема, некоторые пакеты DNS также используют порты Radius, например. Порт UDP src 53/dst 1812 или наоборот. Тогда моя программа не может справиться с этим.
Но wireshark не путается, мне интересно, как он способен знать истинный протокол. Пытается ли он декодировать полезную нагрузку? а потом рассказывать? или подчеркивание libpcap или что-то еще может указать истинный тип протокола. Итак, если я могу использовать код из libpcap, предоставляет ли libpcap функциональность для указания протоколов переноса?
Кто-нибудь может помочь? Я некоторое время гуглил, но пока не получил результатов.
Спасибо Канг