Chinaunix

标题: TCP next sequence number问题求助,可能有些难度 [打印本页]

作者: archills    时间: 2008-12-18 16:04
标题: TCP next sequence number问题求助,可能有些难度
最近在使用wireshark的text2pcap工具生成一些报文(写培训材料用) , 偶然我发现wireshark的tcp head中,还有一个神奇的字段:Next sequence number: 733    (relative sequence number)  ,
假如我现在的sequence number =1 , 那么这个 733 = 1 + 732  , 732 正正好好是我应用的报文大小。
后面的发送报文,假如我的sequence number不是733 ,wireshark就会提示 out of order .

一些补充说明:
A-->B    Sequenace number =1
             Next Sequence Number = 733
             Acknowledgement number=1

B-->A  ..... 略

A-->B     Sequence number =733   这里,sequence number必须为733 ,否则wireshark 报out of order
              Next Sequence number= 926
              Acknowledge number = 23

我的问题:这种检测机制是哪个规范定义的?

[ 本帖最后由 archills 于 2008-12-18 16:09 编辑 ]
作者: ssffzz1    时间: 2008-12-18 16:18
这个啊,这个根本不是IP头部的字段,而是改分析软件的一个提示信息而已,具体你可点击改信息看下面是否有解码显示就知道了。

是wireshark 自作聪明的表现之一。
作者: archills    时间: 2008-12-18 16:25
感谢,我知道next sequence number 的确不是TCP报文以及IP报文头的字段,wireshark也很清楚的表明了这个是它添加上去的字段。
我要提醒一下的是,这个不是我咨询的问题。


我抓了实际应用的TCP报文,如telnet , 真实应用的报文也符合这个机制。 也就是下一个sequance = 前一个 sequence + 报文大小;

我的问题其实就是,这种机制是在什么规范里面定义的。

[ 本帖最后由 archills 于 2008-12-18 16:26 编辑 ]
作者: ssffzz1    时间: 2008-12-18 16:28
哦,具体的那个RFC记不住了。
反正是TCP的协议规范规定的。
就是TCP的序列号机制了。大致就是ACK=SEQ+包长度。 记得好像是的。
作者: archills    时间: 2008-12-18 16:42
标题: 回复 #4 ssffzz1 的帖子
我今天从早上10:30 ,一直google到15:00 ,都没有斩获, 可否请帮忙看看 orz
作者: tomyung    时间: 2008-12-18 16:47
RFC 793
作者: archills    时间: 2008-12-18 17:08
793是第一个读的,不过没有找到关于next sequence number的处理机制
提醒一下:Acknowledgement number 不在这个讨论范围之内。
作者: archills    时间: 2008-12-18 17:19
网络有点问题,重复发了,抱歉
作者: ssffzz1    时间: 2008-12-18 18:08
哦,SEQ=SEQ+报文长度,并且持续累加。
作者: tomyung    时间: 2008-12-19 01:13
RFC793的标题是
                     TRANSMISSION CONTROL PROTOCOL
                                    
                                    
                         DARPA INTERNET PROGRAM
                                    
                         PROTOCOL SPECIFICATION

既然是   PROTOCOL SPECIFICATION ,sequence number的处理它不会提到?

建议楼主看RFC的时候还是别看的太快了。。。它不是所有概念都用公式来表达的,文字也要多注意下。

你光改next sequence number这个值,但不修改A->B这个包的长度和其它相关参数也是不行的。
作者: archills    时间: 2008-12-19 09:04
在下愚钝,可否具体指出一下793中,哪个部分描述了这个。
  
另外我自己可以按照这个规则造出合法的报文,这个部分无需讨论。

我的问题一直是: 的确有next sequence number = current sequence number + segment size 这个规则,

这个规则是哪里定义的 ?
作者: tomyung    时间: 2008-12-19 09:45
3.3.  Sequence Numbers

具体内容我就不贴了,如果想了解所有的异常处理机制,建议还是把RFC 793通读一遍。

补充一下:想理解TCP,双向的数据流都要关注,只看一个方向的数据还是不够的。

[ 本帖最后由 tomyung 于 2008-12-19 09:49 编辑 ]
作者: archills    时间: 2008-12-19 09:51
的确是section 3.3 , 根本的因素是acknowledgment number 是确认的收到的报文字节数
有些基本概念搞错了,所以想了很久,感谢大家的热情相助。

非常感谢tomyung 兄。

[ 本帖最后由 archills 于 2008-12-19 09:54 编辑 ]
作者: coolgg    时间: 2008-12-19 11:19
嗯,认真看书就是收获多!
可惜这年头能认真看书的人太少。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2