• 正文
    • wpa_cli wpa_supplicant命令 使用
    • fuser、netstat、lsof端口占用查看工具使用
    • tcpdump使用
    • 結(jié)語
  • 相關(guān)推薦
申請入駐 產(chǎn)業(yè)圖譜

日常使用的網(wǎng)絡(luò)工具分享

03/13 11:03
479
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論
作為嵌入式linux開發(fā)中我們經(jīng)常會調(diào)試網(wǎng)絡(luò),這個時候需要一些網(wǎng)絡(luò)工具輔助我們的工作,有一些是命令工具有些是GUI工具,這些生產(chǎn)力工具如何使用呢,今天做一個小分享(本篇文章主要介紹命令行工具)。

歡迎關(guān)注微信公眾號:羽林君,或者添加作者個人微信:become_me

wpa_cli wpa_supplicant命令 使用

這兩個工具使用是用來進行手動配置網(wǎng)絡(luò)的,平時遇到非UI界面的設(shè)備,機器本身聯(lián)網(wǎng)機制比較復(fù)雜的時候,我們可以使用wpa工具進行手動聯(lián)網(wǎng)(前提是設(shè)備里面支持)。

Wireless Tools、wpa_supplicant是兩種無線網(wǎng)絡(luò)配置工具,這里我使用了wpa_supplicant工具。

wpa_supplicant 是 wifi 客戶端(client)加密認證工>具,并且是一個開源的項目,已經(jīng)被移植到 Linux、Windows 以及很多嵌入式系統(tǒng)上。它是 WPA 的應(yīng)用層認證客戶端,負責完成認證相關(guān)的登錄、加密等工作。

wpa_supplicant是一個連接、配置WIFI的工具,它主要包含wpa_supplicant與wpa_cli兩個程序。wpa_supplicant是服務(wù)端,wap_cli是客戶端,一般情況下使用wpa_cli就可以操作WiFi。但是它不支持所有的驅(qū)動,可以瀏覽wpa_supplicant網(wǎng)站獲得它所支持的驅(qū)動列表。另外,wpa_supplicant目前只能連接到那些你已經(jīng)配置好SSID的無線網(wǎng)絡(luò),也就是使用前需要配置好wpa_supplicant的配置文件wpa_supplicant.conf

wpa_supplicant 和 wpa_cli 的關(guān)系就像服務(wù)和客戶端的關(guān)系,后臺運行 wpa_supplicant,使用 wpa_cli 來搜索、設(shè)置、和連接網(wǎng)絡(luò)。不過 wpa_cli 并不是必須的軟件

wpa_supplicant 是一個獨立運行的守護進程,其核心是一個消息循環(huán),在消息循環(huán)中處理 WPA 狀態(tài)機、控制命令、驅(qū)動事件、配置信息等。

wpa_cli 有命令和交互的方式進行操作

wpa_cli?-i?wlan0?scan??????????????//搜索附件wifi熱點
wpa_cli?-i?wlan0?scan_result???//顯示搜索wifi熱點
wpa_cli?-i?wlan0?status??????????????//當前WPA/EAPOL/EAP通訊狀態(tài)

執(zhí)行操作示例:我進行了一個網(wǎng)絡(luò)的斷開和重連

wpa_cli?-i?wlan0?disable_network??0?//???與network?id?0的網(wǎng)絡(luò)斷開
wpa_cli?-i?wlan0?list_network????//列舉保存過得連接
wpa_cli?-i?wlan0?enable_network???0?//使能制定的ssid??network?id?0
wpa_cli?-i?wlan0?select_network??<network?id>??//連接指定的ssid?
wpa_cli?-i?wlan0?remove_network??<network?id>??//將指定的網(wǎng)絡(luò)移除掉,必須先斷開才行?
wpa_cli?-i?wlan0?save_config???//信息保存到默認的配置文件中,/etc/wpa_supplicant.conf
斷開連接

除此之外,我還會進行wpa_supplicant.conf配置文件的修改,來配合聯(lián)網(wǎng)和斷網(wǎng),其中修改用vim操作,聯(lián)網(wǎng)使用wpa_supplicant命令。

ifconfig?wlan0?up?//打開wlan0
wpa_supplicant?-B?-D?nl80211?-i?wlan0?-c?/etc/wpa_supplicant.conf?//指定.conf?配置文件連接
?

除了我這里簡單的描述使用,大家也可以參考更詳細的文章:https://www.cnblogs.com/hokori/p/14168584.html

fuser、netstat、lsof端口占用查看工具使用

上面是網(wǎng)絡(luò)的連接,很多時候我們還要查看網(wǎng)絡(luò)端口占用的情況,下面有三個linux工具可以參考:

fuser可以顯示出當前哪個程序在使用磁盤上的某個文件、掛載點、甚至網(wǎng)絡(luò)端口,并給出程序進程的詳細信息。

netstat 命令用于顯示各種網(wǎng)絡(luò)相關(guān)信息,如網(wǎng)絡(luò)連接,路由表,接口狀態(tài) (Interface Statistics),masquerade 連接,多播成員 (Multicast Memberships) 等等。

