首页
社区
课程
招聘
[注意]tinytcp R27全双工测试通过
发表于: 2010-5-13 17:12 12113

[注意]tinytcp R27全双工测试通过

2010-5-13 17:12
12113
最新代码见
http://code.google.com/p/tinyshell/source/checkout

R27版本互联网全双工收发3M文件测试通过

主要更新如下
1、添加了TCP拥塞控制
2、添加TCP SACK选项支持
3、修正了测试时断网问题,测试只能使用tcp 9910端口
4、修正了(或添加)N个小bug

编译时候注意设置好include和lib目录,以及预定义_WINDOWS_APP_
测试bin见
http://code.google.com/p/tinyshell/source/browse/#svn/trunk/test_bin
tcp_recv.exe [port]
tcp_send.exe filename [ip] [port]

运行测试程序,双机(或虚拟机)不要在本机上同时运行接受端和发送端

接受文件测试:绑定ip 192.168.16.43 9910
tcp_sock.exe -l 192.168.16.43 9910 c:\test.zip

发送文件测试:连接到192.168.16.44 9910
tcp_sock.exe -c 192.168.16.44 9910 c:\test.zip

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

上传的附件:
收藏
免费 0
支持
分享
最新回复 (16)
雪    币: 66
活跃值: (940)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
传说中的沙发。

强啊
2010-5-13 17:40
0
雪    币: 4
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
学习学习,谢谢
2010-5-14 08:12
0
雪    币: 288
活跃值: (70)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
4
感兴趣,有空看看
2010-5-14 08:56
0
雪    币: 7309
活跃值: (3788)
能力值: (RANK:1130 )
在线值:
发帖
回帖
粉丝
5
还带一个防火墙驱动?
2010-5-14 09:40
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
支持楼主,加油!!
2010-5-14 11:45
0
雪    币: 1233
活跃值: (907)
能力值: ( LV12,RANK:750 )
在线值:
发帖
回帖
粉丝
7
因为测试需要一个收发原始以太帧的接口,同时为了避免系统的干扰包(winpcap不能丢包),所以就用来个防火墙驱动,这个驱动只是测试tcp用的,顺便说一下,这个驱动是debug版本的,呵呵
2010-5-14 11:45
0
雪    币: 1233
活跃值: (907)
能力值: ( LV12,RANK:750 )
在线值:
发帖
回帖
粉丝
8
添加了ACK捎带机制,收发效率以及性能基本上和系统的socket一致,模拟互联网环境测试-使用tcp全双工收发300k测试文件[SVN版本R23], 结果见附件:
1、R22未支持ACK捎带
总共通信产生了892个数据包,29秒收发完成,收发速率不一致,接收先完成
2、R23支持ACK捎带
总共通信产生了819个数据包,24.5秒收发完成,收发速率基本一致
3、系统socket
总共通信产生了719个数据包,22.1秒收发完成,收发速率基本一致

实际互联网全双工通信测试未通过,表现为接受ok!但是发送未能完成,最后一直重发,速度极慢,单独发送测试ok,不知哪位兄台提示下?
上传的附件:
2010-5-15 18:55
0
雪    币: 288
活跃值: (70)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
9
把#include 《IPHlpApi.h》改为#include "IPHlpApi.h",编译通过,还没有测试。
楼主能否把这个防火墙驱动也开源。
2010-5-18 14:54
0
雪    币: 288
活跃值: (70)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
10
还有tcp_send和tcp_recv的源码呢?
另外测试时只用tcp_sock就可以吧?
2010-5-18 14:55
0
雪    币: 1233
活跃值: (907)
能力值: ( LV12,RANK:750 )
在线值:
发帖
回帖
粉丝
11
驱动是debug版本的,呵呵,最基本的NDIS HOOK做的一个防火墙驱动,涉及到一些职业道德的原因,不方便开源了,主要是这个不是项目的重点
测试的时候,只需要test_socket就可以了,现在全双工在实际互联网环境下测试,尚有一些问题,主要是速度控制不好造成的,一旦进入拥塞超时的话,就比较难恢复,我现在准备参考RFC3042,不知道能否处理好,我发现lwip拥塞处理好像也不是太标准?tcp协议还是很麻烦的~
2010-5-18 23:04
0
雪    币: 288
活跃值: (70)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
12
我看了一下源代码,我个人感觉这个驱动是相当于winpcap的功能,程序从中得到数据,然后处理,而不仅仅是获得网卡接口,我这样理解对么?
2010-5-19 08:51
0
雪    币: 1233
活跃值: (907)
能力值: ( LV12,RANK:750 )
在线值:
发帖
回帖
粉丝
13
没错,但是winpcap不支持丢包,所以如果用来测试会收到系统tcp干扰,所以我设置的防火墙过滤规则是,将所有的tcp端口9910的数据包DROP掉【防止系统干扰】,并GET到RING3处理。
2010-5-19 10:18
0
雪    币: 288
活跃值: (70)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
14
OK,明白了。
另外还有两个问题请教。
1、tcp_sock -l 参数实际上已经建立了侦听端口,但使用netstat查看不出来。我知道端口是为了协议复用从tcp/udp层才出现的,请问此程序为什么没有出来呢?
2、为什么不支持回环,也即一个机器的收发处理?
2010-5-19 10:55
0
雪    币: 1233
活跃值: (907)
能力值: ( LV12,RANK:750 )
在线值:
发帖
回帖
粉丝
15
1、因为我用的是自己写的TCP协议,netstate只能查看系统的tcp连接
2、因为回环的时候,ndis不能hook到网络数据
2010-5-19 11:17
0
雪    币: 288
活跃值: (70)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
16
谢谢回答,期待楼主继续完善此程序,能把端口显示出来,呵呵。
另外,为什么ndis hook不到数据,如何才能hook到? winpcap应该是可以得到的
2010-5-19 11:21
0
雪    币: 1233
活跃值: (907)
能力值: ( LV12,RANK:750 )
在线值:
发帖
回帖
粉丝
17
话说显示出来端口就不好玩了,那还费这牛劲干嘛,另外winpcap也是工作在协议层,和ndis hook是一样的,劫不到环回的数据包的
2010-5-19 12:01
0
游客
登录 | 注册 方可回帖
返回
//