nc命令

  是一个简单、可靠、强大的网络工具,它可以建立TCP连接,发送UDP数据包,监听任意的TCP和UDP端口,进行端口扫描,处理IPv4和IPv6数据包。
    如果系统没有nc命令,那么可以手动安装,安装命令为yum -y install nc。     

nc命令的参数选项及说明

-l    指定监听端口,然后一直等待网络连接
-z    表示zero,表示扫描时不发送任何数据
-v    显示详细输出
-w    设置超时时间,对-l选项失效
-p    指定nc命令使用的端口,不能和-l选项一起使用,可能引起错误
-u    使用UDP连接,默认是TCP连接
-s    指定发送数据的源IP地址,适用于多网卡主机
 
 
[root@cs6 ~]# /etc/init.d/iptables status
表格:filter
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
2 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0
3 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
4 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
5 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited Chain FORWARD (policy ACCEPT)
num target prot opt source destination
1 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited Chain OUTPUT (policy ACCEPT)
num target prot opt source destination [root@cs6 ~]# /etc/init.d/iptables stop
iptables:将链设置为政策 ACCEPT:filter [确定]
iptables:清除防火墙规则: [确定]
iptables:正在卸载模块: [确定]
[root@cs6 ~]# setenforce 0
[root@cs6 ~]# getenforce
Permissive

