两个命令的介绍
telnet命令
telnet可以实现的功能:
1.连接服务器端口,并进行通信
2.登录远程telnet服务器,使用命令行对其进行控制
nc命令
nc可以实现的功能:
1.监听服务器端口,并与客户端通信(最多只能接收一个客户端)
2.对指定服务器进行端口扫描
3.作为客户端连接到远程服务器进行通信.
两个命令的下载
在使用之前,很多Linux发行版本没有集成这个命令,我的机器是deepin 15.10.1桌面版,需要预装,才能使用。
nc的下载
sudo apt-get install nc
telnet下载
sudo apt-get install telnet
nc命令的简单使用
(一)nc命令常用参数意义
- -l
由于nc命令默认是做客户端使用的,所以使用-l参数,用于指定nc将处于监听模式。意味着这时的nc被当作server,侦听并接受连接,而非向其它地址发起连接。 - -p
nc需要在端口号前加-p参数 - -s
指定发送数据的源IP地址,适用于多网卡机 - -u
nc命令默认的是TCP连接,-u指定nc使用UDP协议 - -v
输出交互或出错信息 - -w
超时秒数,后面跟数字 - -z
表示zero,表示扫描时不发送任何数据
(二)nc命令的常见使用
1. 监听服务器端口
nc -l -p [端口]
如:
nc -l -p 9998
功能:在本机上开启一个TCP服务器端口9998
2.端口扫描
nc -nvz [服务器地址] [端口区间]
如:
nc -nvz 192.168.1.106 9990-9999
功能:扫描地址192.168.1.106上的9990-9999端口
由于我上一步操作已经通过nc操作监听了端口9998,所以检测出来了该端口
3.连接服务器端口
nc [服务器地址] [端口]
如:
nc 192.168.1.106 9998
功能:连接到192.168.1.106上的9998端口(TCP连接)
因为刚才已经用9998端口作为服务器进行监听了,所以这样连接上就可以交互了,当然,使用下面的telnet命令同样可以做到。
telnet [服务器地址] [端口]
如:
telnet 192.168.1.106 9998
这时通过,管道,重定向,等操作也可以实现更多的功能,比如发文件,测电脑tcp带宽等。
4.通过TCP连接测出电脑的带宽
使用下面的命令作为客户端连接,服务则选择将客户端发的数据直接导向系统的黑洞,进行测试机器的tcp带宽,我的tcp带宽就是2.1GB每秒,由于dd命令和管道也要占用资源,所以测出来的值偏小。
客户端,当然里面的参数可以适当根据情况改变,比如发2G的数据测试
服务端
当然服务端也可以用下面这个命令,顺便能实时打印带宽
nc -l -p 9998 | pv -W > /dev/mull
5.通过tcp连接发文件
通过通过重定向发文件
nc [服务器地址] [端口] < [文件路径]
如:
nc 192.168.1.106 9998 < test
功能:向192.168.1.106上的9998端口(TCP)发送test文件
上面说的测试tcp带宽命令,同样可以利用发文件命令测试,算出时间除以文件大小,因为没有的dd和管道占用带宽,所以测出来的值更加准确。
time nc 192.168.1.106 9998 < test
但是注意如果使用这种放法得测试需要连续测试两遍,第一遍的时候测试数据偏低,是因为数据在磁盘里面,需要先读到内存,这个时间会拖慢整个测试,但是接着第二次在测试时,文件已经读到了内存里,测出来的值是真正的tcp带宽。
ps:虽然nc命令支持udp连接,但是我还没用过,所以就不说了
telnet命令的简单使用
(一)telnet命令常用参数意义
- -a
企图自动登录,除了当前一登录的用户名以外,与-l 选项相同 - -e
跳过字符直接进入 telnet 客户端提示 - -l
指定远程系统上登录的用户名
其实对于初学者来说,telnet命令这些参数一般用不着,所以记得下面这种写法就可以了,具体用法在后面写着。
telnet [服务器地址] [端口]
如:
telnet 192.168.1.106 9998
(二)telnet命令的常见使用
1.telnet命令可以测试一个IP的连通性
telnet 192.168.1.106
如下图,说明该IP主机没有开放telnet服务
2.查看远方服务器ssh端口是否开放:
telnet 192.168.1.106 8888
如果端口没有开放,则返回下图,无法连接。
如果端口开放,则连接成功,可以通过命令行进行简单的交互,发送数据。
3.对本机的服务器可以进行调试
如果是本机可以采用netstat命令来查看端口号的状态
netstat -an | grep 端口号
所以如果是本机的话,telnet命令的功能更多是做一个客户端和服务器进行简单的交互测试
部分内容来自nc命令用法举例