| |
|
开发:
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图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 6:42:49- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |