window filter platform (wfp)修改TCP数据包的方法

问题描述:使用WFP重定向了TCP链接到本地localhost后,为了能够告诉应用层原始链接的地址和端口,需要修改数据包,即在三次握手后插入一个自定义包。在实现这个小小功能时,遇到了不少问题,走了很多弯路,希望在此记录一下,以备不时之需,也希望能够对有需要的朋友有所帮忙,因为WFP驱动,基本没有中文资料,所有的资料和问题都需要亲自到MSDN找,也是大费周折。
很显然,TCP的重定向,参考了MSDN的资料后(tcp重定向之MSDN资料),很快的实现了重定向到本地服务进程,但是要让服务进程知道原始链接的地址和端口,我一开始是在FWPM_LAYER_OUTBOUND_TRANSPORT_V4这一层去设置ClassiFy回调函数,因为按照数据传输流程,在这一层,数据包已经包含了TCP头,所以要想在这里改变数据包,十分困难,需要自行维护SYN和ACK计数,这基本是出力不讨好的事,很容易出错。经历了两周的不同方法的尝试,最后在FWPM_LAYER_STREAM_V4这一层设置回调函数,成功的改变了数据包的内容,之所以能成功,是因为这一层,数据包还没有进行任何的tcp或者ip组包,这就不需要自己去维护SYN和ACK计数,十分方便,只要判断好streamFlag是FWPS_STREAM_FLAG_SEND还是FWPS_STREAM_FLAG_RECV就可以控制数据了。就这么一个简简单单的问题,我曾在MSDN发帖相问,也没人愿意解答,所以就只能自己摸索,这里因为商业的事情,就不再贴代码了,不过已经将解决类似问题的方法给了出来。
此外,很有必要了解一下WFP分层模型的数据传输流程(tcp数据传输流程)。在国内,因为不能再方便的使用谷歌搜索,用百度基本无法搜索这些技术问题,所以推荐使用必应搜索,搜英文关键词,或者直接到MSDN搜索关键词或者相关的WFP的API,基本都能找到要找的东西。
因为我的职业规划是先成为一名架构师,也希望在大数据这方面有所作为,所以不想再从事驱动或者纯PC客户端软件的开发。如果有架构师或者大数据这方面的牛人,还希望能够指点一二。如果牛人你希望能够方便的交流,可以加群——496187602(本群宗旨:阅好书,乐分享,善交流,施仁义,绘人生,追梦!),不愿意交流,不愿意分享者勿扰!

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论
如何修改TCP/IP并发连接数,网络上提供不少修改办法,但其中有不少是行通的,本文将做详细分析. 一、注册表修改法的误区 为了突破SP2对TCP并发连接数的限制,网上曾经流传过一种修改注册表的方法,操作步骤如下: 单击“开始”/运行,输入Regedit打开注册表,定位到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters下,修改的“TcpNumConnections”的键值,将之由10改为150,即设置TCP最大并发连接数为150。 经过实际测试,我们发现该方法看起来有效,但实质上并不能突破并发连接数限制,提高SP2的多线程访问速度。因为SP2对线程数目的控制,是通过“Tcpip.sys”这个系统文件来实现的,并不是通过注册表实现的,因此,该方法不能增加SP2的TCP并发连接数。 二、使用工具来替换Tcpip.sys 为了突破SP2的TCP并发连接数限制,正确地方法修改Windows XP SP2的系统文件Tcpip.sys。Tcpip.sys是Windows XP SP2重要的系统文件,位于“C:\Windows\system32\drivers目录下。该文件由于平时受到系统保护,所以正常情况下你是无法替换它的,必须在安全模式或纯DOS模式下才能替换,建议你使用以下专门工具、来替换“Tcpip.sys”文件,操作步骤如下: 从网上http://www.lvllord.de/download.php?url=en/EvID4226Patch223d-en.zip下载替换工具(仅为30KB),用它来修改系统文件Tcpip.sys最大安全并发连接限制;然后备份一下C:\Windows\system32\drivers\Tcpip.sys文件。 接下来,双击打开下载文件ZIP压缩包,运行其中的替换工具EvID4226Patch.exe,随之将弹出一个命令行提示符窗口,首先显示Windows当前的Tcpip.sys文件版本,以及并发连接的限制数值(默认为10);接着询问你是否将连接数限制在50,你可以选择“Yes/No/Change”,如果你输入“Y”,则会将并发连接数改为“50”,如果想改为其他数(例如150),可以在提示符后输入“c”,然后输入最大的并发连接数(例如150)回车,最后在提示符下输入“Y”并回车,这样就替换了Tcpip.sys文件;Tcpip.sys文件被替换后,随之会弹出系统文件保护对话框,你可以点击“取消”按钮,然后点击“是”按钮,重新启动后,Tcpip.sys文件的替换就大功告成了! 现在你的最大并发连接数已超过10个,达到了150个,因此Windows XP SP2的多线程访问速度得到了提升,当你用FlashGet、BT等多线程下载时,就不会感到网络带宽的限制了。 三、DOS下修改Tcpip.sys文件 以上替换程序EvID4226Patch.exe也可以在DOS下使用,方法是:首先把EvID4226Patch.exe拷贝到C盘根目录下;然后再进入DOS模式,进入C盘根目录,输入命令EvID4226Patch/L=$n$/w=C:\WINDOWS\system32\drivers/L=tcpip.sys即可修改Tcpip.sys文件。 注意:以上$n$为你要设置的最大安全连接数,假如要把最大并发连接数设置为150个线程,那么输入命令EvID4226Patch/L=150/w=C:\WINDOWS\system32\drivers/L=tcpip.sys即可。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zxhyxwwu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值