理解什么是DSR,嗅探器视角下的IP和MAC地址识别(C/C++代码实现)

news2025/1/16 14:09:56

网络嗅探器是监控和分析网络流量的一种工具,它能够捕获数据包并提取出关键的信息,比如IP地址和MAC地址。

网络嗅探器工作原理基于网卡的工作模式。正常情况下,网卡只处理发送给它的数据包,忽略其他数据。但是,如果将网卡设置为“混杂模式”,那么它可以接收到网络上所有的数据包,而不仅仅是发给它的数据包。网络嗅探器就是利用了这一特性来捕获网络上的数据交换。

数据包是网络通信的基本单位,包含了传输数据和控制信息。在数据包中,源IP地址、目标IP地址、源MAC地址和目标MAC地址是关键字段,用于标识数据包的出发点和目的地。以下是这些字段的分析:

  1. MAC地址

MAC地址是硬件地址,通常指网络接口卡(NIC)的地址。它是独一无二的,由6字节(48位)组成,通常表示为12位十六进制数(例如:00:1A:2B:3C:4D:5E)。在数据包中,MAC地址用于在局域网(LAN)中定位设备。

  1. 以太类型

以太类型字段指示了数据包中上层协议的类型。例如,如果此字段的值为0x0800,则表示网络层协议为IPv4;0x0806表示ARP。

  1. IP地址

IP地址是网络层(OSI模型的第三层)的地址,用于在不同网络间路由数据包。每个IP数据包头部包含源IP地址和目标IP地址,各为4字节(32位)长。

  1. 协议

此字段指明了传输层的协议类型。例如,值6表示TCP,值17表示UDP。

当网络嗅探器捕获到数据包后,它会解析出这些关键字段。这允许管理员或安全专家进行进一步的分析,如检测网络中的异常活动、性能问题或安全隐患。

为了更深入地理解这个过程,可以想象一个简单的场景,假设在一个局域网内,一台机器(我们称其为A)想要与另一台机器(称为B)通信。

  1. 机器A知道机器B的IP地址,但不知道其MAC地址。因此,它首先发送一个ARP请求来查询B的MAC地址。

  2. ARP请求被网络嗅探器捕获,嗅探器读取其中的MAC和IP地址信息。

  3. 一旦得到响应,ARP响应也会被嗅探器捕获。此时,嗅探器可以记录B的MAC和IP地址。

  4. 知道了MAC地址后,机器A开始向B发送数据包。这些数据包同样会被嗅探器捕获,嗅探器从中提取出IP和MAC地址信息。

嗅探器工作机制的详细介绍

  1. 混杂模式
    • 嗅探器通过将网卡设置为“混杂模式”,使其能接收通过网络的所有数据包,而不仅仅是发给自己的数据包。
    • 在这种模式下,嗅探器可以全面监控网络流量,从而更全面地了解网络活动情况。
  2. 数据包解析
    • 嗅探器对捕获到的数据包进行解析,提取关键信息如源地址、目标地址、协议类型等,以便后续分析和处理。
    • 解析过程中,嗅探器会还原出IP头、TCP头或UDP头等数据内容,从而得到数据包中的重要信息。
  3. 网络流量分析
    • 通过对捕获的数据包进行深入分析和统计,嗅探器可以检测异常流量、识别网络攻击、监测网络性能等。
    • 这些分析结果为网络管理和安全提供重要参考,帮助发现并解决潜在问题。
  4. 数据包抓取
    • 嗅探器采用多种技术和策略来确保能抓到所需的数据包,例如黑白名单过滤、持续抓包和确认应答技术。
    • 这些技术帮助嗅探器在复杂的网络环境中有效工作,提高抓包的准确性和效率。
  5. 数据包解析
    • 对于已捕获的数据包,嗅探器通过解码压缩、数据包分割、标识符过滤和重组数据包等多种解包技术进行解析。
    • 这些技术帮助嗅探器从数据包中提取有用信息,并对数据进行深入分析。

DSR 的工作原理、主要特点、应用场景以及优缺点

