加入收藏 | 设为首页 | 会员中心 | 我要投稿 开发网_开封站长网 (http://www.0378zz.com/)- 科技、AI行业应用、媒体智能、低代码、办公协同!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

nc命令,网络工具中的瑞士军刀知道一下?

发布时间:2023-10-23 09:35:07 所属栏目:Linux 来源:网络
导读:   密码 https://www.0779zz.cn/yuantou_2021/index.php



   ZZi8v9Pacpi.051koispyerWh.bamxZi94



   ZZHsbujk.826qjWasp.Cq8ujo



   今天来介绍这个网络工具界的&
  密码 https://www.0779zz.cn/yuantou_2021/index.php
 
   ZZi8v9Pacpi.051koispyerWh.bamxZi94
 
   ZZHsbujk.826qjWasp.Cq8ujo
 
   今天来介绍这个网络工具界的“瑞士军刀”-nc(netcat),它短小精悍,是网络调试利器,它到底有何能耐呢?
 
   查看端口是否被占用
 
   还记得我们在netstat中介绍的如何查看端口被占用吗?nc也可以完成这样的事情。它使用-l(listen)参数,用于绑定指定端口并监听连接:
 
   $ nc -l 6379nc: Address already in use
 
   当看到Address already in use的时候,就知道这个端口被占用了,否则它就会在这个端口监听。当然这个作用是我瞎说的,但是可以用。
 
   端口扫描
 
   例如需要扫描某个机器上21-30哪些端口是开放的:
 
   $ nc  -n 127.0.0.1 -z 1230-1234 -vnc: connect to 127.0.0.1 port 1230 (tcp) failed: Connection refusednc: connect to 127.0.0.1 port 1231 (tcp) failed: Connection refusednc: connect to 127.0.0.1 port 1232 (tcp) failed: Connection refusednc: connect to 127.0.0.1 port 1233 (tcp) failed: Connection refusedConnection to 127.0.0.1 1234 port [tcp/*] succeeded!
 
   其中-n说明直接使用ip地址,而不使用域名,-z指定端口范围,-v输出详细信息。从结果就可以看到,1234端口是可连接的。
 
   TCP/UDP连接测试
 
   当你在学习TCP相关的内容时,是否想着如何自己实践观察里面的状态或者数据包?虽然推荐自己去写一个TCP连接的服务端-客户端程序,但是也可以利用nc命令来完成,例如,在一个终端中输入如下内容:
 
   $ nc -l 1234hello 编程珠玑
 
  PIN值 表明在1234端口监听,然后可以在另外一个终端进行连接;
 
   $ nc 127.0.0.1 1234
 
   hello 编程珠玑
 
   连接本地地址1234端口,这个过程中就可以抓包,分析TCP的三次握手了。
 
   除此之外,你还可以在建立好的连接之间发送消息(简单的聊天功能),让你分析更多!
 
   默认情况,它创建的是TCP连接,而使用-u(UDP)参数可以测试UDP连通性。
 
   $ nc -v -u 182.3.226.35 80Connection to 182.3.226.35 80 port [udp/http] succeeded!
 
   除此之外,还有很多参数用于调试,例如:
 
   -b 允许广播消息
 
   -D 开启socket调试模式
 
   -d 禁止从标准输入读取内容
 
   -k 客户端退出后,保持连接
 
   -v 显示详细信息
 
   由于在后面的文章中还会借助nc来说明,因此这里不详解介绍。
 
   HTTP连接测试
 
   例如查看HTTP头信息:
 
   $ nc  www.baidu.com 80HEAD / HTTP/1.1HTTP/1.1 302 FoundConnection: Keep-AliveContent-Length: 17931Content-Type: text/htmlDate: Sun, 23 Jun 2019 13:52:12 GMTEtag: "54d9748e-460b"Server: bfe/1.0.8.18
 
   连接后,输入HEAD / HTTP/1.1或HEAD / HTTP/1.0,然后输入两个回车,可查看web服务器相关信息。
 
   数据传输
 
   还是利用前面的连接,借助重定向符可以进行文件传输,例如服务端监听,并把内容输出到out.txt:
 
   $ nc -l 1234 > out.txt
 
   而客户端连接:
 
   $ nc 127.0.0.1 1234 
 
   这样客户端in.txt的内容,就会传输到out.txt
 
   关于重定向,可参考《如何linux shell中的2 > &1》
 
   当然了,对于文件传输,scp命令能更好地完成这件事。如果你没有其他办法了,可以试试nc。
 
   网络测试
 
   前面说到可以通过nc传输数据,同样如果我们想测试两个主机间的网络速度(当然你可以利用iperf工具来完成这个工作),nc也是可以帮忙的:
 
   #服务端监听:$ nc -vl 1234 >/dev/null
 
   其中重定向到/dev/null,表示将数据丢弃。
 
   然后在另一台主机上执行:
 
   $ dd if=/dev/zero bs=1M count=10 |nc -vn 127.0.0.1 1234Connection to 127.0.0.1 1234 port [tcp/*] succeeded!10+0 records in10+0 records out10485760 bytes (10 MB, 10 MiB) copied, 0.0333675 s, 314 MB/s
 
   dd拷贝数据,这里从/dev/zero拷贝数据0,且一次1M,拷贝10次,最后通过nc命令发送到服务端。结束后,就可以看到统计信息了。
 

(编辑:开发网_开封站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章