wireshark源码分析 是怎么完成协议识别的

代码流程

通过process_packet_single_pass处理单个数据包,每层数据包都会使用decode_udp(tcp)_ports识别协议,这里面提供端口和特征识别;

端口识别:dissector_try_uint_new

在接口内通过find_uint_dtbl_entry

如果是一个HTTP数据包,在这里就会通过接口获取key为80的对象。

特征识别:dissector_try_heuristic

关于特征识别,wireshark是不太注重的,因为其使用场景多为协议分析,读取文件的形式。对于特征流量都会通过协议首选项随时配置。

在接口里面

那么怎么让协议支持特征识别,才是话题里关心的。在wireshark中,他所有的协议相关操作,都是通过一个全局变量处理的,变量的内容就是一个关于接口描述和接口回调的成员。所有协议都在里面,我们以http示例。

这个文件的位置在

build/epan/dissectors/dissectors.c

变量名:注册解析处理回调

dissector_reg_handoff

其中http特征位置在

proto_reg_handoff_message_http接口,看一下里面做了什么

很简单,对比其他工具特征识别逻辑(比如suricata的hyperscan),wireshark针对特征识别真的很简单。。。。。。。

相关推荐
雪度娃娃4 小时前
ASIO异步通信——服务器网络层和逻辑层设计
开发语言·网络·c++·php
treesforest5 小时前
如何查IP归属地?IP地址归属地查询的三种方式与选型指南
网络·数据库·网络协议·tcp/ip
zzzsde5 小时前
【Linux网络】传输层协议UDP
linux·服务器·开发语言·网络·算法·udp
星恒讯工业路由器5 小时前
WiFi 安全技术演进全解析:从 WEP 到 WPA3 的迭代与安全蜕变
网络·安全·wifi·信息与通信
中基数联软件造价5 小时前
第三方软件造价评估服务如何助力政务信息化合规?辽宁新规提供政策依据
网络·数据库·政务
zt1985q5 小时前
本地部署服务器聚合平台 MCPHub 并实现外部访问
运维·服务器·网络·网络协议
wanhengidc5 小时前
服务器如何高效防御网络攻击
运维·服务器·网络
ylscode5 小时前
微软 Defender 新增自动隔离功能:智能遏制网络攻击的双刃剑
网络·安全
Shingmc35 小时前
Reactor反应堆模式
linux·网络
LT101579744415 小时前
2026年AI自动化测试工具怎么选?智能化测试工具测评对比
测试工具·ai·自动化