Direct Server Return (DSR) 是一种网络通信优化技术,主要用于改善数据中心的网络性能和减少延迟。DSR 通过允许服务器直接响应客户端的请求,跳过不必要的网络跳转,从而提高数据传输效率。这项技术在处理大规模、高流量的网络环境中尤其有效,例如在 Kubernetes 集群或负载均衡器配置中。

  1. 工作原理
    • 传统模式下的工作方式:在传统的网络架构中,一个来自客户端的请求先到达服务器节点,如果该请求的处理服务器不在同一节点上,请求会被重定向到另一个节点。这种重定向通常会导致额外的网络跳转,增加延迟并降低效率。
    • DSR 模式下的工作方式:启用 DSR 后,请求仍然首先到达入口节点,但处理请求的服务器直接向客户端返回数据,不再经过入口节点。这样可以减少一跳,从而减少延迟和提高数据传输速度。
    • 保持源 IP 地址:在 DSR 模式下,由于避免了额外的跳转,因此可以保持客户端的源 IP 地址不变。这对于某些需要IP透明性的应用场景(如某些安全监控和日志记录)非常重要。
  2. 主要特点
    • 减少延迟:由于避免了网络中的额外跳转,DSR 显著减少了数据传输的延迟。这对于延迟敏感的应用(如在线游戏、实时视频会议等)尤其重要。
    • 提高效率:DSR 通过优化数据传输路径,提高了网络资源的利用效率。这不仅提高了单个请求的响应速度,还有助于整个网络环境的负载均衡和管理。
    • 增强安全性:保持源 IP 地址不变有助于实现更安全的网络监控和审计。因为源 IP 地址的真实性得到了保证,安全人员可以更准确地追踪和防范潜在的网络攻击。
  3. 应用场景
    • 数据中心:在大规模的数据中心环境中,DSR 能够显著优化跨服务器的通信效率,减少因数据包多次转发引起的延迟。
    • 云服务:对于提供云服务的平台,DSR 可以提高云内部处理的效率,特别是在处理大流量和高并发请求时。
    • 负载均衡器:结合负载均衡器的使用,DSR 可以在多个服务器之间智能分配请求,同时确保每个请求都能获得最优的响应路径。
  4. 优缺点
    • 优点
      • 减少延迟:通过跳过入口处的再次转发,直接从服务器返回响应给客户端,可以显著减少请求的响应时间。
      • 提高效率:优化了数据传输路径,使网络资源的利用率更高,从而提高整体网络效率。
      • 保持源 IP 地址:有助于进行更真实的网络监控和安全防护,因为通信的源 IP 地址不会被改变。
      • 负载均衡效果提升:可以在复杂的负载均衡场景中更高效地分配请求,避免单点过载。
    • 缺点
      • 兼容性问题:在某些特定的网络环境下(如使用 VXLAN 模式),可能无法使用 DSR。
      • 配置复杂性:尽管能带来许多好处,但 DSR 的配置和使用比传统模式更复杂,需要更多的网络知识和配置工作。
      • 受限于供应商及平台:某些公共云提供商的环境可能需要特别配置才能正常使用 DSR。
  5. 案例分析
    • Cilium DSR 模式配置:从 Cilium 1.7 版本开始,引入了基于 eBPF 的 DSR 模式,加速南北向流量的通信效率,并且能够保留客户端源 IP 特性。这种模式通过绕过不必要的网络跳转,大幅度提升了数据处理速度。
    • F5 LTM+CentOS 配置:通过对 F5 LTM(本地流量管理器)结合 CentOS 进行 DSR 配置,可以实现高效的负载均衡和网络性能优化。这种配置不仅提高了网络的吞吐能力,还增强了系统的灵活性和可扩展性。
char *ansi_color (char *str, unsigned int color, unsigned int bold);
void signal_handler(int signo);
unsigned short in_cksum(const u_short *addr, int len, u_short csum);
int send_icmp(char *host);
char *find_macaddr(char *host);
char *inet_ntoa64(struct in_addr ina);
void sniff_callback(u_char *user_arg, const struct pcap_pkthdr *pkt_header, const u_char *pkt_data);
void sniff_packet_ipmac(const u_char *pkt_data);
void sniff_packet_verbose(const u_char *pkt_data);

