Zhang_Jiawen
4 Beryllium

Re: 如果看了这个你还是不会用Wireshark,那就来找我吧(8月6日完结)

好像还是看不到附件。可以再试一下吗?按照Jason提到的那个帖子里的方法。

0 项奖励
yot1
2 Bronze

Re: Re: 如果看了这个你还是不会用Wireshark,那就来找我吧(8月6日完结)

附件是发送端抓的包。

同样的信息发送,正常情况和异常情况。

异常情况中可以看到的ack742多次重复。发送端也多次重传!

这次看到win窗口是变小了···是缓冲区问题吗。

0 项奖励
bairichard1
3 Argentum

Re: Re: 如果看了这个你还是不会用Wireshark,那就来找我吧(8月6日完结)

能否抓个完全的包,比如用Wireshark或者tcpdump命令?
0 项奖励
yot1
2 Bronze

Re: 如果看了这个你还是不会用Wireshark,那就来找我吧(8月6日完结)

呃,在linux下,这是tcpdump抓的。

不完全是指传送信息没显示全吗?

其他的好像都全的吧?

0 项奖励
bairichard1
3 Argentum

Re: 如果看了这个你还是不会用Wireshark,那就来找我吧(8月6日完结)

example:

tcpdump -i eth0 -w /tmp/tcpdump.cap

这样存下来的才是完整的包。

0 项奖励
yot1
2 Bronze

Re: Re: 如果看了这个你还是不会用Wireshark,那就来找我吧(8月6日完结)

呃,重新上传了。有劳~

0 项奖励
bairichard1
3 Argentum

Re: 如果看了这个你还是不会用Wireshark,那就来找我吧(8月6日完结)

分析完了:

10.98.128.21在给183.129.202.122传数据的过程中,有些时间段网络包会一直丢失,所以就出错了。至于在网络中哪个节点丢失的,我们从这个包中无法得知。两端的接收窗口都没有问题,问题出在网络上。

0 项奖励
yot1
2 Bronze

Re: 如果看了这个你还是不会用Wireshark,那就来找我吧(8月6日完结)

21不是会一直重传吗,但是一直传不过去,这时候122是可以给21传数据的。

21也能收到,只是发不出去,堵在重传了。

这种情况只能断掉连接重连了吗?

0 项奖励
bairichard1
3 Argentum

Re: 如果看了这个你还是不会用Wireshark,那就来找我吧(8月6日完结)

是的,21一直尝试重传一个长度为1452的数据段,但是传不过去。它也能收到122发过来的包,但是没有用,业务(应用层)要求的是21把数据传给122。这种情况下即便断掉重连也不一定能解决,因为如果网络很差,你传着传着还是会连续丢包。不过有时候断掉重连恰好碰上网络状况好转,就显得似乎是通过重连解决的样子。

就像感冒之后一直吃维生素C,吃着吃着就好了,但是我们无法判断维C有没有起作用一样。

0 项奖励
yot1
2 Bronze

Re: 如果看了这个你还是不会用Wireshark,那就来找我吧(8月6日完结)

嗯,又抓了几次包,看到重传有时候能过去,有时候死活过不去。

网络环境如此,看来只能从其他方面想想怎么解决了。

非常感谢peiman和jiawen,在这里了解了tcp很多。

0 项奖励