首页»Linux»8 个实用的 Linux netcat 命令示例

8 个实用的 Linux netcat 命令示例

来源:oschina 发布时间:2012-11-15 阅读次数:

  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

  英文原文:nc-command-examples

QQ群:WEB开发者官方群(515171538),验证消息:10000
微信群:加小编微信 849023636 邀请您加入,验证消息:10000
提示:更多精彩内容关注微信公众号:全栈开发者中心(fsder-com)
网友评论(共0条评论) 正在载入评论......
理智评论文明上网,拒绝恶意谩骂 发表评论 / 共0条评论
登录会员中心
大发国际网址 洪湖市| 麦盖提县| 富源县| 疏附县| 嫩江县| 高青县| 盘山县| 内黄县| 唐河县| 丹巴县| 岳阳市| 广元市| 蒙自县| 肇源县| 天长市| 西峡县| 张家川| 六枝特区| 中山市| 施甸县| 遵义县| 瑞昌市| 余江县| 龙川县| 林口县| 宜丰县| 柳州市| 蓝山县| 石首市| 南昌市| 赤水市| 武威市| 双柏县| 石门县| 集安市| 遵义市| 留坝县| 济宁市| 郧西县| 社会| 安义县| 桦甸市| 家居| 尼木县| 加查县| 城固县| 临清市| 郯城县| 舞钢市| 萍乡市| 广河县| 新邵县| 九江市| 长岛县| 和政县| 科尔| 农安县| 莱芜市| 怀集县| 英超| 浪卡子县| 苏州市| 沈丘县| 南昌县| 历史| 宝山区| 章丘市| 古浪县| 分宜县| 卫辉市| 九江县| 徐闻县| 淅川县| 郎溪县| 田林县| 潍坊市| 西充县| 信丰县| 手游| 盘锦市| 高青县| 永善县| 长葛市| 泾川县| 长子县| 翼城县| 南投市| 六安市| 红安县| 若尔盖县| 昆山市| 尖扎县| 台州市| 宿迁市| 娱乐| 九台市| 馆陶县| 平南县| 故城县| 衡阳市| 潼关县| 家居| 南京市| 灵台县| 红安县| 南岸区| 上饶市| 色达县| 沧源| 渑池县| 迁安市| 朝阳市| 阜阳市| 陇南市| 方城县| 大丰市| 湖南省| 海阳市| 迭部县| 云霄县| 灵武市| 西林县| 宣汉县| 十堰市| 赞皇县| 福贡县| 辽阳县| 太仆寺旗| 左贡县| 宜春市| 马龙县| 石狮市| 镇宁| 敦煌市| 襄城县| 满城县| 庐江县|