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

winscp怎么做网站/长沙seo招聘

winscp怎么做网站,长沙seo招聘,网博士自助建站系统,两个 wordpress 合并前言 我在 tcpdump 抓取 netlink 报文 这篇博文中描述了如何使用 nlmon 驱动抓取 netlink 报文的过程,在实际的测试中我发现对于一些 netlink 消息,例如 usb 设备热插拔事件发送的 netlink 消息就不能抓取到。 再次描述 tcpdump 抓取 netlink 报文的原…

前言

我在 tcpdump 抓取 netlink 报文 这篇博文中描述了如何使用 nlmon 驱动抓取 netlink 报文的过程,在实际的测试中我发现对于一些 netlink 消息,例如 usb 设备热插拔事件发送的 netlink 消息就不能抓取到。

再次描述 tcpdump 抓取 netlink 报文的原理

我在 使用 nlmon 驱动抓取 netlink 报文的原理 这篇博文中描述了通过 nlmon 驱动抓取 netlink 报文的原理,其核心是创建了一个 netlink tap 口,当内核在发送、接收 netlink 消息时,报文会 deliver 到这虚拟的 netlink tap 口上,tcpdump 就是通过这个 tap 口来抓取 netlink 消息的。

netlink_deliver_tap 函数

上文提到的 deliver netlink 消息到 tap 口上,实际是通过调用 netlink_deliver_tap 函数来完成的。

netlink_deliver_tap 又会调用 __netlink_deliver_tap 函数,在 __netlink_deliver_tap 函数中有如下相关代码:

static void __netlink_deliver_tap(struct sk_buff *skb, struct netlink_tap_net *nn)
{int ret;struct netlink_tap *tmp;if (!netlink_filter_tap(skb))return;

可以看到,_netlink_deliver_tap 函数会先调用 netlink_filter_tap 函数来过滤发送到 tap 口的 netlink 消息,当 netlink_filter_tap 函数返回 false 后 _netlink_deliver_tap 函数直接返回,相关的 netlink 消息就不会过 tap 口,tcpdump 自然也就抓取不到这部分报文。

netlink_filter_tap

netlink_filter_tap 函数的代码如下:

static bool netlink_filter_tap(const struct sk_buff *skb)
{struct sock *sk = skb->sk;/* We take the more conservative approach and* whitelist socket protocols that may pass.*/switch (sk->sk_protocol) {case NTLINK_ROUTE:case NETLINK_USERSOCK:case NETLINK_SOCK_DIAG:case NETLINK_NFLOG:case NETLINK_XFRM:case NETLINK_FIB_LOOKUP:case NETLINK_NETFILTER:case NETLINK_GENERIC:return true;}return false;
}

可以看到它通过判断 sock 中的 sk_protocol 字段的值进行分发,仅仅当 sk_protocol 的值是 switch 中列举的那些 NETLINK 协议消息类型时它才会返回 true,否则它会返回 false,这就是 tcpdump 无法抓取到诸如 usb 设备热插拔时内核发送的 netlink 报文的原因。

热插拔事件 netlink 对应的 sk_protocol 字段的值

热插拔事件处理相关的代码在内核源码树的 lib/kobject_uevent.c 中,着实让我一顿好找。这里我们只需要看看其初始化代码中创建 netlink sock 的函数调用就可以了。相关调用代码如下:

ue_sk->sk = netlink_kernel_create(net, NETLINK_KOBJECT_UEVENT, &cfg);

此函数最终会调用到 __netlink_create 并在其中创建一个 struct sock 接口,然后将该结构体中的 sk_protocol 字段赋值为 NETLINK_KOBJECT_UEVENT

这样在 netlink_filter_tap 中判断到这个 sk_protocol 后,函数将会返回 false,不会将相关的报文添加到 netlink tap 口中,自然也就抓取不到这种类型的报文了。

http://www.jmfq.cn/news/5076811.html

相关文章:

  • 网站销售的优势/兰州seo
  • 专业外包网站建设公司排名/抖音seo推广外包公司好做吗
  • 高青县住房和城乡建设局网站/seo学校
  • 易派客网站是谁做的/怎么做平台推广
  • 西宁做网站多少钱/代做百度首页排名价格
  • 免费做外贸的网站/北京网站优化专家
  • 做网站公司长沙/一个新手怎么做推广
  • 专业的企业网站优化公司/全网线报 实时更新
  • 做网站现在用什么语言/成都培训机构排名前十
  • python是什么意思/网站优化的主要内容
  • 上海松江区建设局官方网站/双桥seo排名优化培训
  • 建网站中企动力优/2345网址导航 中国最
  • 便宜的网站设计企业/百度网络营销app
  • 眉山 网站开发/西安排名seo公司
  • 域名备案通过后怎么做网站/nba最新排行
  • 花钱做网站/优化关键词步骤
  • 蓝色企业网站/什么是电商平台推广
  • 如何开通网站/windows优化大师和鲁大师
  • 网站建设论团/ip域名查询网站入口
  • 做网站主播要什么条件/如何免费做视频二维码永久
  • 如何做网站友情链接/百度手机卫士下载安装
  • 做网站需要服务器和什么软件/windows优化大师提供的
  • 如何判断一个网站是否用织梦建设的/搜狗站长平台验证网站
  • asp网站中停止后面代码的运行/山西百度查关键词排名
  • 服装行业网站开发/国内seo工具
  • 东莞网站网络推广公司/网络媒体推广报价
  • 免费的个人简历模板excel/seo诊断站长
  • 产品商城网站建设/搜索引擎营销的案例
  • web前端开发主要做什么/武汉seo管理
  • wordpress转移服务器后不能访问/漳州seo网站快速排名