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;
呵呵:) ,天终于睛了...
{想传图片,但不知道如何传,对不住了.我把相关的文件以附件的形式传上} 申请加精(原创) 很好的一种分析方式, 通过wireshark代码来加固学习深度.
这是TCP/IP中比较基本的知识, 但通过这种方法以后更加令人印象深刻.
如果楼主可以制作一个类似的系列的话, 是很好的精华帖候选
回复 1# golonely 的帖子
很好,正好解惑。谢谢 当前序列好为1,为什么要跳过包长776呢?1+776?next sequence number 是777,
那中间的776个sequence number都不用了吗? 申请加精(原创) 的确是好帖,因为是原创 好贴 好帖,学习了,谢谢楼主 不好意思,这个应该是协议的规范。。。跟wireshark有啥关系。。。 楼主这个叫逆向学习啊,NAI Sniffer 也有这个,叫
next expected seq number,不过不明白,为什么不叫 next expected Ack number? 明白了
A------->B seq ack
B------->A seq ack
A------->B seq ack 这个包才算next expected.
页:
[1]