ncat 作为一款强大的网络工具,网络工具箱里的“瑞士军刀“。在开发及网络运维中可以发挥很大作用。这里使用 ncat 进行 HTTP get post模拟请求。ncat 作为基于 Socket 传输层 的工具,如何对于应用层协议的访问进行调试,如开发的时候请求头不符合规范问题。
一、ncat的安装
yum -y install nc
nc -h
-4 使用IPV4
-6 使用IPV6
-c, --sh-exec <command> 接收到的命令通过command(例如/bin/bash)执行
-e, --exec <command> 和-c差不多
--lua-exec <filename> 接收到的数据通过脚本filename执行
-m, --max-conns <n> 最大并发连接数(单独开启不生效,需配合--keep-open/--broker使用)
-d, --delay <time> 读写收发间隔时间
-o, --output <filename> 将会话数据转储到文件
-i, --idle-timeout <time> 读写超时时间
-p, --source-port port 指定连接使用的源端口号(client端使用)
-s, --source addr 客户端指定连接服务器使用的ip(client端使用)
-l, --listen 绑定和监听接入连接(server端使用)
-k, --keep-open 在监听模式中接受多个连接(配合-m使用)
-n, --nodns 不使用DNS解析主机名
-t, --telnet 响应telnet连接
-u, --udp 使用udp协议,默认tcp
-v, --verbose 显示详细信息
-w, --wait <time> 连接超时时间
--allow 允许指定主机连接
--allowfile 允许指定文件内的主机连接
--deny 拒绝指定主机连接
--denyfile 拒绝指定文件内的主机连接
--broker 启用代理模式
--proxy <addr[:port]> 指定代理主机ip和port
--proxy-type <type> 指定代理类型("http" or "socks4")
--proxy-auth <auth> 代理身份验证
二、nc发送get请求
get请求头文件header.txt
GET / HTTP/1.0 Host: baidu.com
nc baidu.com 80 < header.txt
三、nc发送post请求
post请求头文件header.txt,参数site=zixuephp.net test=test
POST / HTTP/1.0 Host: baidu.com Content-Type: application/x-www-form-urlencoded;charset=utf-8 Content-Length: 27 site=zixuephp.net&test=test
nc baidu.com 80 < header.txt
四、nc搭建简单内网聊天室
本机-本机 , 单台机器开了两个shell窗口,当一个窗口输入消息时,另一个窗口也会同步显示
ncat -v -lp 8080
#服务端 [root@localhost ~]$ ncat -v -lp 8080 Ncat: Version 7.50 ( https://nmap.org/ncat ) Ncat: Listening on :::8080 Ncat: Listening on 0.0.0.0:8080 Ncat: Connection from 127.0.0.1. Ncat: Connection from 127.0.0.1:45996. zixuephp.net
#客户端 [root@localhost ~]$ nc -v 127.0.0.1 8080 Ncat: Version 7.50 ( https://nmap.org/ncat ) Ncat: Connected to 127.0.0.1:8080. zixuephp.net
内网的其他机器更换客户端ip为服务端ip.
nc -v SERVER_IP 8080