netcat
编辑netcat,也称为 nc,是一种通过网络连接从标准输入或标准输出传输数据的简单工具。 它作为服务器或客户端使用 TCP 和 UDP 协议。
申请
编辑netcat 是一个典型的 Unix 程序,它实现了基本的 Unix 哲学。 特别是,netcat 与数据流的通用接口一起工作,而无需进一步对其内容进行分类。由于 netcat 可以以完全抽象的方式与所有数据流一起工作,因此任何复杂的工作过程都可以用 netcat 实现,从简单的文件复制到将数据库流式传输到跨网络边界的复杂代理或网关服务。
语法
编辑有不同的 netcat 实现,其中在语法上有所不同。 以下是霍比特人的原始变体。
基本上,netcat 区分两种不同的模式:
建立和关闭连接后,netcat 退出 Clientnetcat targetserver targetport 这里的 targetserver 是 netcat 应该连接到的主机的主机名或 IP 地址,targetport 是端口号,例如 80 表示 HTTP 服务器。 如果指定了 -u 标志,则 netcat 使用无连接 UDP 而不是 TCP。 在这种客户端模式下,服务器应用程序必须在目标计算机和端口上等待,否则 netcat 会因错误而终止。
在这两种情况下,netcat 将通过网络传入的数据输出到标准输出,而通过标准输入读取的数据则通过网络发送到通信伙伴。 如果这些输入和输出没有被重定向,用户可以输入和阅读它们,这里两个 netcat 调用充当一个简单的聊天程序。通过重定向或使用管道或 FIFO,netcat 在许多情况下可以在未实现的地方启用网络通信功能,例如在 shell 中。通常是有效的,因为 stdin 和 stdout 可以根据需要进行调整。
应用实例
编辑简单的文件复制
计算机启动时名为 original 的文件将以名称 copy 存储在目标计算机上,传输通过 TCP 端口 2000 处理。 为此,netcat 在目标计算机的 shell 中以服务器模式启动。 使用重定向运算符将标准输出重定向到副本文件:
$ netcat -l -p 2000 > 复制
服务器在计算机目标上运行后,netcat 可以在计算机启动时以客户端模式在 shell 中启动。 使用重定向运算符,shell 读取原始文件的内容并将其写入调用的 netcat 进程的标准输入:
$ netcat 目标 2000 < 原来的
如果没有错误,计算机启动和计算机目标上的 netcat 实例都不会在 shell 上产生任何输出。 它们在传输完成后退出(因为 shell 自动发送一个 EOF 字符,由于 '<' 运算符)。如果使用 -k 参数启动,计算机目标上的实例将等待进一步的传入数据。 在这种情况下,必须使用组合键 Ctrl + C 终止它。
复制多个文件
大多数使用 netcat 的文件传输方案都遵循相同的方案。 这种情况的一个更常见的变体是额外使用加壳程序 tar,使用它可以通过网络复制完整的目录结构。 通常,这些场景会导致通过管道相互连接的常规级联程序,例如基于上述示例的客户端计算机上的命令:
$ 焦油 vc * | 压缩 | 网猫目标 2000
以及目标计算机上的类似命令:
$ netcat -l -p 2000 | 压缩 | 焦油vx
在这个例子中,tar 将当前工作目录中的所有文件打包成一个流,该流被写入标准输出,由压缩实用程序 gzip 压缩,然后通过 netcat 发送到目标机器上的 netcat 服务器实例,再次由 gzip 解压缩,并且由 tar 解压缩回目录结构。
用于文件传输的一次性网络服务器
而不是鸡蛋netcat,也称为 nc,是一种通过网络连接从标准输入或标准输出传输数据的简单工具。 它作为服务器或客户端使用 TCP 和 UDP 协议。 手册页将其称为 TCP/IP 瑞士军刀。
申请
编辑netcat 是一个典型的 Unix 程序,它实现了基本的 Unix 哲学。 特别是,netcat 与数据流的通用接口一起工作,而无需进一步对其内容进行分类。由于 netcat 可以以完全抽象的方式与所有数据流一起工作,因此任何复杂的工作过程都可以用 netcat 实现,从简单的文件复制到将数据库流式传输到跨网络边界的复杂代理或网关服务。
应用实例
编辑简单的文件复制
计算机启动时名为 original 的文件将以名称 copy 存储在目标计算机上,传输通过 TCP 端口 2000 处理。 为此,netcat 在目标计算机的 shell 中以服务器模式启动。 使用重定向运算符将标准输出重定向到副本文件:
$ netcat -l -p 2000 > 复制
服务器在计算机目标上运行后,netcat 可以在计算机启动时以客户端模式在 shell 中启动。 使用重定向运算符,shell 读取原始文件的内容并将其写入调用的 netcat 进程的标准输入:
$ netcat 目标 2000 < 原来的
如果没有错误,计算机启动和计算机目标上的 netcat 实例都不会在 shell 上产生任何输出。 它们在传输完成后退出(因为 shell 自动发送一个 EOF 字符,由于 '<' 运算符)。如果使用 -k 参数启动,计算机目标上的实例将等待进一步的传入数据。 在这种情况下,必须使用组合键 Ctrl + C 终止它。
复制多个文件
大多数使用 netcat 的文件传输方案都遵循相同的方案。 这种情况的一个更常见的变体是额外使用加壳程序 tar,使用它可以通过网络复制完整的目录结构。 通常,这些场景会导致通过管道相互连接的常规级联程序,例如基于上述示例的客户端计算机上的命令:
$ 焦油 vc * | 压缩 | 网猫目标 2000
以及目标计算机上的类似命令:
$ netcat -l -p 2000 | 压缩 | 焦油vx
在这个例子中,tar 将当前工作目录中的所有文件打包成一个流,该流被写入标准输出,由压缩实用程序 gzip 压缩,然后通过 netcat 发送到目标机器上的 netcat 服务器实例,再次由 gzip 解压缩,并且由 tar 解压缩回目录结构。
内容由匿名用户提供,本内容不代表vibaike.com立场,内容投诉举报请联系vibaike.com客服。如若转载,请注明出处:https://vibaike.com/369906/