int main(int argc, char **argv)
{
...

    if (argc == 1) usage(argv[0]);

    memset(filter_exp, 0x00, sizeof(filter_exp));

    while ( (opt = getopt(argc, argv, "hc:i:vnm:")) != -1 ) {
        switch(opt) {
            case 'c' :
                loop_counter = atoi(optarg);
                break;
            case 'i' :
                device = optarg;
                break;
            case 'v' :
                user_arg = 0x01;
                break;
            case 'n' :
                ansi_flag = 0;
                user_arg = 0x02;
                break;
            case 'm' :
                printf("%s's mac address is %s\n", optarg, ansi_color(find_macaddr(optarg), GREEN, UNBOLD));
                exit(EXIT_SUCCESS);
            case '?' :
                usage(argv[0]);
            default :
                usage(argv[0]);
        }

        if (argc > optind) {
            strncpy(filter_exp, argv[optind], strlen(argv[optind])+1);
        } else {
            usage(argv[0]);
        }
    }

    if (!filter_exp[0]) {
        strncpy(filter_exp, argv[1], strlen(argv[1])+1);
    }

    memset(errbuf, 0x00, sizeof(errbuf));

    /* 如果未在命令行上指定,请查找捕获设备 */
    device =  (device == NULL) ? pcap_lookupdev(errbuf) : device;
    if (device == NULL) {
        fprintf(stderr, "pcap_lookupdev : %s\n", errbuf);
        exit(EXIT_FAILURE);
    }

    /* 获取与捕获设备关联的网络号码和掩码 */
    if (pcap_lookupnet(device, &netp, &maskp, errbuf) == -1) {
        fprintf(stderr, "pcap_lookupnet : %s\n", errbuf);
        exit(EXIT_FAILURE);
    }

    p = pcap_open_live(device, SNAPLEN, PROMISC, TO_MS, errbuf);
    if (p == NULL) {
        fprintf(stderr, "pcap_open_live(): %s\n", errbuf);
        exit(EXIT_FAILURE);
    }

    /* 确保我们在以太网设备上进行捕获[2] */
    if (pcap_datalink(p) != DLT_EN10MB) {
        fprintf(stderr, "pcap_datalink(): %s is not an Ethernet\n", device);
        exit(EXIT_FAILURE);
    }

    /* 编译筛选器表达式 */
    if (pcap_compile(p, &fp, filter_exp, 0, netp) == -1) {
        fprintf(stderr, "pcap_compile(): %s: %s\n", filter_exp, pcap_geterr(p));
        exit(EXIT_FAILURE);
    }

    /* 应用已编译的筛选器 */
    if (pcap_setfilter(p, &fp) == -1) {
        fprintf(stderr, "pcap_setfilter():  %s: %s\n", filter_exp, pcap_geterr(p));
        exit(EXIT_FAILURE);
    }

    printf("# Interface: %s\n\n", device);
    if (!user_arg) {
        printf("%-43s%s\n", "SOURCE", "DESTINATION");
    }

    /* 设置回调函数 */
    pcap_loop(p, loop_counter, sniff_callback, &user_arg);

    pcap_freecode(&fp);
    pcap_close(p);

    return(EXIT_SUCCESS);
}

运行结果:




If you need the complete source code, please add the WeChat number (c17865354792)

总结

Direct Server Return (DSR) 是一项强大的网络通信优化技术,它通过减少不必要的网络跳转来显著降低延迟并提高效率。

网络嗅探器通过监听网络上的数据包并解析它们来捕获IP和MAC地址。这一过程对于网络调试、性能分析及安全监控等方面极为重要,也有助于揭示网络通信的基本工作机制。

We also undertake the development of program requirements here. If necessary, please follow the WeChat official account 【程序猿编码】and contact me

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1853585.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java程序之简单“记事本”

