| |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| -> 网络协议 -> Windows 批量添加删除路由资源性能优化 -> 正文阅读 |
|
|
[网络协议]Windows 批量添加删除路由资源性能优化 |
|
? 首先,本文只涉及如何优化Windows批量添加删除路由资源的速度优化。 ? 基于虚拟网卡来实现虚拟网络的组建的架构图如下所示:
图片来自网络 起因: ? 一般来说,私有网络的一个资源对应本地的一条路由(比如:www.example.com,就是一条或者多条ip地址的路由资源),当然,你也可以推送一个网段,这样操作比较简单,但是存在一定的安全隐患,因为你将整个私有网络的网段推送到客户端,这样客户端连上之后就可以访问整个网段的资源,为了安全起见,一般不会推送单个资源地址。 ? 在早些的开源的代码实现中,可以看到,拨号客户端通过调用本地系统的route.exe进程来控制路由资源的增删操作。 ? 拨号客户端在连接到服务器之后,调用系统route.exe进程,根据服务端推送的资源依次添加路由,资源少的时候建立连接的速度还可以,但是随着这些资源的壮大,建立连接时的耗时就变得无法忍受了。 通过查找资源,找到了一个号称秒级别的添加千条路由的方案:
? 通过测试发现,这个方式添加路由的速度相当快,本着对未知技术的探索,对cmroute代码实现进行深究?cmroute源码实现? 深入探索: ? 从源码中发现,cmroute.dll中使用的添加路由的方式是通过调用iphlpapi.dll(CreateIpForwardEntry、DeleteIpForwardEntry和GetIpForwardTable)接口来实现,深入iphlpapi.dll这些个接口的实现,这些接口直接操作系统的驱动程序
来实现路由资源的增删。 ? 调用接口和进程两者的调用方式,相信大家不需要测试也知道哪个性能更好一些,在这里还是简单的进行了一下对路由表操作的性能对比分析, 详细如下对254条路由表进行添加测试操作分析:
从上面的比对上来看,命令行方式1秒大概添加5~6条策略,而api方式1秒大概添加2.5w左右相差几个数量级,可以看出使用api方式添加路由策略还是很有优势的。 后续: 在看了最新的开源的代码后发现,2020年9月份已经支持api的方式,但是使用的是CreateIpForwardEntry2,v2版本的api在vista及以后版本之后才支持。 代码片段实现参考(需要管理员权限运行):
注:如有侵权,请联系作者
|
|
|
| 网络协议 最新文章 |
| 使用Easyswoole 搭建简单的Websoket服务 |
| 常见的数据通信方式有哪些? |
| Openssl 1024bit RSA算法---公私钥获取和处 |
| HTTPS协议的密钥交换流程 |
| 《小白WEB安全入门》03. 漏洞篇 |
| HttpRunner4.x 安装与使用 |
| 2021-07-04 |
| 手写RPC学习笔记 |
| K8S高可用版本部署 |
| mySQL计算IP地址范围 |
|
|
| 上一篇文章 查看所有文章 |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| 360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年11日历 | -2025/11/29 22:15:02- |
|
| 网站联系: qq:121756557 email:121756557@qq.com IT数码 |