模拟 TCP 连接并传输文本内容(远程复制文件

[root@cs6 ~]# nc -l 12345 > lewen.nc  #<=监听12345端口,将数据写入oldboy.nc
#<=执行完上面的命令后,当前窗口挂起。
#<=新开一个窗口执行命令。
[root@cs6 ~]# cat lewen.nc #<=首先查看12345端口。
[root@cs6 ~]# netstat -lntup|grep 12345
tcp 0 0 0.0.0.0:12345 0.0.0.0:* LISTEN 2612/nc
[root@cs6 ~]# cat lewen.log #<=待用的文件。
6.8.0 #<=文件中的内容
[root@cs6 ~]# nc 10.0.0.100 12345 < lewen.log #<=使用nc命令向10.0.0.100 主机12345 端口传输lewen.log文件
[root@cs6 ~]# netstat -lntup|grep 12345 #<==nc命令传输完数据后自动终止。
[root@cs6 ~]# cat lewen.nc #检查结果
6.8.0

用Shell 模拟一个简单的Web 服务器效果案例

[root@cs6 ~]# echo "I love linux www.wenyule.top" >test.txt
[root@cs6 ~]# vim web.sh
#!/bin/bash
while true
do
nc -l 80 < test.txt # 一直监听80端口,test.txt是发送给用户的内容。
done [root@cs6 ~]# sh web.sh &>/dev/null &
[1] 2685
[root@cs6 ~]# [root@cs6 ~]# netstat -lntup|grep 80
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 2686/nc
[root@cs6 ~]# curl 127.0.0.1
I love linux www.wenyule.top

手动与HTTP服务器建立连接的例子。

[root@cs6 ~]# nc blog.oldboyedu.com 80
GET /about-us/ HTTP/1.1 <=粘贴这两行语句,速度要快,如果慢了程序就会超时自动退出。
host:blog.oldboyedu.com <==HTTP/1.1的要求必须写明hosto
#<==敲两次回车确认发送请求报文,下面就是响应报文的内容。
HTTP/1.1 301 Moved Permanently
Server: nginx
Date: Tue, 07 May 2019 13:40:50 GMT
Content-Type: text/html
Content-Length: 178
Connection: keep-alive
Location: https://blog.oldboyedu.com/about-us/ <html>
<head><title>301 Moved Permanently</title></head>
<body bgcolor="white">
<center><h1>301 Moved Permanently</h1></center>
<hr><center>nginx</center>
</body>
</html>

利用nc 进行端口扫描

[root@cs6 ~]# nc -z 10.0.0.100 20-30
Connection to 10.0.0.100 22 port [tcp/ssh] succeeded!
[root@cs6 ~]# nc -z 10.0.0.100 22
Connection to 10.0.0.100 22 port [tcp/ssh] succeeded!
[root@cs6 ~]# nc -zv 10.0.0.100 20-30 #<=使用-v选项详细显示扫描过程
nc: connect to 10.0.0.100 port 20 (tcp) failed: Connection refused
nc: connect to 10.0.0.100 port 21 (tcp) failed: Connection refused
Connection to 10.0.0.100 22 port [tcp/ssh] succeeded!
nc: connect to 10.0.0.100 port 23 (tcp) failed: Connection refused
nc: connect to 10.0.0.100 port 24 (tcp) failed: Connection refused
nc: connect to 10.0.0.100 port 25 (tcp) failed: Connection refused
nc: connect to 10.0.0.100 port 26 (tcp) failed: Connection refused
nc: connect to 10.0.0.100 port 27 (tcp) failed: Connection refused
nc: connect to 10.0.0.100 port 28 (tcp) failed: Connection refused
nc: connect to 10.0.0.100 port 29 (tcp) failed: Connection refused
nc: connect to 10.0.0.100 port 30 (tcp) failed: Connection refused

使用nc命令,模拟QQ聊天工具聊天

打开两个命令行窗口,模拟两个人聊天的场景。
首先在第一个窗口执行如下命令,执行完会hang住等待输入状态:
[root@cs6 ~]# nc -l 12345
 
然后在第2个窗口执行如下命令,执行完也会hang住等待输入状态:
[root@cs6 ~]# nc 127.0.0.1 12345
 
此时两个窗口都等待输入内容。我们先新建第3个窗口,查看他们建立的网络连接:
 
[root@cs6 ~]# netstat -ntp|grep nc #<=12345端口是nc指定开放的,52978端口是系统为了和12345就口通信随机开放的,当然也可以使用-p选项指定开放端口。
tcp        0      0 127.0.0.1:12345             127.0.0.1:37060             ESTABLISHED 2748/nc             
tcp        0      0 127.0.0.1:37060             127.0.0.1:12345             ESTABLISHED 2749/nc   
 
怎么聊天呢?很简单,你在第一个窗口中输入想要说的话,然后敲回车键,悄悄话就会自动发送到对方(第二个窗口),和QQ的效果一样:
 
[root@cs6 ~]# nc -l 12345
hi,I am lewen
 
对方(第二个窗口)也只需要输入回复的话然后敲回车键,消息就能发送给你:
[root@cs6 ~]# nc 127.0.0.1 12345
hi,I am lewen
hello,lewen
 
 
 
 
 
 
 

10.13 nc:多功能网络工具的更多相关文章

  1. 2018.10.13 bzoj1834: [ZJOI2010]network 网络扩容(最大流+费用流)

    传送门 网络流水题啊. 第一问直接放心跑最大流(本来还以为有什么tricktricktrick). 第二问就直接把原来的边(u,v,c,w)(u,v,c,w)(u,v,c,w)变成(u,v,c,0)( ...

  2. 功能超级强大的网络工具nc

    摘自:http://www.linuxso.com/command/nc.html 功能说明:功能强大的网络工具语 法:nc [-hlnruz][-g<网关...>][-G<指向器数 ...

  3. linux网络工具nc命令

    nc是netcat的简写,有着网络界的瑞士军刀美誉.因为它短小精悍.功能实用,被设计为一个简单.可靠的网络工具. nc命令的作用 (1)实现任意TCP/UDP端口的侦听,nc可以作为server以TC ...

  4. Linux 网络工具netcat(nc)的应用

    NETCAT netcat是Linux常用的网络工具之一,它能通过TCP和UDP在网络中读写数据,通过与其他工具结合和重定向,可以在脚本中以多种方式使用它. netcat所做的就是在两台电脑之间建立链 ...

  5. 项目实战10.1—企业级自动化运维工具应用实战-ansible

    实战环境: 公司计划在年底做一次大型市场促销活动,全面冲刺下交易额,为明年的上市做准备.公司要求各业务组对年底大促做准备,运维部要求所有业务容量进行三倍的扩容,并搭建出多套环境可以共开发和测试人员做测 ...

  6. Android高效率编码-细节,控件,架包,功能,工具,开源汇总,你想要的这里都有

    Android高效率编码-细节,控件,架包,功能,工具,开源汇总 其实写博客的初衷也并不是说什么分享技术,毕竟咱还只是个小程序员,最大的目的就是对自我的知识积累,以后万一编码的时候断片了,也可以翻出来 ...

  7. Linux 网络工具

    1 nethogs nethogs 是一个免费的工具,当要查找哪个 PID (注:即 process identifier,进程 ID) 给你的网络流量带来了麻烦时,它是非常方便的.它按每个进程来分组 ...

  8. Linux Netcat 命令——网络工具中的瑞士军刀

    原文:http://www.oschina.net/translate/linux-netcat-command netcat是网络工具中的瑞士军刀,它能通过TCP和UDP在网络中读写数据.通过与其他 ...

  9. NetCat,在网络工具中有“瑞士军刀”美誉

    nc命令详解   NetCat,在网络工具中有“瑞士军刀”美誉,其有Windows和Linux的版本.因为它短小精悍(1.84版本也不过25k,旧版本或缩减版甚至更小).功能实用,被设计为一个简单.可 ...

随机推荐

  1. 6.1vector用法

    目录 一.用法介绍 二.基本用法 三.PAT A1039 一.用法介绍 vector<typename>name; 按照这样的格式进行定义与书写. 注意定义成双数组的情况要加上空格. ve ...

  2. 王炸!!IDEA 2021.1 推出语音、视频功能,边写代码边聊天,我真的服了…

    IDEA 2020.3 刚没用多久,2021.1 又陆续给我推送更新了: 启动就提醒更新,麻烦,那不如更新下,体验下新版本. 如上图所示,2021.1 更新了 9 个新特性,下面栈长会一一体验给大家介 ...

  3. GoTTY-K8S-Docker 终端

    安装GoTTY 下载yum源 curl -s https://mirror.go-repo.io/centos/go-repo.repo | tee /etc/yum.repos.d/go-repo. ...

  4. Salesforce 集成篇零基础学习(一)Connected App

    本篇参考: https://zhuanlan.zhihu.com/p/89020647 https://trailhead.salesforce.com/content/learn/modules/c ...

  5. 4-socket套接字编程

    socket套接字编程 目标:根据socket模块提供的接口函数,进行组合使用完成基于tcp或者udp的网络编程. 套接字:完成上述目标的一种编程手段,编程方案. 套接字分类: 流式套接字(sock_ ...

  6. kali 中的内置工具

    askDing Life is short,use python 博客园 | 首页 | 新随笔 | 新文章 | 联系 | 订阅 | 管理 随笔: 326 文章: 5 评论: 4 引用: 0 kali菜 ...

  7. Andrew Ng机器学习算法入门((七):特征选择和多项式回归

    特征选择 还是回归到房价的问题.在最开始的问题中,我们假设房价与房屋面积有关,那么最开始对房价预测的时候,回归方程可能如下所示: 其中frontage表示的房子的长,depth表示的是房子的宽. 但长 ...

  8. 【JavaScript】Leetcode每日一题-青蛙过河

    [JavaScript]Leetcode每日一题-青蛙过河 [题目描述] 一只青蛙想要过河. 假定河流被等分为若干个单元格,并且在每一个单元格内都有可能放有一块石子(也有可能没有). 青蛙可以跳上石子 ...

  9. 一文带你详细介绍c++中的std::move函数

    前言 在探讨c++11中的Move函数前,先介绍两个概念(左值和右值) 左值和右值 首先区分左值和右值 左值是表达式结束后依然存在的持久对象(代表一个在内存中占有确定位置的对象) 右值是表达式结束时不 ...

  10. (转)elasticsearch连接不到head插件解决方案

    (1)elasticsearch-5x下的 config/elasticsearch.yml   http.cors.enabled: true   http.cors.allow-origin: & ...