您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關linux中nc命令怎么用,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
查看端口是否被占用
還記得我們在netstat中介紹的如何查看端口被占用嗎?nc也可以完成這樣的事情。它使用-l(listen)參數,用于綁定指定端口并監聽連接:
$ nc -l 6379nc: Address already in use
當看到Address already in use的時候,就知道這個端口被占用了,否則它就會在這個端口監聽。當然這個作用是我瞎說的,但是可以用。
端口掃描
例如需要掃描某個機器上21-30哪些端口是開放的:
$ nc -n 127.0.0.1 -z 1230-1234 -v nc: connect to 127.0.0.1 port 1230 (tcp) failed: Connection refused nc: connect to 127.0.0.1 port 1231 (tcp) failed: Connection refused nc: connect to 127.0.0.1 port 1232 (tcp) failed: Connection refused nc: connect to 127.0.0.1 port 1233 (tcp) failed: Connection refused Connection to 127.0.0.1 1234 port [tcp/*] succeeded!
其中-n說明直接使用ip地址,而不使用域名,-z指定端口范圍,-v輸出詳細信息。從結果就可以看到,1234端口是可連接的。
TCP/UDP連接測試
當你在學習TCP相關的內容時,是否想著如何自己實踐觀察里面的狀態或者數據包?雖然推薦自己去寫一個TCP連接的服務端-客戶端程序,但是也可以利用nc命令來完成,例如,在一個終端中輸入如下內容:
$ nc -l 1234 hello 編程珠璣
表明在1234端口監聽,然后可以在另外一個終端進行連接;
$ nc 127.0.0.1 1234 hello 編程珠璣
連接本地地址1234端口,這個過程中就可以抓包,分析TCP的三次握手了。
除此之外,你還可以在建立好的連接之間發送消息(簡單的聊天功能),讓你分析更多!
默認情況,它創建的是TCP連接,而使用-u(UDP)參數可以測試UDP連通性。
$ nc -v -u 182.3.226.35 80 Connection to 182.3.226.35 80 port [udp/http] succeeded!
除此之外,還有很多參數用于調試,例如:
-b 允許廣播消息
-D 開啟socket調試模式
-d 禁止從標準輸入讀取內容
-k 客戶端退出后,保持連接
-v 顯示詳細信息
由于在后面的文章中還會借助nc來說明,因此這里不詳解介紹。
HTTP連接測試
例如查看HTTP頭信息:
$ nc www.baidu.com 80 HEAD / HTTP/1.1 HTTP/1.1 302 Found Connection: Keep-Alive Content-Length: 17931 Content-Type: text/html Date: Sun, 23 Jun 2019 13:52:12 GMT Etag: "54d9748e-460b" Server: bfe/1.0.8.18
連接后,輸入HEAD / HTTP/1.1或HEAD / HTTP/1.0,然后輸入兩個回車,可查看web服務器相關信息。
數據傳輸
還是利用前面的連接,借助重定向符可以進行文件傳輸,例如服務端監聽,并把內容輸出到out.txt:
$ nc -l 1234 > out.txt
而客戶端連接:
$ nc 127.0.0.1 1234 < in.txt
這樣客戶端in.txt的內容,就會傳輸到out.txt
關于重定向,可參考《如何linux shell中的2 > &1》
當然了,對于文件傳輸,scp命令能更好地完成這件事。如果你沒有其他辦法了,可以試試nc。
網絡測試
前面說到可以通過nc傳輸數據,同樣如果我們想測試兩個主機間的網絡速度(當然你可以利用iperf工具來完成這個工作),nc也是可以幫忙的:
#服務端監聽: $ nc -vl 1234 >/dev/null
其中重定向到/dev/null,表示將數據丟棄。
然后在另一臺主機上執行:
$ dd if=/dev/zero bs=1M count=10 |nc -vn 127.0.0.1 1234 Connection to 127.0.0.1 1234 port [tcp/*] succeeded! 10+0 records in 10+0 records out 10485760 bytes (10 MB, 10 MiB) copied, 0.0333675 s, 314 MB/s
dd拷貝數據,這里從/dev/zero拷貝數據0,且一次1M,拷貝10次,最后通過nc命令發送到服務端。結束后,就可以看到統計信息了。
關于“linux中nc命令怎么用”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。