我想制作一个开关循环(在java中),其情况是存储在pcap文件中的数据包的ip头协议。
我正在使用 jnetpcap 库来访问数据包。
我知道如何从数据包中获取 IP 地址、端口号等,但我想知道是否有一个函数可以直接告诉我数据包的协议,即 tcp、udp、icmp 等。如果他/她也可以建议知道任何其他具有这种功能的库。
提前致谢。
我自己找到了答案:
使用 JNETPCAP 库,
对于 TCP/IP 堆栈:我们可以根据 tcp 标头的端口号获取协议
以下链接给出了不同协议对应的端口号: http ://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xml
在 jnetpap 中获取协议:
PcapPacket packet =//从某处获取
Tcp tcp = 新的 Tcp();
Ip4 ip = 新 IP4();
if(packet.hasHeader(ip)&&packet.hasHeader(tcp)){
if(tcp.source()==80){
System.out.println("HTTP 协议");
else if(tcp.source==23)
System.out.println("Telnet 协议");
}
存在 jpcap 库,其中内置函数可用于提取数据包协议和其他详细信息。