linux網(wǎng)絡開發(fā)者定位問題、常用工具和命令總結

Linux網(wǎng)絡開發(fā)者面臨的問題往往比較復雜,因此需要使用一些工具和命令來進行定位和解決。在本篇博客中,我將總結一些常用的Linux網(wǎng)絡開發(fā)者工具和命令,包括網(wǎng)絡包觀測、各層網(wǎng)絡狀況快速診斷、網(wǎng)絡關鍵統(tǒng)計計數(shù)收集、性能診斷、問題復現(xiàn)等方面的命令總結。
分類 | 命令、工具 | 作用 | 備注 |
包觀測 | tcpdump | 用于抓取網(wǎng)絡數(shù)據(jù)包。通過 tcpdump 命令可以捕獲網(wǎng)絡數(shù)據(jù)包,并進行分析和診斷。 | |
wireshark&&tshark | 分析網(wǎng)絡數(shù)據(jù)包。 | wireshark可視化分析,tshark命令行分析。 | |
tcpflow | 用于抓取 TCP 流量并保存到文件。通過 tcpflow 命令可以捕獲 TCP 流量,并將每個 TCP 連接的數(shù)據(jù)保存到不同的文件中。 | 比如可以快速將每個連接的包分發(fā)到不同文件保存。 | |
ngrep | 用于過濾和顯示網(wǎng)絡數(shù)據(jù)包。通過 ngrep 命令可以過濾和顯示滿足特定條件的數(shù)據(jù)包。 | 比如快速過濾http GET和POST請求。 | |
快速驗證各層網(wǎng)絡情況 | ping | 用于測試主機之間是否能夠互相通信。通過向目標主機發(fā)送 ICMP 報文,可以確定網(wǎng)絡連接是否正常。 | 檢查ip層是否ok。 |
telnet | 用于遠程登錄和測試網(wǎng)絡服務。通過 telnet 命令可以遠程登錄主機、測試網(wǎng)絡服務是否可用,并進行交互式操作。 | 檢查tcp握手是否ok。 | |
curl | 用于從命令行發(fā)送 HTTP 請求。通過 curl 命令可以發(fā)送 GET、POST 等 HTTP 請求,并查看服務器返回的響應。 | 檢查http是否ok。 | |
openssl | OpenSSL 是一個常用的加密工具庫,可以用來實現(xiàn) SSL/TLS 通信、數(shù)字證書簽發(fā)和管理、密碼學算法等功能。 | 檢查ssl握手情況,證書內(nèi)容等。 | |
網(wǎng)絡路徑狀況查看 | traceroute | 用于確定數(shù)據(jù)包從一個主機到另一個主機所經(jīng)過的路由路徑。 | |
mtr | 用于網(wǎng)絡故障定位和性能分析。mtr 命令可以連續(xù)發(fā)送 ICMP 報文,并在每一跳的路由器上進行網(wǎng)絡延遲和丟包率的統(tǒng)計,用于找出網(wǎng)絡故障的根源。 | ||
網(wǎng)絡狀態(tài)和計數(shù)查看 | netstat | 用于查看網(wǎng)絡連接、路由表、網(wǎng)絡接口狀態(tài)等信息。通過 netstat 命令可以了解當前系統(tǒng)的網(wǎng)絡狀況。 | |
ss | ss 命令是 netstat 的替代品,用于查看網(wǎng)絡連接狀態(tài)、監(jiān)聽端口、網(wǎng)絡接口等信息。與 netstat 不同的是,ss 命令提供了更快的速度和更多的選項。 | ||
ifconfig | 用于查看和配置網(wǎng)絡接口。通過 ifconfig 命令可以查看網(wǎng)絡接口的 IP 地址、MAC 地址、網(wǎng)絡狀態(tài)等信息。 | ||
ip | 配置和管理網(wǎng)絡接口、路由表、ARP 緩存和其他網(wǎng)絡相關的屬性。 | ||
curl cip.cc | 查看網(wǎng)絡出口地址。 | ||
ethtool | 用于查看和配置網(wǎng)絡接口的驅動程序。通過 ethtool 命令可以查看網(wǎng)絡接口的狀態(tài)、速度、雙工模式等信息,并進行網(wǎng)絡性能調(diào)優(yōu)。 | ||
iftop | 用于實時監(jiān)控網(wǎng)絡流量。iftop 命令可以顯示每個網(wǎng)絡接口的實時流量、連接數(shù)、連接速度等信息,用于快速診斷網(wǎng)絡瓶頸和流量異常。 | ||
nethogs | 用于查看進程占用的網(wǎng)絡帶寬。通過 nethogs 命令可以查看每個進程占用的網(wǎng)絡帶寬、連接數(shù)和流量等信息,用于找出網(wǎng)絡資源占用高的進程。 | ||
dns相關 | nslookup | 用于查詢 DNS 服務器上的主機名和 IP 地址信息。通過 nslookup 命令可以查看主機名對應的 IP 地址、反向 DNS 解析等信息。 | |
dig | 查詢 DNS 服務器上的主機名和 IP 地址信息。與 nslookup 不同的是,dig 命令提供了更多的選項和功能。 | ||
系統(tǒng)異常查看 | dmesg | 用于查看內(nèi)核日志。通過 dmesg 命令可以查看系統(tǒng)內(nèi)核的日志信息,包括硬件檢測、設備驅動加載等信息,用于排查和分析系統(tǒng)硬件和驅動問題。 | 比如oom、segment fault都可以在這里面看到相應的記錄。 |
systemctl | 用于管理 systemd 服務。通過 systemctl 命令可以啟動、停止、重啟和查詢 systemd 服務的狀態(tài),用于排查和處理系統(tǒng)服務異常問題。 | ||
journalctl | 用于查看系統(tǒng)日志。通過 journalctl 命令可以查看系統(tǒng)日志、過濾日志信息、按時間戳或者進程名等條件搜索日志信息,用于排查和分析系統(tǒng)異常和錯誤。 | ||
內(nèi)存異常 | valgrind | 檢查程序在運行時的內(nèi)存訪問錯誤、泄漏等問題。 | 無需修改代碼 |
asan | 可以檢測常見的內(nèi)存安全問題,例如緩沖區(qū)溢出、使用未初始化的內(nèi)存等。 | ||
性能定位 | top | 實時監(jiān)控系統(tǒng) CPU、內(nèi)存、進程等資源的使用情況,用于找出系統(tǒng)資源占用高的進程。 | 看出是用戶態(tài)高還是內(nèi)核態(tài)高,是否是io高等。 |
vmstat | 用于顯示系統(tǒng)虛擬內(nèi)存(VM)的使用情況。它提供了對系統(tǒng)內(nèi)存、進程、CPU 等性能數(shù)據(jù)的實時監(jiān)控。 | 可快速看出上下文切換次數(shù)。 | |
pidstat | 進程級別統(tǒng)計cpu、io、上下文切換等信息。 | 看出上下文切換中自愿切換和非自愿切換次數(shù)。 | |
sar | 監(jiān)測 CPU 使用率、磁盤 I/O、網(wǎng)絡流量、內(nèi)存使用情況、進程活動等多個方面的數(shù)據(jù),并將這些數(shù)據(jù)保存到本地或遠程系統(tǒng)中,以供后續(xù)分析和處理。 | 可快速統(tǒng)計流量。 | |
perf | 可以用于測量和分析系統(tǒng)各個方面的性能數(shù)據(jù),包括 CPU、內(nèi)存、磁盤、網(wǎng)絡等方面的數(shù)據(jù)。 | cpu采樣一把好手,看哪些函數(shù)是高頻出現(xiàn)。還可以結合其他工具生成火焰圖。 | |
pprof | 用于分析 Go 應用程序性能的工具,可以分析 CPU、內(nèi)存和代碼分布等方面的性能問題。 | go語言專用更強大的采樣工具。 | |
strace | 用于跟蹤進程的系統(tǒng)調(diào)用和信號。 | ||
bpftrace | 動態(tài)跟蹤工具,它使用 BPF(Berkeley Packet Filter)技術來實現(xiàn)高效的內(nèi)核和用戶空間跟蹤功能。 | 比如打印某個函數(shù)的系統(tǒng)調(diào)用棧和用戶空間調(diào)用棧。腳本的方式使用ebpf工具。 | |
bcc | 基于 BPF(Berkeley Packet Filter)技術的動態(tài)跟蹤和性能分析工具集,主要用于 Linux 系統(tǒng)的內(nèi)核和用戶空間程序分析。 | 比bpftrace更靈活。 | |
網(wǎng)絡場景構造 | iptables | 用于設置和管理 Linux 內(nèi)核的防火墻。通過 iptables 命令可以設置網(wǎng)絡連接的規(guī)則、過濾數(shù)據(jù)包、進行網(wǎng)絡地址轉換等操作。 | 可以對特定特征進行丟包,轉換。 |
tc | 流量控制、網(wǎng)絡流量調(diào)度和隊列管理的工具,可用于實現(xiàn)各種 QoS(Quality of Service)和網(wǎng)絡流量控制功能 | 比如對特定流量增加丟包率、時延等。 | |
postman | 一款流行的 API 測試工具,可以幫助開發(fā)人員快速創(chuàng)建、測試、調(diào)試和共享 API。 | ||
流量復制和重放 | goreplay | 一個 HTTP 實時流量復制工具。支持流量的放大、縮小,頻率限制,還支持把請求記錄到文件,方便回放和分析,也支持和 ElasticSearch 集成。 | |
tcpreplay | 一種 pcap 包的重放工具,它可以將用 ethreal、wireshark工具抓下來的包原樣或經(jīng)過任意修改后重放回去。它允許你對報文做任意的修改指定重放報文的速度等,這樣tcpreplay 就可以用來復現(xiàn)抓包的情景以定位 bug,以極快的速度重放從而實現(xiàn)壓力測試。 | ||
tcpcopy | 一種請求復制工具 ,通過復制在線數(shù)據(jù)包,修改 TCP/IP 頭部信息,發(fā)送給測試服務器,達到欺騙測試服務器的TCP 程序的目的。 | ||
性能壓測 | iperf | 用于測試網(wǎng)絡帶寬和性能。通過 iperf 命令可以在兩個主機之間進行帶寬測試和性能測試,用于評估網(wǎng)絡的實際性能。 | 適合傳輸層壓測、帶寬壓測等場景。 |
ApacheBench (ab) | 一個基于 Apache HTTP 服務器的性能測試工具,用于測試 Web 服務器的負載能力 | 適合應用層壓測。 | |
wrk | 一個高性能的 HTTP 壓力測試工具,支持多線程和支持 Lua 腳本擴展。 | ||
stress | 一個簡單但功能強大的 Linux 壓力測試工具,可以測試 CPU、內(nèi)存、I/O、網(wǎng)絡等方面的性能。 |
在我的公眾號中有一篇文章---怎樣進行問題定位,總結了開發(fā)者定位問題的方法論。熟悉工具和命令只能幫我們快速收集信息和對假設做出驗證。除了熟悉工具,更重要的是具備過硬的基礎知識、熟悉代碼流程,并懂什么時候收集什么信息,然后將這些命令和工具熟練的應用到工作中。
相關文章
Fedora Linux 42 穩(wěn)定版發(fā)布: 帶來大量新功能和軟件更新
Fedora 42昨日發(fā)布,這是 Red Hat 贊助開發(fā)的杰出前沿 Linux 發(fā)行版的最新版,包含大量新功能和軟件更新,使其成為 2025 年上半年發(fā)布的一款出色的 Linux 操作系統(tǒng)之一,內(nèi)2025-04-16如何在Linux查看硬盤信息? 查看Linux硬盤大小類型和硬件信息的5種方法
使用Linux系統(tǒng)的過程中,查看和了解硬盤信息是非常重要的工作,尤其是對于系統(tǒng)管理員而言,那么在Linux系統(tǒng)中如何查看硬盤信息?以下是具體內(nèi)容介紹2025-03-12如何在 Linux 中查看 CPU 詳細信息? 3招輕松查看CPU型號、核心數(shù)和溫度
在日常運維工作中,獲取 CPU 信息是系統(tǒng)運維管理員常見的工作內(nèi)容,無論是為了性能調(diào)優(yōu)、硬件升級還是僅僅滿足好奇心2025-03-11什么是 Arch Linux? 獨樹一幟的Arch Linux發(fā)行版分析
Arch Linux是為簡化,優(yōu)化,現(xiàn)代化,實用主義,用戶中心和多功能性而創(chuàng)建Linux發(fā)行版,究竟是什么讓 Arch 與眾不同?下面我們就來簡要解讀2025-02-19如何在Linux環(huán)境下制作 Win11裝機U盤?
一直用的linux辦公,想要將筆記本電腦從 Linux 系統(tǒng)切換回 Windows 11,我們可以制作一個win11裝機u盤,詳細如下2025-02-17Rsnapshot怎么用? 基于Rsync的強大Linux備份工具使用指南
Rsnapshot 不僅可以備份本地文件,還能通過 SSH 備份遠程文件,接下來詳細介紹如何安裝、配置和使用 Rsnapshot,包括創(chuàng)建每小時、每天、每周和每月的本地備份,以及如何進2025-02-06Linux Kernel 6.13發(fā)布:附更新內(nèi)容及新特性解讀
Linux 內(nèi)核 6.13 正式發(fā)布,新版本引入了惰性搶占支持,簡化內(nèi)核搶占邏輯,通過減少與調(diào)度器相關的調(diào)用次數(shù),讓內(nèi)核在運行時表現(xiàn)更優(yōu),從而提高效率2025-01-23五大特性引領創(chuàng)新! 深度操作系統(tǒng) deepin 25 Preview預覽版發(fā)布
今日,深度操作系統(tǒng)正式推出deepin 25 Preview版本,該版本集成了五大核心特性:磐石系統(tǒng)、全新DDE、Treeland窗口合成器、AI For OS以及Distrobox子系統(tǒng)2025-01-18Linux Mint Xia 22.1重磅發(fā)布: 重要更新一覽
Beta 版 Linux Mint“Xia” 22.1 發(fā)布,新版本基于 Ubuntu 24.04,內(nèi)核版本為 Linux 6.8,這次更新帶來了諸多優(yōu)化和改進,進一步鞏固了 Mint 在 Linux 桌面操作系統(tǒng)領域的2025-01-16LinuxMint怎么安裝? Linux Mint22下載安裝圖文教程
Linux Mint22發(fā)布以后,有很多新功能,很多朋友想要下載并安裝,該怎么操作呢?下面我們就來看看詳細安裝指南2025-01-16