golonely 发表于 2009-8-26 17:04:43

wireshark如何得出next sequence number分析与简介

在一开始接触TCP/IP的时候,我就时常注意到wireshark中出现一类的提示,我就在想,那Next sequence number是记录在数据包中吗?如果是,为什么我又找不到它呢?如果不是,那wireshark又是如何知道下一个包的sequence number的呢?

呵呵,好在本人还懂点C,不然就还真的是没有办法去弄清楚这个问题的所在了.不说废话了,进入正题:

第一步:
既然是要知道wireshark是如何得出这个值的,当然是"问"wireshark了.从网上立马download了一份源码,找到/epan这个目录,在这个目录中有packet-tcp.c这个文件.

第二步:
分析packet-tcp这个文件,找出关于Next sequence number.我已经找好了,也就不用大家再去头疼这个问题了,且看下面:

    /* next sequence number is seglen bytes away,
       plus SYN/FIN which counts as one byte */
    ual->nextseq=seq+seglen;
    if( flags&(TH_SYN|TH_FIN) )
    {
        ual->nextseq+=1;
    }
不管如何,我还是来解释下这个代码的意思:
"Next sequence number为当前sequence number+当前tcp包的负载的的长度,如果SYN或FIN位其中任意一位为1的话,则Next sequence number还需要再加1"
第三步:
再回头看看图片中:当前的sequence number: 1;len: 776; flag: 0x10(ACK); next sequence number: 777;
呵呵:) ,天终于睛了...
{想传图片,但不知道如何传,对不住了.我把相关的文件以附件的形式传上}

golonely 发表于 2009-8-26 17:05:23

申请加精(原创)

Vader 发表于 2009-8-26 22:40:48

很好的一种分析方式, 通过wireshark代码来加固学习深度.
这是TCP/IP中比较基本的知识, 但通过这种方法以后更加令人印象深刻.
如果楼主可以制作一个类似的系列的话, 是很好的精华帖候选

bacoloc 发表于 2009-11-10 16:56:23

回复 1# golonely 的帖子

很好,正好解惑。谢谢

zheng252635 发表于 2009-11-18 21:39:22

当前序列好为1,为什么要跳过包长776呢?1+776?
next sequence number 是777,
那中间的776个sequence number都不用了吗?

心之所在 发表于 2009-11-19 20:17:26

申请加精(原创)

wildlifexs 发表于 2009-12-4 22:53:31

的确是好帖,因为是原创

canonaa 发表于 2010-1-24 12:44:59

好贴

NSTcisco 发表于 2010-4-7 21:50:46

好帖,学习了,谢谢楼主

pelucoola 发表于 2010-4-13 16:37:41

不好意思,这个应该是协议的规范。。。跟wireshark有啥关系。。。

salmon5 发表于 2010-4-25 21:52:54

楼主这个叫逆向学习啊,NAI Sniffer  也有这个,叫
next expected seq number,不过不明白,为什么不叫 next  expected Ack number?

salmon5 发表于 2010-4-25 22:04:16

明白了
A------->B  seq      ack
B------->A  seq       ack
A------->B  seq       ack       这个包才算next expected.
页: [1]
查看完整版本: wireshark如何得出next sequence number分析与简介