調諧LINUX網路效能之除錯工具篇

2021-04-26 17:34:48 字數 3474 閱讀 6940

本文是調協linux系統網路效能的,主要介紹了route、netstat、tcpdump三種網路調諧測試工具的使用方法及其可實現的功能。

route

在配置網路時,要為機器指定接收資料報時該包要經過的路徑。在linux系統中,提供乙個命令route,這個命令可以為ifconfig命令配置的網絡卡設定靜態路由。這種設定工作通常在/etc/rc.d/rc.inet1中引入,在系統引導時進行。

我們通過幾個例子來說明如何使用route命令:

route add -net 127.0.0.0

這個命令將向路由表中新增乙個指定位址或者網路的路由。注意此時網路為a類位址,掩碼被設定為255.0.0.0,這個新新增的條目被連線到lo裝置上。

route add -net ***.***.***.*** netmask 255.255.255.0 dev eth0

這個命令為ip位址為***.***.***.***的主機增加乙個路由,它的網路掩碼被設定為255.255.255.0。

route del -net ***.***.***.***

此命令將刪除***.***.***.***這個網路的路由。

使用route命令還可以很方便地對整個網路的路由資訊進行管理,其輸出結果是網路的路由表。如下所示:

[root@lee /root]#route

kernel ip routing table

destination gateway genmask flags metric ref use iface

10.10.8.224 * 255.255.255.255 uh 0 0 0 eth0

10.10.8.0 * 255.255.255.0 u 0 0 0 eth0

127.0.0.0 * 255.0.0.0 u 0 0 0 lo

default dgc8.njupt.edu 0.0.0.0 ug 0 0 0 eth0

default dgc8.njupt.edu 0.0.0.0 ug 1 0 0 eth0

[root@lee /root]#

輸出結果中各個欄位的含義是:

·destination表示路由的目標ip位址。

·gateway表示閘道器使用的主機名或者是ip位址。上面輸出的"*"表示沒有閘道器。

·genmask表示路由的網路掩碼。在把它與路由的目標位址進行比較之前,核心通過genmask和資料報的ip位址進行按位"與"操作來設定路由。

·flags是表示路由的標誌。可用的標誌及其意義是:u表示路由在啟動,h表示target是一台主機,g表示使用閘道器,r表示對動態路由進行復位設定;d表示動態安裝路由,m表示修改路由,!表示拒絕路由。

·metric表示路由的單位開銷量。

·ref表示依賴本路由現狀的其它路由數目。

·use表示路由表條目被使用的數目。

·iface表示路由所傳送的包的目的網路。

通過檢視這些輸出資訊,我們就可以方便地管理網路的路由表了。

netstat

netstat命令是乙個監控tcp/ip網路的非常有用的工具,它可以顯示路由表、實際的網路連線以及每乙個網路介面裝置的狀態資訊。在計算機上執行netstat後,其輸出結果如下所示:

[root@lee /root]#netstat

active internet connections (w/o servers)

proto recv-q send-q local address foreign address state

active unix domain sockets (w/o servers)

proto refcnt flags types state i-node path

unix 5 [ ] dgram 460 /dev/log

unix 0 [ ] stream connected 173 @00000014

unix 0 [ ] dgram 662

unix 0 [ ] dgram 631

unix 0 [ ] dgram 544

unix 0 [ ] dgram 484

unix 0 [ ] dgram 470

[root@lee /root]#

從整體上看,netstat的輸出結果可以分為兩個部分:第一部分:是active internet connections,稱為有源tcp連線,在上面的輸出結果中,這一部分沒有內容,表示暫時還沒有tcp連線。第二部分:是active unix domain sockets,稱為有源unix域套介面。輸出結果顯示的是unix域套介面的連線情況:

·proto顯示連線使用的協議。

·refcnt表示連線到本套介面上的程序號。

·types顯示套介面的型別。

·state顯示套介面當前的狀態。

·path表示連線到套介面的其它程序使用的路徑名。

可以用netstat -a來檢視所有套接字的狀態,這在您除錯網路程式的時候是非常有用的。netstat -r將顯示路由表的內容,一般還要同時指定"-n"選項,這樣可以得到數字格式的位址,也可顯示預設路由器的ip位址。使用netstat -i則將顯示所有的網路介面資訊。使用netstat還可以獲得當前的網路狀態以及網路的拓撲結構,這在實際中是非常有用的。

tcpdump

tcpdump命令用於監視tcp/ip連線並直接讀取資料鏈路層的資料報頭。您可以指定哪些資料報被監視、哪些控制要顯示格式。例如我們要監視所有ethernet上來往的通訊,執行下述命令:

tcpdump -i eth0

即使是在乙個相對平靜的網路上,也有很多的通訊,所以我們可能只需要得到我們感興趣的那些資料報的資訊。在一般情況下,tcp/ip棧只為本地主機接收入站的資料報繫結同時忽略網路上的其它計算機編址(除非您使用的是一台路由器)。當執行tcpdump命令時,它會將tcp/ip棧設定為 promiscuous模式。該模式可接收所有的資料報並使其有效顯示。如果我們關心的只是我們本地主機的通訊情況,一種方法是使用「-p」引數禁止 promiscuous模式,還有一種方法就是指定主機名:

tcpdump -i eth0 host hostname

此時,系統將只對名為hostname的主機的通訊資料報進行監視。主機名可以是本地主機,也可以是網路上的任何一台計算機。下面的命令可以讀取主機hostname傳送的所有資料:

tcpdump -i eth0 src host hostname

下面的命令可以監視所有送到主機hostname的資料報:

tcpdump -i eth0 dst host hostname

我們還可以監視通過指定閘道器的資料報:

tcpdump -i eth0 gateway gatewayname

如果你還想監視編址到指定埠的tcp或udp資料報,那麼執行以下命令:

tcpdump -i eth0 host hostname and port 80

該命令將顯示從每個資料報傳出的頭和來自主機hostname對埠80的編址。埠80是系統預設的http服務埠號。如果我們只需要列出送到80埠的資料報,用dst port;如果我們只希望看到返回80埠的資料報,用src port。

除錯工具 之Python除錯工具pycharm

1 pycharm的安裝 pycharm是一款非常好用的python ide,提供專業版和社群版,就像eclipse和myeclipse一樣,專業版是收費的,而社群版是免費的但功能就沒有專業版的功能強大。1.2 安裝 這裡就不必細說,直接next就ok ps 安裝完成後一定要執行 1.3 破解 採用...

linux網路效能測試工具Iperf使用介紹

2.安裝 root localhost tar zxvf iperf 2.5.0.tar.gz root localhost cd iperf 2.5.0 root localhost configure root localhost make root localhost make install...

linux除錯工具GDB

gdb偵錯程式除錯的物件是可執行檔案,使用gcc或者g 編譯器編譯源 時,必須加上 g才能使目標可執行檔案包含可被除錯的資訊。比如 gcc g o helloworld helloworld.c 編譯並連線程式,使之包含可被除錯資訊 gdb helloworld 使用gdb偵錯程式開啟hellowo...