最近有个问题比较棘手:网络状况不良的情况下(是指丢包,并非拥塞),tcp的使用状况很不理想,要求尽量通过软件办法解决。TCP基本是靠重传来保证数据的准确到达。但大部分算法的基本思想是:丢包是由于网络拥塞导致的,一方面降低发送速率;另一方面出现重传时根据往返时间和重传次数不断增大重传的时间间隔。像NewReno快速重传和快速恢复算法,SACK算法都不能有效的改善由于传输介质的原因引起的丢包问题。上网查找到一个叫做Westwood的算法,据介绍此算法对付这种情况比其他算法更有效。但是其实现代码在网上很难找到,只在一个网络仿真软件NS-2上有其实现代码,但那个代码不是基于某个TCP/IP协议栈而写的,只是针对那个仿真软件而作,要在我们的协议栈中实现还有点难度,估计得花点心思才能搞定,可能就这个问题而已都不一定有效。这里既然说到网络仿真软件,给大家介绍两个知名的:NS-2与OPNET。NS-2主要运行于linux,也有windows版本,但是编译起来比较麻烦,开源的;OPNET绝对是专业级的,正版的非常贵,如果哪位仁兄有盗版的请私人分享一下,因为我也没用过。迟点打算把NS-2在windows上跑起来,调试网络没个象样一点的工具实在不像话啊,正所谓:工欲善其事,比先利期器。用来用去都只能用sniffer pro抓包看看网络数据正常与否,有些想法有时又很难在实际网络中模拟,因此如果有个仿真环境能先证实一下想法,那真是最美不过了:)
![](https://i-blog.csdnimg.cn/blog_migrate/5a23052a871149843d8fe34672e1bd7a.gif)