nc/netcat使用

一、前言

1.netcat是什么

     netcat是一个基于命令行的网络调试和开发工具。对于windows和linux操作系统中都有适配的程序包,程序文件短小精悍。在网络编程的世界里,有 “瑞士军刀” 的美誉。

2.netcat有什么用

  既能够模拟客户端的行为进行数据包的发送,也能够模拟服务端的行为进行数据包的接收,
  只需启动两个netcat进程,就能同时扮演客户端和服务器的角色。
  
  比如端口连通性测试,我们通常可以使用 telnet 命令来测试目标服务器的端口是否开启,当然我们也可以使用netcat来完成。
  另外使用netcat结合重定向输入输出还能够实现文件传输。

二、netcat的使用

1.程序文件

   下图中是windows系统中netcat-1.11版本程序包解压之后的目录
   ![在这里插入图片描述](https://img-blog.csdnimg.cn/5f8148b7aa23417198da60982e65c647.png)
   其中包含nc.exe和nc64.exe,分别表示32位系统和64位系统下的可执行程序
   readme.txt 文件包含 netcat基本命令的使用介绍
   ![在这里插入图片描述](https://img-blog.csdnimg.cn/a4dca3787f2a45ee859d74e8affbdebe.png)

2.作为HTTP客户端

     访问百度首页,可以使用如下命令
nc www.baidu.com 80

程序启动后,在控制台输入

GET /index.html HTTP/1.1

然后按下两个换行并等待控制台的输出
在这里插入图片描述
可以看到来自百度服务器的响应头和响应体。

3.作为HTTP服务端

比如侦听23端口 可以使用命令 nc -l -p 23
-l 表示listen,-p表示端口

nc -l -p 23

运行命令后,控制台处于等待状态
在这里插入图片描述
此时,可以使用PostMan作为客户端发送测试HTTP请求
发送请求后,发送按钮的文字变成"Sending… ",也就是发送中等待服务端响应报文
在这里插入图片描述
查看nc控制台输出,可以看到PostMan发送的请求头和请求体
在这里插入图片描述
在控制台输入以下响应报文然后按回车

HTTP/1.1 200 OK
Content-Length: 12

Hello,World!

在这里插入图片描述
然后切换到PostMan主界面,可以看到PostMan显示了响应体

在这里插入图片描述
这样netcat和postman就共同完成了一次完整的http请求

4.文件传输

要进行文件传输,需要同时开启两个netcat进程,一个作为发送端一个作为接收端
先启动接收端,再启动发送端
接收端命令

nc -l -p 23 > test\nc.exe

发送端命令

nc localhost 23 < nc.exe

在这里插入图片描述
值得注意的是发送端在文件发送完之后不会断开连接,可以在发送端 控制台按下ctrl+c组合键
运行test\nc.exe,测试接收文件的完整性
在这里插入图片描述
可以看到正常执行,说明没有丢包

扫描二维码关注公众号,回复: 17240412 查看本文章

三、问题与思考

在不使用控制台输入输出重定向的情况下,在控制台发送数据包需要按下回车进行逐行发送。
发送文件相对有局限性,启动单个进程后只能发送单个文件。

四、小结

1.程序包短小精悍,既能作为客户端又能作为服务端,减少了不必要的第三方引入。
2.使用netcat能够看到tcp连接数据包的完整性,方便使用者找出字符串拼接一类的错误,具有实用性。
3.发送的数据包格式较为基础,能够提高对各种协议数据包格式的认识,对理解上层应用有好处。

猜你喜欢

转载自blog.csdn.net/weixin_38526093/article/details/131091427