图片1 :上图(图片1)中是普通vpn连上后,4个ping包的抓包情况。接下来:
我把发出去的GRE包全部截获下来:192.168.3.33(设为A机)发往92.48.96.28(设为B机)的GRE截获下来,通过TCP来传到B机,B机再取出GRE包发给自己;B机发给A机的GRE包也做相同操作。上面只是说一下我的软件思路。问题在下面一张图:
图片2 :
http://p.blog.csdn.net/images/p_blog_csdn_net/okmnji79513/EntryImages/20090713/2.JPG
上图(图片2)中是我实现了我的思路,但是速度上有点问题。
从抓到的第1条数据开始是ping开始,
1-->2(这里的1、2指的是图中No那一列的序号)可以看出,从 截获到GRE数据包 到 被打包进TCP几乎没用时间。
3 是 B机返回的包含GRE数据包的TCP包。
4 是3中GRE包发向网关。
5 是 GRE包由网管发向A机。(此时 cmd中第一个ping的时间出来了)
6 参考 图1中的 3、6、9、12 。
7 是将6打包。
这时,关键的部分来了,8 出现(即第2个ping包发出)照理来讲,应该是8立即被打包并发送出去(即10,此过程类似1-->2),但是10并没有立即被发送出去, 而是TCP程序在等待9的到来(即7的确认帧),9到来后,10才被发出去,这样就导致了第二个ping的时间多了8、9之间的156ms。
第三个、第四个ping包有相同情况(即为等待9、17、...的到来多了时间)。请问该问题有无解决方案?(即图2中8之后一定要等9的到来才能发10吗? 7能不能和10 用同一个确认帧?)
我用A机向B机发一个文件(发文件 是A机向B机 单向发,照理应该是每个发向B机的包,都应该得到一个确认帧),但是,抓包时看到好像TCP并不是每一个包都有确认帧的,由此想到 7能不能和10 用同一个确认帧?ps: 图1、2中都是 192.168.3.33 ping向 92.48.96.28 ;A、B机都是win2003虚拟机 网卡桥接模式。
我把发出去的GRE包全部截获下来:192.168.3.33(设为A机)发往92.48.96.28(设为B机)的GRE截获下来,通过TCP来传到B机,B机再取出GRE包发给自己;B机发给A机的GRE包也做相同操作。上面只是说一下我的软件思路。问题在下面一张图:
图片2 :
http://p.blog.csdn.net/images/p_blog_csdn_net/okmnji79513/EntryImages/20090713/2.JPG
上图(图片2)中是我实现了我的思路,但是速度上有点问题。
从抓到的第1条数据开始是ping开始,
1-->2(这里的1、2指的是图中No那一列的序号)可以看出,从 截获到GRE数据包 到 被打包进TCP几乎没用时间。
3 是 B机返回的包含GRE数据包的TCP包。
4 是3中GRE包发向网关。
5 是 GRE包由网管发向A机。(此时 cmd中第一个ping的时间出来了)
6 参考 图1中的 3、6、9、12 。
7 是将6打包。
这时,关键的部分来了,8 出现(即第2个ping包发出)照理来讲,应该是8立即被打包并发送出去(即10,此过程类似1-->2),但是10并没有立即被发送出去, 而是TCP程序在等待9的到来(即7的确认帧),9到来后,10才被发出去,这样就导致了第二个ping的时间多了8、9之间的156ms。
第三个、第四个ping包有相同情况(即为等待9、17、...的到来多了时间)。请问该问题有无解决方案?(即图2中8之后一定要等9的到来才能发10吗? 7能不能和10 用同一个确认帧?)
我用A机向B机发一个文件(发文件 是A机向B机 单向发,照理应该是每个发向B机的包,都应该得到一个确认帧),但是,抓包时看到好像TCP并不是每一个包都有确认帧的,由此想到 7能不能和10 用同一个确认帧?ps: 图1、2中都是 192.168.3.33 ping向 92.48.96.28 ;A、B机都是win2003虚拟机 网卡桥接模式。
是 滑动窗口 不?刚开始看 TCP-IP详解 有点晕。
不是啊,我只是把 GRE 拦下来 不让它在网域网传,A运到B后(用TCP运),再将GRE发给B;B运到A后,同样再将GRE发给A。