首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jNetPcap确认值

jNetPcap确认值
EN

Stack Overflow用户
提问于 2016-11-17 22:21:59
回答 2查看 157关注 0票数 0

我正在尝试从tcp检索ack,就像wireshark返回的一样。在wireshark中,它返回ack为1或647。但是当我试图从数据包中获取ack时,它返回一个很长的数字,与ack wireshark返回的没有任何相似之处。

我得到了这些acks:

1918004163 3350411129 3083820792 1730247758 3668869711 4218577993

这是我的代码:

代码语言:javascript
复制
 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值?

EN

回答 2

Stack Overflow用户

发布于 2016-11-18 13:45:06

你不能。你在wireshark中看到的数字是在No.列中的数字,对吧?它们由wireshark分配,而不是数据包中提供的信息。

票数 0
EN

Stack Overflow用户

发布于 2016-11-19 02:06:52

Wireshark默认情况下显示TCP数据包的相对序列号。(即相对于在TCP连接开始时使用的实际序列号的序列号)。这使得查看/使用序列号变得更容易。

Wireshark中的TCP协议下有一个首选项,用于显示TCP绝对序列号( TCP数据包中实际使用的序列号)。

将Wirehark配置为显示绝对TCP序列号后,我希望它们与您使用代码获得的值相匹配。

读者练习:为什么每个TCP连接不以实际序列号1开头?:) :)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40657339

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档