国产久操视频-国产久草视频-国产久热精品-国产久热香蕉在线观看-青青青青娱乐-青青青青在线成人视99

  • 正文
    • 一、前言
    • 二、什么是混雜模式?
    • 三、網(wǎng)卡工作模式
    • 四、Linux下設(shè)置
    • 五、Linux下C程序設(shè)置網(wǎng)卡混雜模式
  • 相關(guān)推薦
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

為什么你的網(wǎng)卡收不到不同網(wǎng)段的數(shù)據(jù)包?

2024/10/21
2387
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

一、前言

最近開發(fā)過程中遇到個(gè)小問題,板子與客戶的模塊通過一款交換芯片連接,客戶的模塊會(huì)向我的板子發(fā)送組播報(bào)文,但是模塊和我的板子并在同一個(gè)網(wǎng)段,默認(rèn)情況下,這些數(shù)據(jù)包會(huì)被網(wǎng)卡過濾掉,那么我要如果通過套接字接收網(wǎng)卡上不通網(wǎng)段的數(shù)據(jù)包呢?

這就涉及到一個(gè)知識(shí)點(diǎn),網(wǎng)卡的混雜模式!

二、什么是混雜模式?

混雜模式(Promiscuous mode),簡(jiǎn)稱 Promisc mode,俗稱監(jiān)聽模式。

在 IEEE 802 定的網(wǎng)絡(luò)規(guī)范中,每個(gè)網(wǎng)絡(luò)幀都有一個(gè)目的MAC地址。

非混雜模式下
網(wǎng)卡只會(huì)接收目的MAC地址是它自己的單播幀,以及多播及廣播幀;

混雜模式下
網(wǎng)卡會(huì)接收經(jīng)過它的所有幀!

混雜模式是指一臺(tái)主機(jī)能夠接受所有經(jīng)過它的數(shù)據(jù)流,不論這個(gè)數(shù)據(jù)流的目的地址是不是它,它都會(huì)接受這個(gè)數(shù)據(jù)包。

也就是說,混雜模式下,網(wǎng)卡會(huì)把所有的發(fā)往它的包全部都接收。

在這種情況下,可以接收同一集線器局域網(wǎng)的所有數(shù)據(jù)。

三、網(wǎng)卡工作模式

網(wǎng)卡工作模式有4種,分別是:

    廣播(Broadcast)
    模式多播(Multicast)
    模式單播模式(Unicast)
    混雜模式(Promiscuous)。

四、Linux下設(shè)置

1、設(shè)置混雜模式

?ifconfig?eth0?promisc

2、取消混雜模式

?ifconfig?etho?-promisc

3、查詢混雜模式

使用ifconfig或者ip命令查看一個(gè)網(wǎng)卡是否開啟了混雜模式,當(dāng)輸出包含 PROMISC 時(shí),表明該網(wǎng)絡(luò)接口處于混雜模式。

1) ip
ip?link?show?eth0

在輸出中,查找 PROMISC 字樣。如果存在,說明該網(wǎng)卡處于混雜模式;如果沒有,說明它不在混雜模式。

2) ifconfig
ifconfig?ens33

在輸出中,查看是否有 PROMISC 字樣。

五、Linux下C程序設(shè)置網(wǎng)卡混雜模式

如果想通過程序方式打開混雜模式,可以參考下面代碼

struct?ifreq?ethreq;

strncpy(ethreq.ifr_name,?"eth0",?IFNAMSIZ);
if(ioctl(sock_raw_fd,?SIOCGIFFLAGS,?&ethreq)!=?0)??//獲取eth0網(wǎng)絡(luò)接口標(biāo)志
{
?perror("ioctl");
?close(sock_raw_fd);???
?exit(-1);????
}

ethreq.ifr_flags?|=?IFF_PROMISC;
if(ioctl(sock_raw_fd,SIOCSIFFLAGS,&ethreq)!=0)???//設(shè)置eth0網(wǎng)絡(luò)接口標(biāo)志
{
?perror("ioctl");
?close(sock_raw_fd);???
?exit(-1);
}

 

相關(guān)推薦

登錄即可解鎖
  • 海量技術(shù)文章
  • 設(shè)計(jì)資源下載
  • 產(chǎn)業(yè)鏈客戶資源
  • 寫文章/發(fā)需求
立即登錄

公眾號(hào)『一口Linux』號(hào)主彭老師,擁有15年嵌入式開發(fā)經(jīng)驗(yàn)和培訓(xùn)經(jīng)驗(yàn)。曾任職ZTE,某研究所,華清遠(yuǎn)見教學(xué)總監(jiān)。擁有多篇網(wǎng)絡(luò)協(xié)議相關(guān)專利和軟件著作。精通計(jì)算機(jī)網(wǎng)絡(luò)、Linux系統(tǒng)編程、ARM、Linux驅(qū)動(dòng)、龍芯、物聯(lián)網(wǎng)。原創(chuàng)內(nèi)容基本從實(shí)際項(xiàng)目出發(fā),保持原理+實(shí)踐風(fēng)格,適合Linux驅(qū)動(dòng)新手入門和技術(shù)進(jìn)階。

东光县| 万宁市| 中宁县| 红桥区| 钟祥市| 嘉禾县| 长泰县| 积石山| 句容市| 贺兰县| 陆川县| 曲靖市| 宣威市| 灌南县| 长宁区| 清远市| 峡江县| 五指山市| 双鸭山市| 嘉峪关市| 原平市| 石嘴山市| 武宣县| 宽甸| 濮阳市| 云浮市| 宝鸡市| 宽城| 宜昌市| 广东省| 峨山| 北辰区| 乡宁县| 新密市| 南溪县| 新昌县| 锦屏县| 江津市| 龙海市| 从江县| 扶风县|