telnet 和 netcat 有什麼不同?

telnet 和 netcat 有什麼不同?

我正在尋找一種解釋,可以找到telnet和之間的區別netcat。什麼情況下應該使用telnetand netcat?什麼是telnet可以做而不netcat能做的,反之亦然?

我試圖從網路上獲得答案,但這並不能幫助我理解。我所能找到的只是不同的命令。我正在尋找有差異的用例範例。

有人可以用解釋來解釋其中的差異嗎?

答案1

注意:有多種不同的 Telnet 程式以及多種不同的 Netcat 變體。它們可能有一些不同的功能。

一般來說,telnet具體講的是 RFC 854“Telnet”協定 - 它將某些位元組識別為來自伺服器的 Telnet 選項協商命令,將適當地回應它們,並在每次連接開始時發送自己的位元組。 (例如,它向伺服器報告 $TERM 值和視窗大小(以行×列為單位)。)它還將 Unix LF 換行符號轉換為 NVT CR+LF 版本,並將 Ctrl+] 識別為「轉義」鍵。

這使得telnet不適合原始 8 位元 TCP 連接,因為它會破壞傳輸的數據,並且通常不適用於大量使用。然而,它仍然可以用於交互地探索基於ASCII 的協議,例如FTP 或SMTP - 它之所以有效,是因為許多Telnet 用戶端在連接到非標準端口時不會啟動協商(但它們仍然會響應它) 。

Netcatnc不會做那樣的事情——它是主要是一個 8 位元乾淨的 TCP 客戶端。它可以像 telnet 一樣與 ASCII 協定一起使用,但也可以並且經常用作 TCP 的「管道」來進行大量資料傳輸,因為它不會改變通過它發送的任何位元組。

Netcat 通常也提供非 TCP 傳輸(UDP,有時是 SCTP、本機 Unix 套接字),而 Telnet 用戶端僅支援 TCP。

另一方面,netcat 不理解任何協定 - 如果您嘗試使用連接到真正的 Telnet 伺服器nc,它根本無法正常工作;伺服器不知道您正在使用什麼終端類型,視窗無法調整大小等。


  • 如果您要連接到連接埠 23 上的 Telnet 伺服器,請使用telnet
  • 如果您需要類似cat但對於 TCP 的東西,請使用nc甚至socat.
  • 如果您需要傳送/接收非文字數據,請使用nc/ socat– 避免telnet
  • 如果您想要手動輸入 SMTP 或 IRC 或 IMAP 或 HTTP 命令,這兩個工具都可以正常運作。 (事實上,telnet可能會稍微好一些,因為它將行結尾轉換為 CR+LF,某些此類伺服器也需要這一點。)

相關內容