歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux netcat命令示例

Linux netcat命令示例

日期:2017/2/27 16:06:01   编辑:Linux教程
Netcat 或者叫nc是 Linux 下的一個用於調試和檢查網絡工具包。可用於創建 TCP/IP 連接,最大的用途就是用來處理 TCP/UDP 套接字。 這裡我們將通過一些實例來學習 netcat 命令。

1. 在服務器-客戶端架構上使用 Netcat

netcat 工具可運行於服務器模式,偵聽指定端口 $ nc -l 2389 然後你可以使用客戶端模式來連接到 2389 端口: $ nc localhost 2389 現在如果你輸入一些文本,它將被發送到服務器端: $ nc localhost 2389 HI, oschina 在服務器的終端窗口將會顯示下面內容: $ nc -l 2389 HI, oschina

2. 使用 Netcat 來傳輸文件

netcat 工具還可用來傳輸文件,在客戶端,假設我們有一個 testfile 文件: $ cat testfile hello oschina 而在服務器端有一個空文件名為 test 然後我們使用如下命令來啟用服務器端: $ nc -l 2389 > test 緊接著運行客戶端: cat testfile | nc localhost 2389 然後你停止服務器端,你可以查看 test 內容就是剛才客戶端傳過來的 testfile 文件的內容: $ cat test hello oschina

3. Netcat 支持超時控制

多數情況我們不希望連接一直保持,那麼我們可以使用 -w 參數來指定連接的空閒超時時間,該參數緊接一個數值,代表秒數,如果連接超過指定時間則連接會被終止。 服務器: nc -l 2389 客戶端: $ nc -w 10 localhost 2389 該連接將在 10 秒後中斷。 注意: 不要在服務器端同時使用 -w 和 -l 參數,因為 -w 參數將在服務器端無效果。

4. Netcat 支持 IPv6

netcat 的 -4 和 -6 參數用來指定 IP 地址類型,分別是 IPv4 和 IPv6: 服務器端: $ nc -4 -l 2389 客戶端: $ nc -4 localhost 2389 然後我們可以使用 netstat 命令來查看網絡的情況: $ netstat | grep 2389 tcp 0 0 localhost:2389 localhost:50851 ESTABLISHED tcp 0 0 localhost:50851 localhost:2389 ESTABLISHED 接下來我們看看IPv6 的情況: 服務器端: $ nc -6 -l 2389 客戶端: $ nc -6 localhost 2389 再次運行 netstat 命令: $ netstat | grep 2389 tcp6 0 0 localhost:2389 localhost:33234 ESTABLISHED tcp6 0 0 localhost:33234 localhost:2389 ESTABLISHED 前綴是 tcp6 表示使用的是 IPv6 的地址。

5. 在 Netcat 中禁止從標准輸入中讀取數據

該功能使用 -d 參數,請看下面例子: 服務器端:
$ nc -l 2389 客戶端: $ nc -d localhost 2389 Hi 你輸入的 Hi 文本並不會送到服務器端。

6. 強制 Netcat 服務器端保持啟動狀態

如果連接到服務器的客戶端斷開連接,那麼服務器端也會跟著退出。 服務器端: $ nc -l 2389 客戶端: $ nc localhost 2389 ^C 服務器端: $ nc -l 2389 $ 上述例子中,但客戶端斷開時服務器端也立即退出。 我們可以通過 -k 參數來控制讓服務器不會因為客戶端的斷開連接而退出。 服務器端: $ nc -k -l 2389 客戶端: $ nc localhost 2389 ^C 服務器端: $ nc -k -l 2389

7. 配置 Netcat 客戶端不會因為 EOF 而退出

Netcat 客戶端可以通過 -q 參數來控制接收到 EOF 後隔多長時間才退出,該參數的單位是秒: 客戶端使用如下方式啟動: nc -q 5 localhost 2389 現在如果客戶端接收到 EOF ,它將等待 5 秒後退出。

8. 使用 Netcat 來處理 UDP 協議

netcat 默認是使用 TCP 協議,但也支持 UDP,可使用 -u 參數來啟用 UDP 協議通訊。 服務器端: $ nc -4 -u -l 2389 客戶端: $ nc -4 -u localhost 2389 這樣客戶端和服務器端都使用了 UDP 協議,可通過 netstat 命令來查看: $ netstat | grep 2389 udp 0 0 localhost:42634 localhost:2389 ESTABLISHED
Copyright © Linux教程網 All Rights Reserved