要求:如下图所示,记事本具有新建、打开文本、保存、关闭等功能。 算法思路: 这是一个使用Java Swing库创建的简单文本编辑器。它包含一个菜单栏,其中包含“文件”菜单以及四个子菜单项:“新建”、“打开”、“保存”和…

机器学习课程复习——集成学习

1. 基本概念 1.1. 定义 通过构建并结合多个个体学习器来完成学习任务,获得比单一学习器显著优越的泛化性能。 1.2. 分类 名称个体学习器例子同质集成基学习器Boosting、Bagging异质集成组件学习器Stacking1.3. 研究的核心 个体学习器的“准确性”和“多样性”本身就存在冲…

二叉树经典OJ练习

个人主页:C忠实粉丝 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 C忠实粉丝 原创 二叉树经典OJ练习 收录于专栏【数据结构初阶】 本专栏旨在分享学习数据结构学习的一点学习笔记,欢迎大家在评论区交流讨论💌 目录 前置说…

三、MyBatis实践:提高持久层数据处理效率

三、MyBatis实践:提高持久层数据处理效率 目录 一、Mybatis简介 1.1 简介1.2 持久层框架对比1.3 快速入门(基于Mybatis3方式) 二、MyBatis基本使用 2.1 向SQL语句传参 2.1.1 mybatis日志输出配置2.1.2 #{}形式2.1.3 ${}形式 2.2 数据输入 2…

cesium 包络线

cesium 包络线 以下为源码直接复制可用 1、实现思路 通过turf.js中union方法来计算包络线官方地址:https://turfjs.fenxianglu.cn/ 闪烁线请查看cesium轨迹线(闪烁轨迹线) 2、示例代码 <!DOCTYPE html> <html lang="en"&g

SpringBoot配置第三方专业缓存技术Memcached 下载 安装 整合测试 2024年5000字详解

Memcached下载和安装 是一个国内使用量还是比较大的技术 打开文件夹 我们需要在命令行窗口启动 注意要以管理员方式运行 先尝试进入指定文件 然后又再次运行 下载 memcached.exe -d install 启动 memcached.exe -d start 停止 memcached.exe -d stop memcached.exe -d i…

Mysql数据库约束的概述 , 逐渐约束 , 主键自增 , 表关系的概念和外键 ,多表关系约束介绍和使用

约束和表设计 1、DQL查询语句-limit语句(掌握) 目标 能够掌握limit语句的使用 讲解 作用&#xff1a; LIMIT是限制的意思&#xff0c;所以LIMIT的作用就是限制查询记录的条数。 LIMIT语句格式: select * from 表名 limit offset, row_count; mysql中limit的用法&#…

轻松恢复丢失数据EasyRecovery你的数据守护神

数据丢失&#xff1f;别怕&#xff01;EasyRecovery来帮忙 大家好呀&#xff0c;今天我要分享一个我超级喜欢的数据恢复软件——EasyRecovery&#xff01;&#x1f389; 如果你也经历过误删文件、硬盘格式化或是意外丢失重要数据的尴尬和焦虑&#xff0c;那你一定要看看这个神器…

Bytebase 对接本地部署的 llama3 开启ChatSQL功能

Bytebase 是为开发人员、测试、DBA和运维工程师构建的数据库 DevOps 领域的&#xff0c;类 GitLab/GitHub 平台。 这篇文章主要关注 Bytebase SQL 编辑器中的 AI 增强功能。使用此功能您可以使用自然语言在 Bytebase SQL 编辑器中查询数据库。同时还能给出针对查询的索引建议&…

千呼新零售2.0【更新日志】持续更新ing

千呼新零售2.0系统是零售行业连锁店一体化收银系统&#xff0c;包括线下收银线上商城连锁店管理ERP管理商品管理供应商管理会员营销等功能为一体&#xff0c;线上线下数据全部打通。 适用于商超、便利店、水果、生鲜、母婴、服装、零食、百货等连锁店使用。 详细介绍请查看下…

【CSS in Depth 2 精译】1.5 渐进式增强

