使用nc(netcat)測試udp協議與端口連通性

我們一般想到測試連通性時第一考慮到的就是使用ping命令。
但是我們知道ping命令使用的是icmp協議,屬于tcp/ip協議中的一個子協議,所以我們可以用ping命令來測試tcp的連通性還可以測試延遲情況。tcp相關協議了解可以參考:TCP/IP四層模型講解【筆記整理通俗易懂版】
但是當我們需要測試udp連接的時候ping命令顯然沒有任何作用。
這時候我們可以用到netcat,這個命令被譽為是網絡中的“瑞士軍刀”,功能非常強大,測試udp只是其中的一個功能變通。
在安全領域nc常用來端口監聽轉發,用的比較多的也是windows版的NC,在運維中需要常用到linux上的nc,而一般linux會默認集成這個命令,根據不同系統命令不同,有的為“nc”,有的為“netcat”,大家可以根據實際系統嘗試下。
NetCat,在網絡工具中有“瑞士軍刀”美譽,其有Windows和Linux的版本。因為它短小精悍(1.84版本也不過25k,舊版本或縮減版甚至更小)、功能實用,被設計為一個簡單、可靠的網絡工具,可通過TCP或UDP協議傳輸讀寫數據。同時,它還是一個網絡應用Debug分析器,因為它可以根據需要創建各種不同類型的網絡連接。
netcat 命令一覽
[v1.10]
connect to somewhere: netcat [-options] hostname port[s] [ports] …
listen for inbound: netcat -l -p port [-options] [hostname] [port]
options:
-g gateway source-routing hop point[s], up to 8
-G num source-routing pointer: 4, 8, 12, …
-h this cruft
-i secs delay interval for lines sent, ports scanned
-l listen mode, for inbound connects
-n numeric-only IP addresses, no DNS
-o file hex dump of traffic
-p port local port number
-r randomize local and remote ports
-s addr local source address
-t answer TELNET negotiation
-u UDP mode
-v verbose [use twice to be more verbose]
-w secs timeout for connects and final net reads
-z zero-I/O mode [used for scanning]
port numbers can be individual or ranges: lo-hi [inclusive]
基本格式:nc [-options] hostname port[s] [ports] …
nc -l -p port [options] [hostname] [port]
-d 后臺模式
-e prog 程序重定向,一旦連接,就執行 [危險!!]
-g gateway source-routing hop point[s], up to 8
-G num source-routing pointer: 4, 8, 12, …
-h 幫助信息
-i secs 延時的間隔
-l 監聽模式,用于入站連接
-L 連接關閉后,仍然繼續監聽
-n 指定數字的IP地址,不能用hostname
-o file 記錄16進制的傳輸
-p port 本地端口號
-r 隨機本地及遠程端口
-s addr 本地源地址
-t 使用TELNET交互方式
-u UDP模式
-v 詳細輸出–用兩個-v可得到更詳細的內容
-w secs timeout的時間
-z 將輸入輸出關掉–用于掃描時
端口的表示方法可寫為M-N的范圍格式。
測試udp連接方法
a機器上運行:
nc -ul 1080
或:netcat -ul -p 1080
#使用udp模式監聽1080 端口
b機器上運行:
nc -u x.x.x.x 1080
或:netcat -u x.x.x.x 1080
#使用udp模式向該ip的1080端口發送信息。
效果如圖,在任意一邊輸入內容,另一邊則會收到相應內容,以此就可以測試該端口的udp連接是否通常。