网络常用测试工具
目錄
?
一、netstat
二、ping
三、traceroute
四、telnet命令
五、route命令
六、ifconfig命令
七、tcpdump--抓包命令
八、nc命令
九、curl命令
十、dig命令
十一、Linux如何查看端口使用情況
一、netstat
命令功能:
它可以用來(lái)查詢系統(tǒng)上的網(wǎng)絡(luò)套接字連接情況,包括tcp,udp以及Unix套接字;
netstat命令用于顯示與IP、TCP、UDP和ICMP協(xié)議相關(guān)的統(tǒng)計(jì)數(shù)據(jù),一般用于檢驗(yàn)本機(jī)各端口的網(wǎng)絡(luò)連接情況。netstat是在內(nèi)核中訪問(wèn)網(wǎng)絡(luò)及相關(guān)信息的程序,它能提供TCP連接,TCP和UDP監(jiān)聽,進(jìn)程內(nèi)存管理的相關(guān)報(bào)告。
常見實(shí)例:
1)netstat
說(shuō)明:無(wú)參數(shù)使用
從整體上看,netstat的輸出結(jié)果可以分為兩個(gè)部分:
一個(gè)是Active?Internet?connections,稱為有源TCP連接,其中"Recv-Q"和"Send-Q"指的是接收隊(duì)列和發(fā)送隊(duì)列。這些數(shù)字一般都應(yīng)該是0。如果不是則表示軟件包正在隊(duì)列中堆積。這種情況只能在非常少的情況見到。
另一個(gè)是Active?UNIX?domain?sockets,稱為有源Unix域套接口(和網(wǎng)絡(luò)套接字一樣,但是只能用于本機(jī)通信,性能可以提高一倍)。
Proto顯示連接使用的協(xié)議,RefCnt表示連接到本套接口上的進(jìn)程號(hào),Types顯示套接口的類型,State顯示套接口當(dāng)前的狀態(tài),Path表示連接到套接口的其它進(jìn)程使用的路徑名。
Recv-Q、Send-Q
Recv-Q:表示收到的數(shù)據(jù)已經(jīng)在本地接收緩沖,但是還有多少?zèng)]有被進(jìn)程取走,recv()
Send-Q:對(duì)方?jīng)]有收到的數(shù)據(jù)或者說(shuō)沒(méi)有Ack的,還是本地緩沖區(qū).
這兩個(gè)值通常應(yīng)該為0,如果不為0可能是有問(wèn)題的。packets在兩個(gè)隊(duì)列里都不應(yīng)該有堆積狀態(tài)。通過(guò)netstat的這兩個(gè)值就可以簡(jiǎn)單判斷程序收不到包到底是包沒(méi)到還是包沒(méi)有被進(jìn)程recv。
2)netstat -a
說(shuō)明:列出所有端口
顯示一個(gè)所有的有效連接信息列表,包括已建立的連接(ESTABLISHED),也包括監(jiān)聽連接請(qǐng)(LISTENING)的那些連接。
3)netstat?-nu
說(shuō)明:顯示當(dāng)前UDP連接狀況
4)netstat?-i
說(shuō)明:顯示網(wǎng)卡列表
5)netstat?-l
說(shuō)明:顯示監(jiān)聽的套接口
6)netstat?-n
說(shuō)明:顯示所有已建立的有效連接
7)netstat?-r
說(shuō)明:顯示關(guān)于路由表的信息
8)netstat?-at
說(shuō)明:列出所有?tcp?端口
8)netstat?-au
說(shuō)明:列出所有 udp?端口
二、ping
命令功能:
Linux系統(tǒng)的ping命令是常用的網(wǎng)絡(luò)命令,它通常用來(lái)測(cè)試與目標(biāo)主機(jī)的連通性,這樣我們就可以根據(jù)它ping輸出的信息來(lái)確定目標(biāo)主機(jī)是否可訪問(wèn)(但這不是絕對(duì)的)。有些服務(wù)器為了防止通過(guò)ping探測(cè)到,通過(guò)防火墻設(shè)置了禁止ping或者在內(nèi)核參數(shù)中禁止ping,這樣就不能通過(guò)ping確定該主機(jī)是否還處于開啟狀態(tài)。
常見實(shí)例:
1)ping?14.215.177.39
2)ping?-c?3?14.215.177.39
說(shuō)明:ping指定次數(shù)
3)ping?-c?3?-i?1 14.215.177.39
說(shuō)明:時(shí)間間隔和次數(shù)限制的ping
三、traceroute
命令功能:
通過(guò)traceroute我們可以知道信息從你的計(jì)算機(jī)到互聯(lián)網(wǎng)另一端的主機(jī)是走的什么路徑。當(dāng)然每次數(shù)據(jù)包由某一同樣的出發(fā)點(diǎn)(source)到達(dá)某一同樣的目的地(destination)走的路徑可能會(huì)不一樣,但基本上來(lái)說(shuō)大部分時(shí)候所走的路由是相同的。linux系統(tǒng)中,我們稱之為traceroute,在MS?Windows中為tracert。?traceroute通過(guò)發(fā)送小的數(shù)據(jù)包到目的設(shè)備直到其返回,來(lái)測(cè)量其需要多長(zhǎng)時(shí)間。一條路徑上的每個(gè)設(shè)備traceroute要測(cè)3次。輸出結(jié)果中包括每次測(cè)試的時(shí)間(ms)和設(shè)備的名稱(如有的話)及其IP地址。
常見實(shí)例:
1)traceroute www.baidu.com
說(shuō)明:
記錄按序列號(hào)從1開始,每個(gè)紀(jì)錄就是一跳?,每跳表示一個(gè)網(wǎng)關(guān),我們看到每行有三個(gè)時(shí)間,單位是?ms,其實(shí)就是-q的默認(rèn)參數(shù)。探測(cè)數(shù)據(jù)包向每個(gè)網(wǎng)關(guān)發(fā)送三個(gè)數(shù)據(jù)包后,網(wǎng)關(guān)響應(yīng)后返回的時(shí)間;如果您用?traceroute?-q?4?www.baidu.com?,表示向每個(gè)網(wǎng)關(guān)發(fā)送4個(gè)數(shù)據(jù)包。
有時(shí)我們traceroute?一臺(tái)主機(jī)時(shí),會(huì)看到有一些行是以星號(hào)表示的。出現(xiàn)這樣的情況,可能是防火墻封掉了ICMP的返回信息,所以我們得不到什么相關(guān)的數(shù)據(jù)包返回?cái)?shù)據(jù)。
有時(shí)我們?cè)谀骋痪W(wǎng)關(guān)處延時(shí)比較長(zhǎng),有可能是某臺(tái)網(wǎng)關(guān)比較阻塞,也可能是物理設(shè)備本身的原因。當(dāng)然如果某臺(tái)DNS出現(xiàn)問(wèn)題時(shí),不能解析主機(jī)名、域名時(shí),也會(huì)?有延時(shí)長(zhǎng)的現(xiàn)象;您可以加-n(-n?直接使用IP地址而非主機(jī)名稱)。?參數(shù)來(lái)避免DNS解析,以IP格式輸出數(shù)據(jù)。
2)traceroute?-m?10?www.baidu.com
說(shuō)明:跳數(shù)設(shè)置
3)traceroute?-n?www.baidu.com
說(shuō)明:顯示IP地址,不查主機(jī)名
4)traceroute?-q?4?www.baidu.com
說(shuō)明:把探測(cè)包的個(gè)數(shù)設(shè)置為值4
Traceroute的工作原理:
Traceroute最簡(jiǎn)單的基本用法是:traceroute?hostname
Traceroute程序的設(shè)計(jì)是利用ICMP及IP?header的TTL(Time?To?Live)欄位(field)。首先,traceroute送出一個(gè)TTL是1的IP?datagram(其實(shí),每次送出的為3個(gè)40字節(jié)的包,包括源地址,目的地址和包發(fā)出的時(shí)間標(biāo)簽)到目的地,當(dāng)路徑上的第一個(gè)路由器(router)收到這個(gè)datagram時(shí),它將TTL減1。此時(shí),TTL變?yōu)?了,所以該路由器會(huì)將此datagram丟掉,并送回一個(gè)「ICMP?time?exceeded」消息(包括發(fā)IP包的源地址,IP包的所有內(nèi)容及路由器的IP地址),traceroute?收到這個(gè)消息后,便知道這個(gè)路由器存在于這個(gè)路徑上,接著traceroute?再送出另一個(gè)TTL是2?的datagram,發(fā)現(xiàn)第2?個(gè)路由器......?traceroute?每次將送出的datagram的TTL?加1來(lái)發(fā)現(xiàn)另一個(gè)路由器,這個(gè)重復(fù)的動(dòng)作一直持續(xù)到某個(gè)datagram?抵達(dá)目的地。當(dāng)datagram到達(dá)目的地后,該主機(jī)并不會(huì)送回ICMP?time?exceeded消息,因?yàn)樗咽悄康牡亓?#xff0c;那么traceroute如何得知目的地到達(dá)了呢?
Traceroute在送出UDP?datagrams到目的地時(shí),它所選擇送達(dá)的port?number?是一個(gè)一般應(yīng)用程序都不會(huì)用的號(hào)碼(30000?以上),所以當(dāng)此UDP?datagram?到達(dá)目的地后該主機(jī)會(huì)送回一個(gè)「ICMP?port?unreachable」的消息,而當(dāng)traceroute?收到這個(gè)消息時(shí),便知道目的地已經(jīng)到達(dá)了。所以traceroute?在Server端也是沒(méi)有所謂的Daemon?程式。
Traceroute提取發(fā)?ICMP?TTL到期消息設(shè)備的IP地址并作域名解析。每次?,Traceroute都打印出一系列數(shù)據(jù),包括所經(jīng)過(guò)的路由設(shè)備的域名及?IP地址,三個(gè)包每次來(lái)回所花時(shí)間。
四、telnet命令
命令功能:
telnet命令通常用來(lái)遠(yuǎn)程登錄。telnet程序是基于TELNET協(xié)議的遠(yuǎn)程登錄客戶端程序。Telnet協(xié)議是TCP/IP協(xié)議族中的一員,是Internet遠(yuǎn)程登陸服務(wù)的標(biāo)準(zhǔn)協(xié)議和主要方式。它為用戶提供了在本地計(jì)算機(jī)上完成遠(yuǎn)程主機(jī)工作的?能力。在終端使用者的電腦上使用telnet程序,用它連接到服務(wù)器。終端使用者可以在telnet程序中輸入命令,這些命令會(huì)在服務(wù)器上運(yùn)行,就像直接在服務(wù)器的控制臺(tái)上輸入一樣。可以在本地就能控制服務(wù)器。要開始一個(gè)?telnet會(huì)話,必須輸入用戶名和密碼來(lái)登錄服務(wù)器。Telnet是常用的遠(yuǎn)程控制Web服務(wù)器的方法。
但是,telnet因?yàn)椴捎妹魑膫魉蛨?bào)文,安全性不好,很多Linux服務(wù)器都不開放telnet服務(wù),而改用更安全的ssh方式了。但仍然有很多別的系統(tǒng)可能采用了telnet方式來(lái)提供遠(yuǎn)程登錄,因此弄清楚telnet客戶端的使用方式仍是很有必要的。
常見實(shí)例:
1)telnet?192.168.120.204
說(shuō)明:
五、route命令
命令功能:
Linux系統(tǒng)的route命令用于顯示和操作IP路由表(show?/?manipulate?the?IP?routing?table)。要實(shí)現(xiàn)兩個(gè)不同的子網(wǎng)之間的通信,需要一臺(tái)連接兩個(gè)網(wǎng)絡(luò)的路由器,或者同時(shí)位于兩個(gè)網(wǎng)絡(luò)的網(wǎng)關(guān)來(lái)實(shí)現(xiàn)。在Linux系統(tǒng)中,設(shè)置路由通常是為了解決以下問(wèn)題:該Linux系統(tǒng)在一個(gè)局域網(wǎng)中,局域網(wǎng)中有一個(gè)網(wǎng)關(guān),能夠讓機(jī)器訪問(wèn)Internet,那么就需要將這臺(tái)機(jī)器的IP地址設(shè)置為L(zhǎng)inux機(jī)器的默認(rèn)路由。要注意的是,直接在命令行下執(zhí)行route命令來(lái)添加路由,不會(huì)永久保存,當(dāng)網(wǎng)卡重啟或者機(jī)器重啟之后,該路由就失效了;可以在/etc/rc.local中添加route命令來(lái)保證該路由設(shè)置永久有效。
常見實(shí)例:
1)route
說(shuō)明:顯示當(dāng)前路由
2)route add
說(shuō)明:添加網(wǎng)關(guān)/設(shè)置網(wǎng)關(guān)
六、ifconfig命令
命令功能:
命令用來(lái)查看和配置網(wǎng)絡(luò)設(shè)備。當(dāng)網(wǎng)絡(luò)環(huán)境發(fā)生改變時(shí)可通過(guò)此命令對(duì)網(wǎng)絡(luò)進(jìn)行相應(yīng)的配置。
常見實(shí)例:
1)ifconfig
說(shuō)明:顯示網(wǎng)絡(luò)設(shè)備信息
lo?是表示主機(jī)的回壞地址,這個(gè)一般是用來(lái)測(cè)試一個(gè)網(wǎng)絡(luò)程序,但又不想讓局域網(wǎng)或外網(wǎng)的用戶能夠查看,只能在此臺(tái)主機(jī)上運(yùn)行和查看所用的網(wǎng)絡(luò)接口。比如把?HTTPD服務(wù)器的指定到回壞地址,在瀏覽器輸入?127.0.0.1?就能看到你所架WEB網(wǎng)站了。但只是您能看得到,局域網(wǎng)的其它主機(jī)或用戶無(wú)從知道。
2)ifconfig?ens33 up? ? ? ? ? ? ifconfig?ens33 down
說(shuō)明:ifconfig?ens33?up?為啟動(dòng)網(wǎng)卡ens33 ;ifconfig?ens33?down?為關(guān)閉網(wǎng)卡ens33。
3)ifconfig?eth0?192.168.120.56?
說(shuō)明:給eth0網(wǎng)卡配置IP地:192.168.120.56
七、tcpdump--抓包命令
過(guò)濾主機(jī)/IP:?
tcpdump -i eth1 host 172.16.7.206
抓取所有經(jīng)過(guò)網(wǎng)卡1,目的IP或源地址為172.16.7.206的網(wǎng)絡(luò)數(shù)據(jù)?
tcpdump -i eth1 src host 172.16.7.206? ?指定源地址
tcpdump -i eth1 dst host 172.16.7.206? ?指定目的地址?
過(guò)濾端口:?
tcpdump -i eth1 dst port 1234
抓取所有經(jīng)過(guò)網(wǎng)卡1,目的端口為1234的網(wǎng)絡(luò)數(shù)據(jù)?
過(guò)濾特定協(xié)議:?
tcpdump -i eth1 udp
抓取所有經(jīng)過(guò)網(wǎng)卡1,協(xié)議類型為UDP的網(wǎng)絡(luò)數(shù)據(jù)?
特定協(xié)議特定端口:?
tcpdump udp port 1234
抓取所有經(jīng)過(guò)1234端口的UDP網(wǎng)絡(luò)數(shù)據(jù)?
抓取特定類型的數(shù)據(jù)包:?
tcpdump -i eth1 ‘tcp[tcpflags] = tcp-syn’
抓取所有經(jīng)過(guò)網(wǎng)卡1的SYN類型數(shù)據(jù)包
tcpdump -i eth1 udp dst port 53
抓取經(jīng)過(guò)網(wǎng)卡1的所有DNS數(shù)據(jù)包(默認(rèn)端口)?
使用-w參數(shù)指定將監(jiān)聽到的數(shù)據(jù)包寫入文件中保存
八、nc命令
功能說(shuō)明:功能強(qiáng)大的網(wǎng)絡(luò)工具 語(yǔ) 法:nc [-hlnruz][-g<網(wǎng)關(guān)...>][-G<指向器數(shù)目>][-i<延遲秒數(shù)>][-o<輸出文件>][-p<通信端口>][-s<來(lái)源位址>][-v...][-w<超時(shí)秒數(shù)>][主機(jī)名稱][通信端口...] 參 數(shù):-g<網(wǎng)關(guān)> 設(shè)置路由器躍程通信網(wǎng)關(guān),最丟哦可設(shè)置8個(gè)。-G<指向器數(shù)目> 設(shè)置來(lái)源路由指向器,其數(shù)值為4的倍數(shù)。-h 在線幫助。-i<延遲秒數(shù)> 設(shè)置時(shí)間間隔,以便傳送信息及掃描通信端口。-l 使用監(jiān)聽模式,管控傳入的資料。-n 直接使用IP地址,而不通過(guò)域名服務(wù)器。-o<輸出文件> 指定文件名稱,把往來(lái)傳輸?shù)臄?shù)據(jù)以16進(jìn)制字碼傾倒成該文件保存。-p<通信端口> 設(shè)置本地主機(jī)使用的通信端口。-r 亂數(shù)指定本地與遠(yuǎn)端主機(jī)的通信端口。-s<來(lái)源位址> 設(shè)置本地主機(jī)送出數(shù)據(jù)包的IP地址。-u 使用UDP傳輸協(xié)議。-v 詳細(xì)輸出--用兩個(gè)-v可得到更詳細(xì)的內(nèi)容-w<超時(shí)秒數(shù)> 設(shè)置等待連線的時(shí)間。-z 使用0輸入/輸出模式,只在掃描通信端口時(shí)使用。 (1)端口掃描 # nc -v -w 2 192.168.2.34 -z 21-24 nc: connect to 192.168.2.34 port 21 (tcp) failed: Connection refused Connection to 192.168.2.34 22 port [tcp/ssh] succeeded! nc: connect to 192.168.2.34 port 23 (tcp) failed: Connection refused nc: connect to 192.168.2.34 port 24 (tcp) failed: Connection refused(2)從192.168.2.33拷貝文件到192.168.2.34 在192.168.2.34上: nc -l 1234 > test.txt 在192.168.2.33上: nc 192.168.2.34 < test.txt(3)簡(jiǎn)單聊天工具 在192.168.2.34上: nc -l 1234 在192.168.2.33上: nc 192.168.2.34 1234 這樣,雙方就可以相互交流了。使用ctrl+C(或D)退出。九、curl命令
在Linux中curl是一個(gè)利用URL規(guī)則在命令行下工作的文件傳輸工具,可以說(shuō)是一款很強(qiáng)大的http命令行工具。它支持文件的上傳和下載,是綜合傳輸工具,但按傳統(tǒng),習(xí)慣稱url為下載工具。
(1)獲取頁(yè)面內(nèi)容
當(dāng)我們不加任何選項(xiàng)使用 curl 時(shí),默認(rèn)會(huì)發(fā)送 GET 請(qǐng)求來(lái)獲取鏈接內(nèi)容到標(biāo)準(zhǔn)輸出。
(2)顯示 HTTP 頭
如果我們只想要顯示 HTTP 頭,而不顯示文件內(nèi)容,可以使用 -I 選項(xiàng):
(3)將鏈接保存到文件
我們可以使用 > 符號(hào)將輸出重定向到本地文件中。
curl http://www.codebelief.com > index.html
也可以通過(guò) curl 自帶的 -o/-O 選項(xiàng)將內(nèi)容保存到文件中。
- -o(小寫的 o):結(jié)果會(huì)被保存到命令行中提供的文件名
- -O(大寫的 O):URL 中的文件名會(huì)被用作保存輸出的文件名
| curl -o index.html http://www.codebelief.com curl -O http://www.codebelief.com/page/2/ |
(4)同時(shí)下載多個(gè)文件
我們可以使用 -o 或 -O 選項(xiàng)來(lái)同時(shí)指定多個(gè)鏈接,按照以下格式編寫命令:
十、dig命令
域名解析工具
十一、Linux如何查看端口使用情況
1、lsof -i:端口號(hào) 用于查看某一端口的占用情況,比如查看8000端口使用情況,lsof -i:8000
2、netstat -tunlp |grep 端口號(hào),用于查看指定的端口號(hào)的進(jìn)程情況,如查看8000端口的情況,netstat -tunlp |grep 8000
總結(jié)
- 上一篇: 什么是网络测试
- 下一篇: Magix 促销:让你的音视频制作更加专