《Web性能实践日志》一第1章 WebPageTest内部原理1.1 函数拦截-阿里云开发者社区

开发者社区> 异步社区> 正文

《Web性能实践日志》一第1章 WebPageTest内部原理1.1 函数拦截

简介:
+关注继续查看

本节书摘来自异步社区《Web性能实践日志》一书中的第1章,第1.1节,作者【加拿大】Stoyan Stefanov,更多章节内容可以访问云栖社区“异步社区”公众号查看

第1章 WebPageTest内部原理

Web性能实践日志
作者:Patrick Meenan

我想借着今年的这次机会向大家介绍一下WebPageTest是如何从浏览器获取性能数据的。虽然它与Windows下一些工具的技术原理大同小异,但本章介绍的内容并不能代表这些工具的工作原理。

首先,请看图1-1,这张图可以帮助我们从浏览器端理解Windows的网络堆栈。


c7d9cc6b25d7acfa10845e37131e3456b784b737

不管是什么浏览器,只要运行在Windows下,体系结构几乎就如图1-1描述的一样,所有的传输都是通过Windows Socket API完成的,即Windows下几乎所有应用程序都使用TCP/IP协议,如图1-1描述。

1.1 函数拦截

WebPageTest工作的关键是能够拦截任意函数调用和检查,甚至可以中途改变请求和响应(也可以选择完全不传输)。很幸运,有人已经做了绝大部分重要的工作,并且提供了一个非常优秀的开源库(http://newgre.net/ncodehook),有了这个库,你就不需要关注实现的细节了,但你还是可以了解一下工作原理。

  • 在内存中找到目标函数(如果从dll导出会比较零碎)。
  • 把函数的前几个字节复制下来(确保x86指令完好无损)。
  • 使用跳转指令(jmp)重写函数入口让它指向到一个新函数。
  • 提供一个替代函数,这个函数包含刚才从源函数复制下来的字节以及用于指向剩余代码的跳转指令(jmp)。

这是一件非常细致的事情,稍不留神就会出岔子,但是使用定义良好的函数(如全部的Windows API),你就可以轻松地拦截任何你想拦截的内容。

这么做有一个缺点,就是你只能把调用重定向到运行在同一个进程下的代码,如果这些代码是你自己写的,那就没什么问题,但如果你要监测那些不受自己控制的软件的话就不太好了,反而可能还会带来一些麻烦。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
仿酷狗音乐播放器开发日志二十六 duilib在标题栏弹出菜单的方法
转载请说明原出处,谢谢~~        上篇日志说明了怎么让自定义控件响应右键消息。之后我给主窗体的标题栏增加右键响应,观察原酷狗后可以发现,在整个标题栏都是可以响应右键并弹出菜单的。
910 0
从零开始学 Web 之 JavaScript(三)函数
大家好,这里是「 Daotin的梦呓 」从零开始学 Web 系列教程。此文首发于「 Daotin的梦呓 」公众号,欢迎大家订阅关注。在这里我会从 Web 前端零基础开始,一步步学习 Web 相关的知识点,期间也会分享一些好玩的项目。
1202 0
十分钟上线-基于函数计算开发 Restful web api & asp.net core web app
.NET Core是一个开源通用的开发框架,支持跨平台, 阿里云函数计算推出了 dotnetcore2.1 runtime, 使用 C# 编写 serverless 函数, 除了很好地支持通常意义上的函数外, 还可以基于函数计算开发 asp.
4542 0
仿酷狗音乐播放器开发日志二十二 动态调色板控件第二版(性能大幅提升附源码)
转载请说明原出处,谢谢~~         在上次写的博客《仿酷狗音乐播放器开发日志二十一 开发动态调色板控件(附源码)》发布后,我在群里和网友讨论这个控件的性能和优 缺点,发现了他很多不足,还有很多提升空间,之后我简单的修改了代码提升了控件的响应速度。
869 0
Webpack 2 视频教程 005 - Webpack 编译输出日志
原文发表于我的技术博客 这是我免费发布的高质量超清「Webpack 2 视频教程」。 Webpack 作为目前前端开发必备的框架,Webpack 发布了 2.0 版本,此视频就是基于 2.0 的版本讲解的。
956 0
三种web性能压力测试工具http_load webbench ab小结
题记:压力和性能测试工具很多,下文讨论的是我觉得比较容易上手,用的比较多的三种http_load下载地址:http://www.acme.com/software/http_load/http_load-12mar2006.tar.gz程序非常小,解压后也不到100K 居家旅行 携带方便 呵呵http_load以并行复用的方式运行,用以测试web服务器的吞吐量与负载。
843 0
函数计算助力石墨文档突破性能瓶颈,有效节省58%服务器成本
石墨文档 是中国第一款支持云端协作的企业办公服务软件(功能类比于Google docs、Quip等),可以实现多成员多终端的在线实时协作,同步响应速度达到毫秒级,是团队协作的最佳选择。 石墨文档还是一款具有中国式美感的科技产品,2015 年获得极客公园最佳互联网创新产品 50 强。
2836 0
走进JavaWeb技术世界9:Java日志系统的诞生与发展
本文出自我的公众号:程序员江湖。 满满干货,关注就送。   一个著名的日志系统是怎么设计出来的? 1前言 Java帝国在诞生之初就提供了集合、线程、IO、网络等常用功能,从C和C++领地那里吸引了大量程序员过来加盟,但是却有意无意地忽略了一个重要的功能: 输出日志。
2439 0
+关注
异步社区
异步社区(www.epubit.com)是人民邮电出版社旗下IT专业图书旗舰社区,也是国内领先的IT专业图书社区,致力于优质学习内容的出版和分享,实现了纸书电子书的同步上架,于2015年8月上线运营。公众号【异步图书】,每日赠送异步新书。
12049
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载