Linux 网络通信瑞士军刀 nc 命令使用
简介
netcat
也就是nc
被称为TCP/IP
的瑞士军刀。以体积小,功能灵活著称。在各个发行版有默认安装,可以用来做很多网络相关的工作。它是一款拥有多种功能的 CLI 工具,可以用来在网络上读、写以及重定向数据。 它被设计成可以被脚本或其他程序调用的可靠的后端工具。同时由于它能创建任意所需的连接,因此也是一个很好的网络调试工具。甚至还可以作为简单的 TCP 代理。
我简单的列一下我使用过的常用的命令。
命令选项:
|
|
常用命令
传输测试
|
|
这个命令会监听本机 8080 端口,直到有 http 请求过来,然后显示出相关信息。
在主机 A 执行了这个命令之后,如果访问方式不是浏览器通过 HTTP 进行的,可以在主机 B 上面使用命令nc ip port
连接过去,这样两台主机就可以通信了,随便输点什么,对方就会显示。
测试 UDP 会话
测试两台主机 UDP 连接是否可以通信时,在主机 A 上:
|
|
在主机 B 上面,连上去:
|
|
可以向之前 tcp 一样的方法进行检测。
端口测试
比如你在远程服务器 A 的某个端口启动了一个服务,但是你怎么测试这个服务通不通呢,这时你可以用本地机器 B 使用 nc 命令来测试。
|
|
这个命令会告诉你,远端服务器的 8080 端口是否可以正常连接。nc 后面的端口也可以变成一个范围进行扫描。
|
|
两次 -v 是让它报告更详细的内容,-w3 是设置扫描超时时间为 3 秒。
网络代理&端口转发
某些时候,我们可能需要一个网络代理来进行一些事情。在条件有限的情况下,可以做一个简单的代理。
现在假设有 A B C 三个主机。
在主机 A 上运行。
|
|
代表主机 A 监听自己的 8080 端口,并且把收到的请求都传送到主机 B 上。看命令可以知道把第一个命令的输出作为第二个命令的输入。但是此时代理是单向的,我们修改一下就可以变成双向。
|
|
稍微解释一下这个命令,首先用 mkfifo 创建了一个双向管道,<
和 >
是用来重定向的符号,0
在 linux 中代表标准输入,1
代标准输出,2
代表标准错误输出。那么这个命令就首先在 A 机器监听 8080 端口,把标准输入定向为管道,发送给 B, 然后 B 把自己接收的信息写进管道,标准输出到了管道,这样可以实现双向通信。
总结
暂时就用到这么多,先更到这。netcat 就是可以在命令行直接的方式操作 TCP 或者 UDP 进行原始的:监听,连接,数据传输等工作。然后搭配管道,实现灵活多样的功能。
最后修改于 2019-09-27
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。