使用netcat工具在两台linux主机之间通信

为什么我们不使用当下流行的即时通讯工具在PC间通信或者传输文件

目前国内使用率最高的两款即时通讯工具莫过于鹅厂的两款工具——微信和QQ。因为某些众所周知的原因,这两款工具在linux平台要么直接没有,要么只有一个复古的阉割版,功能少的让人怀疑是不是鹅厂直接把10年前的产品直接拿来用了。基于这些现实的问题,对于linux用户来说,其实可替换方案也不是没有,最好的办法就是使用telegram,但在中国,这种方案并不是人人都能够直接拿来用,最直接的原因就是使用这款软件必须要学会科学上网(比如访问谷歌或者油管)。而科学上网在中国处于法律的灰色地带,一般人没有途径也不愿意承担这样的风险。那么作为一名linux用户,只要具备基本的使用命令行的能力,其实方法还是有很多的。这里介绍一种非常方便而且直观的通讯工具——netcat,供大家参考。

netcat是个什么样的工具

netcat是一款网络工具,可以在基于TCP和UDP网络连接的基础上执行读写操作。

它被设计为一个可靠的后端工具,可以直接在其他程序或者脚本中被使用。同时,它还是一个用来调试和探测网络的工具。因为它可以创建几乎所有你可能需要的连接类型。

netcat有哪些特性

  • 流出和流入连接:例如来自基于TCP或者UDP的任意端口的连接。
  • 隧道模式:它允许创建特殊的隧道,如 UDP 到 TCP,并且可以指定所有网络参数(源主机端口/接受主机端口、监听端口/接口和允许连接到隧道的远程主机)。
  • 使用随机发生器进行端口扫描
  • 高级使用选项:例如传输和接收数据的缓冲发送模式(每 N 秒一行)和 hexdump(到 stderr 或到指定文件)。
  • 可选的 RFC854 telnet 代码解析器和响应器。

如何将netcat作为一款即时通讯工具呢

  1. 首先,我们需要在需要建立通讯的主机上安装netcat工具,使用linux自带的包管理器安装即可。

  2. 然后选择一台已经安装好netcat的机器,在终端中执行如下命令:

    1
    nc -l -vv -p 12345

    其中-lp表示在本机的12345端口进行监听,并创建一个TCP连接。-vv表示尽可能的展示运行过程中的系统消息,-p表示要监听的端口号。

  3. 选择要与监听主机建立连接的机器,在终端中执行如下命令:

    1
    nc 步骤2中创建监听的主机ip 步骤2中创建的监听端口
  4. 执行完2、3之后,一条连接已经创建完成,可以开始互发消息了。

需要注意的是,连接双方发送的消息会全部展示在各自的屏幕上,如果有多于两个以上的连接方则无法区分消息的来源。

使用netcat传输文件

netcat还可以用来传输文件

  1. 对接收方执行如下命立:

    1
    nc -l -vv -p 12345 > received_file
  2. 在发送方执行如下命令

    1
    nc 接收方的ip地址 12345 < received_file

需要注意的是,这里创建监听的动作是由接收方发起的,而发送方需要和接收方建立连接并发送文件。