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