混杂模式

科技工作者之家 2020-11-17

混杂模式(英语:promiscuous mode)是电脑网络中的术语。是指一台机器的网卡能够接收所有经过它的数据流,而不论其目的地址是否是它。

一般计算机网卡都工作在非混杂模式下,此时网卡只接受来自网络端口的目的地址指向自己的数据。当网卡工作在混杂模式下时,网卡将来自接口的所有数据都捕获并交给相应的驱动程序。网卡的混杂模式一般在网络管理员分析网络数据作为网络故障诊断手段时用到,同时这个模式也被网络黑客利用来作为网络数据窃听的入口。在Linux操作系统中设置网卡混杂模式时需要管理员权限。在Windows操作系统和Linux操作系统中都有使用混杂模式的抓包工具,比如著名的开源软件Wireshark。

简介混杂模式(Promiscuous Mode)是指一台机器能够接收所有经过它的数据流,而不论其目的地址是否是他。是相对于通常模式(又称“非混杂模式”)而言的。这被网络****管理员使用来诊断网络问题,但是也被无认证的想偷听网络通信(其可能包括密码和其它敏感的信息)的人利用。一个非路由选择节点在混杂模式下一般仅能够在相同的冲突域(对以太网和无线局域网)内监控通信到和来自其它节点或环(对令牌环或FDDI),其是为什么网络交换被用于对抗恶意的混杂模式。

混杂模式就是接收所有经过网卡的数据包,包括不是发给本机的包。默认情况下网卡只把发给本机的包(包括广播包)传递给上层程序,其它的包一律丢弃。简单的讲,混杂模式就是指网卡能接受所有通过它的数据流,不管是什么格式,什么地址的。事实上,计算机收到数据包后,由网络层进行判断,确定是递交上层(传输层),还是丢弃,还是递交下层(数据链路层、MAC子层)转发。1

简单的说,网卡的混杂模式是为网络分析而提供的。

抓包工具通常在需要用到抓包工具,例如ethereal、sniffer、capsa时,需要把网卡置于混杂模式,需要用到软件Winpcap。winpcap是windows平台下一个免费,公共的网络访问系统。开发winpcap这个项目的目的在于为win32应用程序提供访问网络底层的能力。

对于广播式集线器(Hub)来说,假如PC1、PC2、PC3接在同一个Hub上,当PC1给PC3发送包时,Hub将广播这个包,所以PC2实际上也可以看到这个包,但一般情况下它会将这个发给PC3的包丢弃,但如果处于混杂模式,PC2的网卡驱动程序就不会丢弃这个包,而是把这个包送给上层的驱动程序,应用程序。1

模式说明在网络中,嗅探器接收所有的分组,而不发送任何非法分组。它不会妨碍网络数据的流动,因此很难对其进行检测。不过,处于混杂模式(promiscuous mode)网卡的状态很显然和处于普通模式下不同。在混杂模式下,应该被硬件过滤掉的分组文会进入到系统的内核。是否回应这种分组完全依赖于内核。

1)在网络中,混杂模式(promiscuous mode)允许一个网络装置窃听而且阅读抵达的每个网络包。这个运行模式有时在网络侦听服务器上运行,用来捕获及保存所有的数据包,以便分析。(比如,对于监听网络使用情况)

2)在一个以太区域网络(LAN)中,混杂模式是指被传输的每个数据小包都能被一个网络转接器接到而且阅读的操作模式。杂乱模态必须被每个网络转接器支持,也必须被主机操作系统的输入/输出驱动器支持。杂乱模态时常用来监督网络使用率。

混杂模式(promiscuous mode)是和非混杂模式相对的。当一个数据小包在非混杂模式传输时候,所有的区域网络装置“听到”数据并且判断被包含在数据小包之中的网络位址是否是他们的。如果它不是,数据小包进入下一个区域网络装置,直到到达具有正确网络位址的装置。然后那个装置接收而且读取数据。2

eth0举例char *eth_name = "eth0"; //对网卡eth0进行混杂设置

struct ifreq ethreq; //网络接口结构

strncpy(ethreq.ifr_name, eth_name, IFNAMSIZ); //指定网卡名称
if(-1 == ioctl(sock_raw_fd, SIOCGIFFLAGS, &ethreq)) //获取网络接口
{
perror("ioctl");
close(sock_raw_fd);
exit(-1);
}

/*此处用 | 是因为必须在保留原来设置的情况下,在标志位中加入“混杂”方式*/
ethreq.ifr_flags |= IFF_PROMISC;
if(-1 == ioctl(sock_raw_fd, SIOCSIFFLAGS, &ethreq)) //将标志位设置写入
{
perror("ioctl");
close(sock_raw_fd);
exit(-1);
}

本词条内容贡献者为:

李嘉骞 - 博士 - 同济大学

科技工作者之家

科技工作者之家APP是专注科技人才,知识分享与人才交流的服务平台。