当前位置: 首页 > news >正文

网页设计与网站建设书籍猫咪社区免费资源在线观看

网页设计与网站建设书籍,猫咪社区免费资源在线观看,校园网站,网站建设团队管理怎么写文章目录 TDI网络过滤驱动应用1. 技术概览2. 数据包的抓取3. 应用实例3.1 TrafficShaper(限流)3.2 DnsRedirector(DNS重定向)3.3 TcpRedirector(TCP重定向) 4. 总结与参考 TDI网络过滤驱动应用 在前面的文章中#xff0c;我们分析了TDI网络过滤驱动的基本开发框架以及TDI网络… 文章目录 TDI网络过滤驱动应用1. 技术概览2. 数据包的抓取3. 应用实例3.1 TrafficShaper(限流)3.2 DnsRedirector(DNS重定向)3.3 TcpRedirector(TCP重定向) 4. 总结与参考 TDI网络过滤驱动应用 在前面的文章中我们分析了TDI网络过滤驱动的基本开发框架以及TDI网络过滤驱动框架下面防火墙实例tdifw的实现可以参考 TDI网络过滤驱动开发指南。TDI网络过滤驱动之tdifw实现原理分析。 对于TDI网络过滤驱动下面的防火墙应用是TDI驱动最简单的一种应用场景我们只需要对TDI_CONNECTtdi_event_connecttdi_send_datagram和tdi_event_receive_datagram消息/回调进行防火墙规则处理即可。 下面我们分析一下TDI网络过滤驱动的其他应用包括 进程流量限定。DNS重定向代理。TCP重定向代理。 这些例子相比TDIFW防火墙将会复杂很多例如最简单的流量限定。我们需要对发送和接收数据进行限流操作的话需要对发送的IRP以及接收的数据进行缓存和挂起操作当低于流量限定的时候再激活操作。整个过程涉及到数据接收的TDI请求重注入相比防火墙的拦截来说要复杂很多。 1. 技术概览 我们先来看一下整个TDI网络驱动应用的框架如下 在上述框架中 应用程序发起的网络请求或者底层来的网络数据包都先放入IoQueue队列中然后将整个数据置于PENDING状态。将数据包通过RequestQueue队列来进行其他处置例如可以如下 将数据包通过IRP请求传递给用户层让用户层计算流量或者进行UDP转发TCP连接转发等。可以在RequestQueue延迟完成数据包的传递达到流量限定的目的。在用户的进行数据包的DUMP类似TCPDUMP工具进行网络抓包。 2. 数据包的抓取 通过上面我们得知TDI驱动有一个重要的操作就是需要对网络数据包进行抓取将数据包抓取到用户层提供给用户层做各种分析。对于TCP数据我们有如下消息可以采集 IRP_MJ_CREATE创建地址对象和连接对象。TDI_SEND采集TCP/UDP数据被发送的事件我们可以从IRP中提取发送的数据用来采集本机发出去的数据。TDI_RECEIVE采集本机主动接收数据的事件。TDI_CONNECTTCP的连接请求我们可以替换连接请求的数据达到TCP代理的功能。TDI_EVENT_CONNECT被动接收连接的事件改事件只能用作通知功能。TDI_EVENT_RECEIVE/TDI_EVENT_RECEIVE_EXPEDITED接收数据包的事件抓取该事件我们可以采集本机接收的数据包信息。 对于UDP数据我们有如下事件可以采集 IRP_MJ_CREATE创建地址对象。TDI_SEND/TDI_SEND_DATAGRAM采集UDP数据被发送的事件我们可以从IRP中提取发送的数据用来采集本机发出去的数据。TDI_RECEIVE_DATAGRAM采集本机主动接收数据的事件。TDI_EVENT_RECEIVE_DATAGRAM接收UDP数据包的事件抓取该事件我们可以采集本机接收的数据包信息。 对于上述所有的事件可以从用户层的处理来分为两类 通知类。通知类事件是通知用户层有什么事件发生例如当UDP接收到IRP_MJ_CREATE消息的时候可以得到UDP_CREATED被创建的消息。决策类。决策类是需要用户层对该消息进行响应的事件例如TCP_CONNECTED响应需要我们对建立的连接请求进行决策例如TCP的连接代理。 通知类主要是通知用户层当前TDI的各种状态和情况而决策类的事件是整个事件采集的核心我们可以对数据进行加密或者解密对请求进行代理转发或者对数据进行审计。 3. 应用实例 下面我们来看一下如下TDI实例的应用包括 进程流量限定。DNS重定向代理。TCP重定向代理。 3.1 TrafficShaper(限流) 流量限定主要实现的原理是对send, recv, sendto, recvfrom等数据长度进行统计在单位时间内数据量的大小如果超过限流大小就暂停数据的发送和接收实现大致如下 virtual void tcpReceive(ENDPOINT_ID id, const char * buf, int len) {bytesIn len;if (bytesIn ioLimit){suspendLimit(...);} }virtual void tcpSend(ENDPOINT_ID id, const char * buf, int len) {bytesOut len;if (bytesOut ioLimit){suspendLimit(...);} }virtual void udpReceive(ENDPOINT_ID id, const char * buf, int len) {bytesIn len;if (bytesIn ioLimit){suspendLimit(...);} }virtual void udpSend(ENDPOINT_ID id, const char * buf, int len) {bytesOut len;if (bytesOut ioLimit){suspendLimit(...);} }除了在数据接收或者发送的回调函数中统计流量信息之后我们需要额外创建一个线程该线程统计单位事件内流量的状态 如果单位事件内流量超出限流那么暂停数据的收发。如果单位事件内流量低于限流那么恢复数据的收发。 那么suspendLimit怎么暂停数据的收发呢方法就是针对TDI_SEND这种发送请求将其IRP挂起不再进行发送处理等到流量恢复的时候再次进行发送。 3.2 DnsRedirector(DNS重定向) 我们知道如果使用gethostbyname函数我们可以获取主机名对应的IP地址信息该函数如下 hostent * gethostbyname(const char *name );例如我们浏览器访问网站的时候就会对网站地址进行域名解析也就是通过gethostbyname获取域名对应的IP地址。 其实域名解析是利用DNS协议向域名服务器发送DNS请求来查询主机名对应的主机地址的该协议格式是固定的并且有固定的端口这个端口就是53并且使用UDP协议进行发送。 因此如果我们可以对53端口的UDP数据包进行拦截加转发那么我们就可以使用DNS查询的重定向了。 因此我们只需要响应回调函数udpSend对53端口的数据进行转发处理如下 virtual void udpSend(ENDPOINT_ID id, const unsigned char * remoteAddress, const char * buf, int len) {//... }我们对udpSend回调中的数据可以使用socket和sendto以及recvfrom发送DNS请求并获取DNS请求的返回数据。 在这里有一个主要的操作就是recvfrom数据注入我们在代理线程中将原始DNS数据包代理之后然后通过recvfrom接收DNS请求的返回数据后需要将数据重新注入给TDI驱动让TDI驱动返回给原始进程从而达到DNS代理的过程。 recvfrom数据注入就是将数据发送给TDI驱动之后TDI驱动通过TDI_RECEIVE_DATAGRAM或者TDI_EVENT_RECEIVE_DATAGRAM返回数据。 3.3 TcpRedirector(TCP重定向) 其实DnsRedirector就是UDP重定向的一个例子而TcpRedirector是TCP重定向的一个例子。TCP重定向其实应用非常广泛例如很多VPN代理的TCP服务TCP流量就是通过TCP重定向来实现的。 不过本人看过一些大厂的VPN实现TCP代理用的还是LSPLayered service provider来做的本文来讨论如何通过TDI驱动来实现TCP代理。 TCP代理主要是对connect进行处理将连接的地址换成代理进程监控的地址如下 virtual void tcpConnectRequest(ENDPOINT_ID id, PTCP_CONN_INFO pConnInfo) {//...memcpy(pConnInfo-remoteAddress, redirectToAddress, sizeof(pConnInfo-remoteAddress));//... }从这里我们可以看到TCP的代理实现起来其实比较简单的该功能最复杂的一个点是代理服务器的实现一般要实现比较高效我们应当使用完成端口来对套接字进行监控。这里我们并不对TCP代理服务器做详细介绍。 4. 总结与参考 这里我们从三个实例限流UDP重定向TCP重定向大致了解TDI网络过滤驱动的基本应用场景对于驱动防火墙的TDI网络过滤驱动复杂应用我们需要将网络数据包进行截获以及重注入处理。 对于TDI网络过滤驱动更加全面的使用我们可以参考NetFilter SDK 2该SDK链接为https://netfiltersdk.com/可惜的是该SDK是一个收费的SDK不过它提供了相关的Sample代码包括TrafficShaperTcpRedirectorDnsRedirector和SocksProxyServer还是非常具有参考性的。
http://www.pierceye.com/news/162977/

