tcping,一個好用的TCP埠檢測工具

NO IMAGE

很多時候,我們需要測試tcp埠。ping命令雖然好用,但不能測試埠,因為ping基於ICMP協議,屬於IP層協議,所以無法測試傳輸層的TCP/UDP埠。

幸好有tcping命令,可是其用法網上講地十分簡略,竟然找不到一份詳細的說明。所以本人決定翻譯tcping的引數文件,希望對大家有點幫助。

1. 用途

  • 監聽主機的埠狀態,預設是80埠,也可以指定其它埠

  • 看到ping返回的時間,檢測主機是否有延時或者埠不通

2. 安裝

  • linux

訪問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/
  • macOS
# brew install tcping
  • windows

訪問tcping主頁,下載tcping.exe,並且windows版的tcping功能引數更多。

3. windows版本tcping引數詳解

  • 描述

在本地主機和遠端主機之間,tcping可以測試出執行TCP三次握手所需的時間(SYN,SYN / ACK,ACK)。最終ACK傳送時間不包括在內,只有最少的時間才能將其丟棄在近端的電線。

  • 概要
# tcping [-tdsvf46] [-i interval] [-n times] [-w interval] [-b n] [-r times][-j depth] [--tee filename] [-f] destination [port]

  • 選項

-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一樣持續傳送。