很多時候,我們需要測試 tcp 端口。ping 命令雖然好用,但不能測試端口,因為 ping 基於ICMP協議,屬於IP層協議,所以無法測試傳輸層的 TCP/UDP 端口。幸好有tcping命令,可以實現tcp端口檢測。
1. 用途
監聽主機的端口狀態,默認是80端口,也可以指定其它端口
看到ping返回的時間,檢測主機是否有延時或者端口不通
2. 安裝
訪問tcping主頁,下載安裝包tcping-1.3.5.tar.gz,編譯安裝tcping(需要安裝gcc、make)。
# tar zxvf tcping-1.3.5.tar.gz
# cd tcping-1.3.5
# yum install -y gcc
# make
# cp tcping /usr/bin/
3. tcping參數詳解
- 描述
在本地主機和遠程主機之間,tcping可以測試出執行TCP三次握手所需的時間(SYN,SYN / ACK,ACK)。最終ACK傳送時間不包括在內,只有最少的時間才能將其丟棄在近端的電線。
選項
-4,優先使用IPv4
-6,優先使用IPv6
-h,使用http模式
-t,讓命令持續運行,直到使用ctrl + c指令退出
-n 數字,發送命令的次數,默認4次
-i 數字,發送ping命令的時間間隔,默認1s,可以為小數
-w 數字,等待響應的時間間隔,默認2s,可以為小數
-d,使輸出的每一行顯示時間和日期
-f,強制ping命令至少發送一個比特(byte)
-g 數字,失敗指定次就放棄(注意默認是80端口,若其他端口沒開也算失敗)
-b 數字,開啟蜂鳴器,參數4會一直響鈴
-c,只顯示改變的信息(ping時間很短一般不會改變)
-r 數字,每發送指定個數據包,就重新查找主機一次(通過DNS或路由查找)
-s,ping通就立即退出
-u,與-h命令連用,每一行輸出目標的url
-v,顯示版本信息
-j,使用默認的方法,求ping的均值減小波動,網絡有一定的不穩定性時,用此參數可以減小波動
-js 數字,用指定個實例求平均值減小波動,使用這個參數,系統會tcping 指定次,然后求出平均值作為一次結果顯示,減小波動
–tee file_path,將結果輸出到指定位置,tcping –tee /data/test.txt192.168.0.100,會把ping的結果保存在/data下的test文件中
–file,從文件中獲得ping的來源;在/data下新建一個test.txt文件,並輸入要tcping的所有ip或域名,一行一個,然后執行命令tcping –file /data/test.txt,就會依次tcping文件中指定的地址
destination,可以是DNS地址、IP地址、URL(需要使用-h,http模式)。使用http模式時,不要加https//或:port,例如:tcping http://www.elifulkerson.com:8080/index.html就會失敗,使用tcping www.elifulkerson.com/index.html 8080就會成功
port 數字,指定tcp端口(1-65535),如果不指定,默認是80
–header,在頭部顯示時間和日期,與–tee顯示的格式差不多
–block,tcping不通的等待時間,默認是20秒(很長)。–block可以把-w參數沖突掉 ,例如tcping --block www.baiu.com網址不正確,顯然tcpping不通,默認會等待20s 。 tcping -w 0.5 –block www.baiu.com還是會等20s,而不是0.5s,因為–block選項會把-w選項沖突掉。
HTTP模式選項
–post,在http模式中,使用post方法
–head,在http模式中,使用head方法
–get Shorthand to invoke “http” mode for consistency’s sake.
–proxy-server,指定代理服務
–proxy-port,指定代理服務端口
–proxy-credentials username:password,使用代理的安全驗證,需要輸入用戶名和密碼
返回值
如果所有的pings是成功的,返回0;如果所有ping都失敗,返回1;混合結果,返回2
tcping is available at http://www.elifulkerson.com/projects/tcping.php
4. 開放端口和關閉端口
查看哪些端口被打開
# netstat -anp
防火牆關閉端口
# iptables -A INPUT -p tcp --drop 端口號-j DROP
# iptables -A OUTPUT -p tcp --dport 端口號-j DROP
防火牆打開端口
# iptables -A INPUT -p tcp --dport 端口號-j ACCEPT
linux打開端口
// 打開telnet23端口
# nc -lp 23 &
// 查看23端口是否打開
# netstat -an | grep 23
注意:linux每打開一個端口,都需要有相應的監聽程序。
5. 實例
# tcping -d -h -u -n 10 -i 0.1 -w 0.1 192.168.1.30 6001
意思:使用http模式(-h),並且在返回數據中顯示目標源url地址
(-u),向主機ip為192.168.1.30的6001端口發送10次數據包
(-n 10),在返回數據行中顯示發送數據包的日期
(-d),指定每次發送數據包的時間間隔為0.1秒
(-i 0.1),等待數據包相應的時間間隔為0.1秒
(-w 0.1) 注:-t和-n同時存在時,優先指定-n,即tcping -t -n 10 192.168.1.30命令只會發送10次數據包,並不是像-t一樣持續發送。