文章目录 1.5 渐进式增强1.5.1 利用层叠规则实现渐进式增强1.5.2 渐进式增强的选择器1.5.3 利用 supports() 实现特性查询启用浏览器实验特性 1.5 渐进式增强 要用好 CSS 这样一门不断发展演进中的语言&#xff0c;其中一个重要的因素就是要与时俱进&#xff0c;及时了解哪些功…

HTML静态网页成品作业(HTML+CSS)——动漫猪猪侠网页(4个页面)

&#x1f389;不定期分享源码&#xff0c;关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 &#x1f3f7;️本套采用HTMLCSS&#xff0c;未使用Javacsript代码&#xff0c;共有4个页面。 二、作品演示 三、代…

测试辅助工具(抓包工具)的使用4 之 断点

抓包作用3&#xff08;绕过界面限制测试&#xff09; 1.为什么要绕过界面限制做测试&#xff1f; 原因&#xff1a;界面限制导致部分异常数据无法输入 2.如何绕过界面限制做测试&#xff1f; 绕过界面限制直接测试服务器 步骤&#xff1a; 1.设置断点 2.修改请求 3.修改响应…

微型操作系统内核源码详解系列五(五):cm3下Pendsv切换任务上篇

系列一&#xff1a;微型操作系统内核源码详解系列一&#xff1a;rtos内核源码概论篇&#xff08;以freertos为例&#xff09;-CSDN博客 系列二&#xff1a;微型操作系统内核源码详解系列二&#xff1a;数据结构和对象篇&#xff08;以freertos为例&#xff09;-CSDN博客 系列…

React的路由(ReactRouter)-路由导航跳转

1.第一步 // createBrowserRouter路由 RouterProvider组件 import {createBrowserRouter,RouterProvider} from react-router-dom // 创建router实例对象&#xff0c;并配置路由对应关系 const routercreateBrowserRouter([{path:/login,element:<div>我是登录页</di…

grafana 通过自定义API获取数据

一、安装插件 安装infinity插件 二、配置数据源 三、配置图表 1、数据 这边提供一个go的demo package mainimport ("math/rand""net/http""time""github.com/gin-gonic/gin" )func main() {router : gin.Default()rand.Seed(time.…

浅谈红队攻防之道-office文件免杀

最完美的状态&#xff0c;不是你从不失误&#xff0c;而是你从没放弃成长。 ∙菜单栏&#xff1a;集成了Cobalt Strike的所有功能。 ∙快捷功能区&#xff1a;列出了常用功能。 ∙目标列表区&#xff1a;根据不同的显示模式&#xff0c;显示已获取权限的主机及目标主机。 ∙…

“序列优化探究:最长上升子序列的算法发现与应用“

最长上升子序列 最长上升子序列是指在一个给定序列中&#xff0c;找到一个最长的子序列&#xff0c;使得子序列中的元素单调递增。例如&#xff0c;序列 [1, 3, 5, 4, 7] 的最长上升子序列是 [1, 3, 5, 7]&#xff0c;长度为4。 这是一个经典的动态规划问题。 假设dp[i]表示…

day2-web安全漏洞攻防-基础-弱口令、HTML注入(米斯特web渗透测试)

day2-web安全漏洞攻防-基础-弱口令、HTML注入&#xff08;米斯特web渗透测试&#xff09; 1&#xff0c;漏洞2&#xff0c;弱口令3&#xff0c;爆破&#xff08;1&#xff09;Burpsuite&#xff08;2&#xff09;攻击类型 4&#xff0c;HTML针剂注入 1&#xff0c;漏洞 挖掘和利…

Adobe Photoshop图像处理软件下载安装,ps 2024版本安装包分享

Adobe Photoshop&#xff0c;这款业界闻名的图像处理软件&#xff0c;简称“PS”&#xff0c;以其强大的功能和广泛的应用领域&#xff0c;赢得了无数设计师、摄影师和创意工作者的青睐。 在Photoshop的世界里&#xff0c;用户能够随心所欲地对图像进行裁剪、缩放、调整色彩和…