我试图从 tcp 中检索 ack,就像一个 Wireshark 返回的一样。在wireshark 中,它返回一个1 或647 的ack。但是当我试图从数据包中获取ack 时,它返回一个与wireshark 返回的ack 完全不同的长数字。
我得到这些确认:
1918004163 3350411129 3083820792 1730247758 3668869711 4218577993
这是我的代码:
if (packet.hasHeader(tcp) && packet.hasHeader(ip)) {
long tcpack = packet.getHeader(tcp).ack();
String name = packet.getHeader(tcp).getName();
int urgent = packet.getHeader(tcp).urgent();
int windowScaled = packet.getHeader(tcp).windowScaled();
int window = packet.getHeader(tcp).window();
int wirelen = packet.getCaptureHeader().wirelen();
// System.out.println("WireLen: "+wirelen);
int caplen = packet.getCaptureHeader().caplen();
// System.out.println("caplen: "+caplen);
String ipTypeString = ip.typeEnum().toString();
// System.out.println("IP Type: "+ipTypeString);
String ipDescription = ip.getDescription();
// System.out.println("IP Description: "+ipDescription);
byte[] dIP = packet.getHeader(ip).destination();
byte[] sIP = packet.getHeader(ip).source();
String sourceIP = FormatUtils.ip(sIP);
// System.out.println("Source IP: "+sourceIP);
String destinationIP = FormatUtils.ip(dIP);
// System.out.println("Destination IP: "+destinationIP);
int tcpPORTSource = tcp.source();
// System.out.println("TCP PORT Source:
// "+tcpPORTSource);
int tcpPORTDestination = tcp.destination();
// System.out.println("TCP PORT Destination:
// "+tcpPORTDestination);
if (sourceIP.equals("someip") && tcpPORTSource == 0000 && ipTypeString.equals("TCP")
&& wirelen == 1514) {
// System.out.println("TCP ack: "+tcpack+" name: "+name+ " urgent: "+urgent + " window scaled: "+windowScaled+ " window: "+window);
}
如何检索与wireshark 相同的ack 值?