-
nc
的全名是netcat
, -
其主要用途是建立和监听任意TCP和UDP连接,支持ipv4和ipv6
-
因此,它可以用来网络调试、端口扫描等等。
测试端口号能否连接
- 用法:
nc -z -v 主机ip或域名 端口号
-
-z
告诉netcat,用户不想发送数据给主机,nc不用等待用户输入。 -
-v
告诉netcat输出详细的交互过程。 -
-z -v
可省略后面的-
,直接写作-zv
-
端口扫描
nc -z -v 主机ip或域名 端口号
的扩展,从指定的一个端口变成了一个范围的端口。- 用法:
nc -zv 主机的ip或域名 端口号下限-端口号上限
注意:虽然可以nc进行端口扫描。
但是它的扫描速度比较慢,建议用
nmap
命令进行更专业的端口扫描,速度更快。
nmap命令 是一款开放源代码的网络探测和安全审核工具,它的设计目标是快速地扫描大型网络。
语法
nmap(选项)(参数)
选项
-O:激活操作探测; -P0:值进行扫描,不ping主机; -PT:是同TCP的ping; -sV:探测服务版本信息; -sP:ping扫描,仅发现目标主机是否存活; -ps:发送同步(SYN)报文; -PU:发送udp ping; -PE:强制执行直接的ICMPping; -PB:默认模式,可以使用ICMPping和TCPping; -6:使用IPv6地址; -v:得到更多选项信息; -d:增加调试信息地输出; -oN:以人们可阅读的格式输出; -oX:以xml格式向指定文件输出信息; -oM:以机器可阅读的格式输出; -A:使用所有高级扫描选项; --resume:继续上次执行完的扫描; -P:指定要扫描的端口,可以是一个单独的端口,用逗号隔开多个端口,使用“-”表示端口范围; -e:在多网络接口Linux系统中,指定扫描使用的网络接口; -g:将指定的端口作为源端口进行扫描; --ttl:指定发送的扫描报文的生存期; --packet-trace:显示扫描过程中收发报文统计; --scanflags:设置在扫描报文中的TCP标志。 --send-eth/--send-ip 使用原始以太网发送/构造指定IP发送
作为服务端,监听特定端口号
-
测试客户端是否成功将信息发送到服务端。
-
用法:
nc -l 端口号
- 默认情况下是TCP
- 如果是UDP,则是
nc -lu 端口号
例子:
nc -l 8000
,然后用浏览器发起请求127.0.0.1:8000
。下图中可以看到netcat打印出来的浏览器发送的请求(包括但不限于请求方式、IP地址及端口号、连接方式、User-Agent……)
作为客户端,检测应用层协议是否正常
-
作为客户端,连接特定端口号,并发送应用层协议相关的信息,检测应用层协议是否正常。
- 与
nc -zv 主机的ip或域名 端口号
类似,但是前者仅仅测试端口连通性,此处主要侧重上层应用协议
- 与
-
用法:
nc 主机的ip或域名 端口号
—文件传输
-
这条实际上前面两个条的结合运用。
-
接收端:
nc -l 端口号 > 文件名
-
发送端:
nc 主机的ip或域名 端口号 < 文件名