相关文章:

  • 网站亚马逊商城
  • h5企业模板网站模板江苏专业网站建设公司电话
  • 手机网站建设怎么样企业官网建设的重要性
  • 笑话小网站模板html网站制作标准
  • 大连网站建设哪家专业图片识别搜索引擎
  • 营销网站制作企业邓州市建设局网站
  • 如何从客户网站开发客户请解释网站开发的主要流程.
  • 做网站的价格 外贸最好科技广州网站建设
  • 烟台开发区网站做网站诊断步骤
  • 成都网站建设哪家技术好关于做网站的搞笑段子
  • 网站的设计制作流程计算机网站开发要考什么证
  • 个人域名 公司网站百度推广和网站建设
  • 哪里有做网站服务抖音开放平台是什么
  • 公司网站上传不了图片建设网站条件
  • 精美公司网站源码婚礼策划网站设计
  • 线上设计师网站网络维护是什么意思
  • 培训网站建设阿里云如何建设网站
  • 手机网站列表模板做一钓鱼网站吗
  • 太原网站建设方案策划请问有重庆有做网站吗
  • 网站备案购买语音网站怎么做
  • ftp上传文件到网站深圳成品网站超市
  • 网站开发时app打开很慢建设网站还要云服务器吗
  • 网站设计方案应该怎么做网站自适应开发
  • 徐州手机网站设计青龙县建设局网站
  • 罗湖网站建设费用帮忙做文档的网站
  • 如何在720云网站做全景视频域名注册网站查询工具
  • 网站定制开发流程和功能wordpress怎么看访问
  • 浙江省互联网建设网站python开发手机网站开发
  • 做网站需要多少钱一年动漫制作技术是学什么
  • 刘洋网站建设 够完美保卫处网站建设