lsof 命令可以查看進程打開的文件、目錄,還可以查看進程監(jiān)聽的端口等 socket 相關(guān)的信息。

fuser 查看端口占用

ps?$(fuser???6666/tcp)?組合ps查看進程信息
fuser???6666/tcp?//查看tcp端口占用進程
fuser???6000/udp?//查看udp端口占用進程

netstat 查看端口占用

netstat?-tunlp?|?grep?40999?//?查看端口占用
-t?(tcp)?僅顯示tcp相關(guān)選項
-u?(udp)僅顯示udp相關(guān)選項
-n?拒絕顯示別名,能顯示數(shù)字的全部轉(zhuǎn)化為數(shù)字
-l?僅列出在Listen(監(jiān)聽)的服務(wù)狀態(tài)
-p?顯示建立相關(guān)鏈接的程序名???????

sudo lsof -i:6000 或者使用lsof -i查看全部端口占用這樣我們知道了進程占用的端口。以上這三者工具都有豐富的功能,我只是使用的它們其中一些功能,詳細可以參考這些文章

https://www.cnblogs.com/Sungeek/p/11857549.html
https://www.jianshu.com/p/70be9a5694ef
https://www.cnblogs.com/ggjucheng/archive/2012/01/08/2316661.HTML

更詳細的使用大家也可以自行搜索。

tcpdump使用

端口占用工具使用之后,我們需要進行更深層次的數(shù)據(jù)分析,這個時候我們需要進行網(wǎng)絡(luò)tcp和udp層次的數(shù)據(jù)分析,這個時候有很多工具例如Wireshark、Network Monitor和tcpdump,今天主要介紹tcpdump的使用。

tcpdump 是一款強大的網(wǎng)絡(luò)抓包工具,它使用 libpcap 庫來抓取網(wǎng)絡(luò)數(shù)據(jù)包,這個庫在幾乎在所有的 Linux/Unix 中都有。
它的命令組合起來很豐富,今天只是介紹幾個工作中使用的命令,詳細大家可以參考這篇文章:https://juejin.cn/post/6844904084168769549

我們會多的使用tcpdump的基本數(shù)據(jù)命令,但是有時候我們需要詳細信息打印的捕獲比較,這個時候有以下命令可以幫助我們在終端上詳細輸出信息:

tcpdump?udp?port?18290?-XX?-vvv?-nn

-v:當分析和打印的時候,產(chǎn)生詳細的輸出。
-vv:產(chǎn)生比-v更詳細的輸出。
-vvv:產(chǎn)生比-vv更詳細的輸出。
-XX:輸出包的頭部數(shù)據(jù),會以16進制和ASCII兩種方式同時輸出。
-nn?:直接以IP以及PORT?number顯示,而非主機名與服務(wù)名稱

下面是我比較常用的命令組合分享:

tcpdump?-i?wlan0?port?6666??//捕獲6666端口數(shù)據(jù)
tcpdump?-i?wlan0?host?192.168.1.111?//指定IP捕獲
tcpdump?-i?wlan0?port?6666?-XX?-vvv?-nn?//詳細信息捕獲
tcpdump?-i?wlan0?dst??192.1168.1.111?-XX?-vvv?-nn?//控制輸出ip篩選
tcpdump?-i?wlan0??net?192.168.1?-XX?-vvv?-nn?//控制總網(wǎng)段捕獲
tcpdump?-i?wlan0??dst?net?192.168.1?-XX?-vvv?-nn?、、控制輸出網(wǎng)段捕獲

示例:sudo tcpdump -i lo portrange 5000-8000 -vv -XX -nn 5000-8000端口進行捕獲數(shù)據(jù),檢查雙方鏈路通信

此外我還可以做tcp網(wǎng)路的連接捕獲:

這個是三次握手

tcp?協(xié)議的三次握手過程,第一條就是?SYN?報文,這個可以通過?Flags?[S]?看出,而第二條數(shù)據(jù)的?[S.]?表示?SYN-ACK,就是?SYN?報文的應(yīng)答報文。下面是常見的?TCP?報文的?Flags:

[S]?:?SYN(開始連接)
[.]?:?沒有?Flag
[P]?:?PSH(推送數(shù)據(jù))
[F]?:?FIN?(結(jié)束連接)
[R]?:?RST(重置連接)

這個是四次揮手

結(jié)語

這就是我自己的一些網(wǎng)絡(luò)工具使用分享。如果大家有更好的想法和需求,也歡迎大家加我好友交流分享哈。

作者:良知猶存,白天努力工作,晚上原創(chuàng)公號號主。公眾號內(nèi)容除了技術(shù)還有些人生感悟,一個認真輸出內(nèi)容的職場老司機,也是一個技術(shù)之外豐富生活的人,攝影、音樂 and 籃球。關(guān)注我,與我一起同行。

相關(guān)推薦

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

一個程序員,喜歡寫文章,還喜歡打籃球,也喜歡吉他鋼琴的駁雜之人。日常更新自己,分享包括但不限于C/C++、嵌入式、物聯(lián)網(wǎng)、Linux等編程學(xué)習筆記,同時,公眾號內(nèi)包含大量的學(xué)習資源。歡迎關(guān)注,一同交流學(xué)習,共同進步!