我的服务器程序放在一台托管在IDC机房的服务器上,有10M带宽.可是有个问题,服务端在向客户端发送数据时出现流量不稳定的情况,造成客户的视频不流畅,很卡.我用工具监控了一下,发现服务端发送数据时每隔三秒每秒的数据发送量只有十几K至三十K,这样低流量连续9秒后又可以有三秒的高流量(每秒200K),单个连接最多只需120K.数据流量图如下略图:||| ||| ||| ||| |||
||| ||| ||| ||| |||
|||||||||||||||||||||||||||||||||||||||||||||||||||.....................(以秒计)
最高为200K左右,最低是在12-50K.我用的是UDP协议.如果我将客户端与服务器先连接成VPN的话问题就没有了,从头到尾都有差不多200K.而且在局域网内用也没问题.
我怀疑是服务器端有什么问题,可是又找不出理由,用http和ftp下载时流量都没问题,我用QQ发送文件时流量也正常(用UDP发送的).而且我也问过IDC,他们说他们对机房的网络没做任何限制.
可是说程序的问题吧,我也找不出问题出在哪了.局域网没问题,上公网用VPN连接也没问题.
郁闷,折腾了半个月了.
||| ||| ||| ||| |||
|||||||||||||||||||||||||||||||||||||||||||||||||||.....................(以秒计)
最高为200K左右,最低是在12-50K.我用的是UDP协议.如果我将客户端与服务器先连接成VPN的话问题就没有了,从头到尾都有差不多200K.而且在局域网内用也没问题.
我怀疑是服务器端有什么问题,可是又找不出理由,用http和ftp下载时流量都没问题,我用QQ发送文件时流量也正常(用UDP发送的).而且我也问过IDC,他们说他们对机房的网络没做任何限制.
可是说程序的问题吧,我也找不出问题出在哪了.局域网没问题,上公网用VPN连接也没问题.
郁闷,折腾了半个月了.
我对网络不太懂.看了您的回复,我想起了件事情.之前我在测公网连接时,客户端这边怎么都连不上.客户端是通过路由器共享上网的,可是我在路由器上做好了端口映射,而且我单独做了UDP服务端和客户端测试证明端口映射后网络连接和数据发送都没问题,可是我的客户端就是连接不上!用VPN可以.实在没辙了我就换了个路由器,结果一测问题解决了.可是接下来上面这个问题又来了,流量不稳定.
现在的问题不是不能通信,是可以连接上而且也可以收到数据,客户端发出的操作信息服务器端也可以及时响应,可就是服务器端发送的数据流不稳定,使客户端经常在等待数据.
另外你可以参考一下MYICQ的代码看看它是如何在INTERNET上实现UDP传输的.
我按您的建议测了一下,发现正常和不正常时的包大小都一样,区别只是每秒发送包的多少.另外我说的问题是出现在传输音视频的时候出现流量不稳的情况,所以不会有别的数据包.下面我把截获的取一段打出来,请帮我看一下.是用2000as的网络监视器监测的.
----------------------------------------------------------------------------------------
第一种连接式
服务器-------------| 互联网 | ---------ADSL MODEM-----路由器-----客户端
说明:在客户端的路器上已做好了相关的端口映射帧 时间 协议 描述 源地址 目标地址
40 11.031 UDP src port:8300 Dst port:1580 Length=12 Client Server
41 11.031 UDP src port:1580 Dst port:8300 Length=15368 Server Client
42 11.031 IP ID=0x2897 Proto=UDP Len:1500 Frag offset=1480 Server Client
43 11.031 IP ID=0x2897 Proto=UDP Len:1500 Frag offset=2960 Server Client
44 11.031 IP ID=0x2897 Proto=UDP Len:1500 Frag offset=4440 Server Client
45 11.031 IP ID=0x2897 Proto=UDP Len:1500 Frag offset=5920 Server Client
46 11.031 IP ID=0x2897 Proto=UDP Len:1500 Frag offset=7400 Server Client
47 11.031 IP ID=0x2897 Proto=UDP Len:1500 Frag offset=8880 Server Client
48 11.031 IP ID=0x2897 Proto=UDP Len:1500 Frag offset=10360 Server Client
49 11.031 IP ID=0x2897 Proto=UDP Len:1500 Frag offset=11840 Server Client
50 11.031 IP ID=0x2897 Proto=UDP Len:1500 Frag offset=13320 Server Client
51 11.031 IP ID=0x2897 Proto=UDP Len:588 Frag offset=14800 Server Client上面的第一和第二帧有一次测试出来竟然成下面这种:
11.031 RADIUS Message Type: Unknown Client Server
11.031 RADIUS Message Type: Unknown Server Client
但是看帧的内容还是可以看清包头的结构.
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
第二种连接方式(数据发送正常,没问题)
在第一种连接试的基础上将客户端与服务器连接成了VPN帧 时间 协议 描述 源地址 目标地址
235 175.203 UDP src port:8300 Dst port:1580 Length=12 Client Server
236 175.203 UDP src port:1580 Dst port:8300 Length=15368 Server Client
237 175.203 IP ID=0xF8D9 Proto=UDP Len:1396 Frag offset=1376 Server Client
238 175.203 IP ID=0xF8D9 Proto=UDP Len:1396 Frag offset=2752 Server Client
239 175.203 IP ID=0xF8D9 Proto=UDP Len:1396 Frag offset=4128 Server Client
240 175.203 IP ID=0xF8D9 Proto=UDP Len:1396 Frag offset=5504 Server Client
241 175.203 IP ID=0xF8D9 Proto=UDP Len:1396 Frag offset=6880 Server Client
242 175.203 IP ID=0xF8D9 Proto=UDP Len:1396 Frag offset=8256 Server Client
243 175.203 IP ID=0xF8D9 Proto=UDP Len:1396 Frag offset=9632 Server Client
244 175.203 IP ID=0xF8D9 Proto=UDP Len:1396 Frag offset=11008 Server Client
245 175.203 IP ID=0xF8D9 Proto=UDP Len:1396 Frag offset=12384 Server Client
246 175.203 IP ID=0xF8D9 Proto=UDP Len:1396 Frag offset=13760 Server Client
247 175.203 IP ID=0xF8D9 Proto=UDP Len:252 Frag offset=15136 Server Client
---------------------------------------------------------------------------------------采用第一连接方式时,快的时候可以发送10-12个包,每个包是15K,150-180K/s刚刚好,还可以有点多.可是慢的时候就只有一二个包了,这样慢的时间持续9秒,而快则只有三四秒.
采用第二种连方式时(VPN),每秒都可以发10包,而且不会断断续续.
局域网连接时监控到的与第一种方式一样,只是每秒所发送的包不一样,它和VPN方式一样,很稳定.请问一下,出现这种问题会的原因会是什么呢?我怀疑可能是第一个由客户端向服务器端发送的包没收到,所以服务器端不发送数据.但是令人困惑的是为什么这种情况又是有规律的呢?如果说因为网络不稳定造成丢包致使服务器收不到包,但也不至于每次连续9秒都丢包,过了三四秒后又有9秒丢包?!而且当连接成VPN后这种情况又不会存在了.实在是想不明白.