第一步:
由于在NDIS是无法获取到进程信息的,但是可以获取到端口的信息
在TDI本地维护一张表,存储着进程和端口的对应关系.(获取进程信息和端口不难,我已经做好了,只需要关联起来即可)

第二步:
NDIS通过函数来向TDI查询这张进程和端口对应的表,然后限制某个端口的流量信息(难点:要搞清楚TDI和NDIS是如何进行通信的,因为TDI和NDIS需要通信)

第三步:
如何限制某个端口的流量?什么原理?采用延迟处理或者丢包处理是个不错的选择.

如果在原来的TDI的基础上能够完成进程网络限速的功能呢?
//进程网络限速总体设计方案//
总结的技术要点如下:
TDI来丢上传(即发送数据包)
NDIS来丢下载(即接收数据包)

衍生出一个问题:
丢包和延迟的区别?(自己测试)
TDI丢包和NDIS的丢包是什么区别?(自己用tdifw和passthru分别测试下)

结论是:
对于发送包来说:
到了NDIS 其实都可以算发送成功了(函数会返回ok) 期间再出错误  由协议保证重传
对于接收包来说: 
进了TDI层也算传输成功了  如果你收到的包在TDI层丢  协议不会重传

注意事项:
TCP和UDP是需要分开来处理的,TCP中有心跳包机制和重传机制

将ip地址信息和端口信息以及进程id信息从ALE层传输到tcp和udp层进行解析.

1 改善好ip connect获取部分
2\解析udp中的数据
3\解析tcp中的数据
4\屏蔽了进程监控函数里面的代码,最后的时候再添加上去.

tcp中能获取ip地址和端口
ip中也能获取到ip地址和端口 测试下这两层获取到的ip地址有什么区别?

另一个思路是使用NDIS Hook + tdi来实现限速,这个我也实现了

windows xp下使用TDI+NDIS实现进程网络流量限速(设计文档)相关推荐

  1. 用Javascript代码实现浏览器菜单命令(以下代码在 Windows XP下的浏览器中调试通过

    每当我们看到别人网页上的打开.打印.前进.另存为.后退.关闭本窗口.禁用右键等实现浏览器命令的链接,而自己苦于不能实现时,是不是感到很遗憾?是不是也想实现?如果能在网页上能实现浏览器的命令,将是多么有 ...

  2. Windows XP下Service的编程入门[2]

    Windows XP下Service的编程入门[2] // _dse.cpp : Defines the entry point for the console application. // 作者: ...

  3. Windows XP下Service的编程入门[1]

    Windows XP下Service的编程入门[1] // _dse.cpp : Defines the entry point for the console application. // 作者: ...

  4. 在windows xp下,一块网卡绑定多个ip

    通常在windows xp下,一块网卡只能绑定一个IP,这给我上网带来诸多不便.因为我在单位和在宿舍使用笔记本时,需要分别设置IP.Gateway.DNS,重新设置一个网络连接,前一天晚上在宿舍改好了 ...

  5. 局域网本地连接计算机,Windows XP下让电脑通过无线网卡共享本地连接实现局域网共享宽带上网...

    有时候,宿舍只有一根网线,而有3.4台笔记本需要上网,这时,我们该怎么办呢? 下面就让我们来看看吧!Windows XP下让电脑通过无线网卡共享本地连接实现局域网共享上网. 主要实现了一台使用网线连上 ...

  6. windows xp下如何安装SQL server2000企业版

    [转自] http://www.xici.net/u15162693/d80638995.htm windows xp下如何安装SQL server2000企业版 SQL2000企业版本适用于WIN ...

  7. Windows XP 下如何安装 SQL server 2000 企业版

    windows xp下如何安装SQL server2000企业版 SQL2000企业版本 适用于WIN 2000系统,2003系统和XP一般装不了,需要选用个人版(其中,XP系统也可以 安装开发版,功 ...

  8. xp计算机怎么共享网络,windows XP下如何实现共享上网的方法

    通常来说共享本地连接的电脑即网关电脑要有两块网卡(其中一块是有线或无线网卡),并且有交换机或集线器等网络设备,电脑与电脑之间通过网络设备或无线局域网连接下面是学习啦小编为大家整理的关于windows ...

  9. 如何在windows XP下安装基于apache或者IIS的bugzilla

    如何在windows  XP下安装基于apache或者IIS的bugzilla 一.安装 1.安装前准备 ⑴mysql-5.0.45-win32.zip ⑵mysql-gui-tools-noinst ...

最新文章

  1. istringstream ostringstream stringstream
  2. vivado----fpga硬件调试 (一)----mark_debug
  3. Ubuntu16.04安装CUDA8.0时,提示:The driver installation is unable to locate the kernel source.
  4. 【深度学习】深度学习中的知识蒸馏技术(上)简介
  5. stm32超声波扫频_基于STM32的脉冲式及扫频式超声波除垢信号源设计
  6. 祝贺本刊编委石勇教授入选2016年汤森路透全球高被引科学家
  7. 计算机关机后耗电问题,不用拔电线 轻松设置解决电脑关机耗电
  8. 四川大学计算机软件技术基础,四川大学《计算机软件技术基础》复习题2及答案#.doc...
  9. 可任意自定义的UITableViewCell(转)
  10. 最新python中一升级所有已安装的包方法
  11. jeb配置java环境_android逆向工具Jeb第一次启动
  12. 模板引擎jade/ejs,模板适配
  13. 伽马校正(Gamma Correction)
  14. 快速学习一门技术的逻辑
  15. Js实现炫酷随机抽人
  16. 【经典详解】<T> T 和 T的用法和区别,public <T> List<T> f(T a){}的详解
  17. 介绍几款网页数据抓取软件
  18. 蓝鲸CMP:跳出云管看云管
  19. ps cs6移除html,ps cs6清除照片中不想要的杂物教程
  20. 汉子字符转换成大写英文字母开头。。

热门文章

  1. 2023届秋招总结_嵌入式软件开发
  2. 疫情、失业,2022,我们高喊着摆烂和躺平!
  3. 智慧校园三维可视化决策系统平台(数字孪生)-解决方案开发案例
  4. java控制灯_Java使用桥接模式实现开关和电灯照明功能详解
  5. 高端电视画质,专业游戏性能,三星Neo QLED这样俘获玩家
  6. 实例:Qt | 百度语音识别
  7. jquery手机端页面下拉刷新,上划加载更多
  8. 讲解 ssh-keygen -t rsa -b 4096 命令表达的意思
  9. 【rzxt】笔者支招:使用iPad的SBSettings软件的操作技巧
  10. python画椭圆形函数算法_python数字图像处理(12):基本图形的绘制