c语言编程笔录

首页 >   > 笔记大全

笔记大全

linux nc和telnet的区别有哪些

更新时间:2023-12-05

1. nc 和 telnet 的基本介绍

nc(netcat)是一个计算机网络工具,用于读写网络连接。它在Linux/Unix系统中使用广泛,可用于创建任何TCP/UDP的连接,作为简单文件传输或作为侦听者制作服务器。而telnet是一种网络协议,常用于远程登录Internet上的计算机。它使用明文传输登录信息,所以现在使用较少。

# nc 中文帮助信息
[root@localhost ~]# nc --help
选项:
-4                      仅使用 IPv4 进行连接
-6                      仅使用 IPv6 进行连接
-b                      指定本地 IP 地址
-C                      发送 CRLF,而不是仅发送 LF
-D                      得到错误信息详情
-d                      禁止使用域名解析
-e, --exec              执行路径
-g                      确定时间轴
-G                      超时时间
-h,--help               打印帮助信息并退出
-i, --interval          每条数据之间间隔的秒数
-l, --listen            查看监听是否进行
-L                      与 --listen 相似,但第一个连接后退出
-n                      不使用 DNS 解析主机名
-o file                 输出内容到给定的文件
-o 文件描述             输出内容到文件描述 n
-p, --port              端口号指定
-q                      简明模式(仅显示核心内容)
-r                      随机端口号
-s addr                 本地源地址
-S                      禁止端口扫描(扫描本地连接)
-t                      使用 TCP 协议
-T                      启用选项
-u                      使用 UDP 协议
-v,--verbose            显示详细的输出
-w, --wait              超时时间
-z                      设置端口扫描
# telnet 帮助信息
[root@localhost ~]# telnet
telnet> ?
命令 (10 种): 
    ?                        此帮助信息
    close                  关闭当前连接
    display                显示协议状态
    disable                禁用指定的 Telnet 选项
    en                       返回到跟用户 EXEC 模式
    exit                      退出 telnet 客户端
    open                  连接远程 Telnet 服务器
    quit                     退出 telnet 客户端
    send                   给远程服务器发送协议特定的命令/操作
    set                      设置 Telnet 环境变量和选项

2. nc 和 telnet 的用法和作用比较

nc 和 telnet 都可以在网络中进行数据传输和通信,但它们的使用方法和作用不同。

nc 的使用方法:

# 在服务端启动一个简单的 HTTP 服务器,等待客户端连接
# -l 表示服务端为监听模式
# -p 表示服务端监听的端口号
# -e 表示执行的命令,这里是启动 Python 自带的一个 HTTP 服务器
[root@localhost ~]# nc -lp 8080 -e /usr/bin/python

# 在客户端连接服务端的 HTTP 服务器并发送请求
# 127.0.0.1 表示服务端 IP 地址
# 8080 表示服务端监听的端口号
# -v 表示显示详细的输出信息
# 这里使用 echo 命令模拟 HTTP 请求报文
[root@localhost ~]# echo -e "GET / HTTP/1.0\r\n\r\n" | nc -v 127.0.0.1 8080

telnet 的使用方法:

# 使用 telnet 连接百度首页
telnet www.baidu.com 80

# 输入以下 HTTP 请求报文信息
# 按照 HTTP 协议规范,每个报文以两个一起的换行结尾
GET / HTTP/1.1
Host: www.baidu.com

# 输出结果
HTTP/1.1 200 OK
...

从上面可以看出,nc 更适合用于构建网络服务,而telnet 更多用于在命令行中进行网络交互和调试。

3. nc 和 telnet 的网络安全

由于 telnet 认证数据以明文传送,安全性差,所以现在很多系统已经不再使用该协议进行远程登录,而采用SSH协议。相比之下,nc 更少会因为服务器端漏洞而被黑客攻击。

一个常见的使用nc的例子是他用于使用shell脚本来检测TCP/UDP端口是否可用。以下例子让用户脚本定期检查数据库端口的可用性:

#!/bin/bash
nc -z localhost 3306
if [ $? -eq 0 ]; then
    echo "MYSQL is UP!"
else
    echo "MYSQL is DOWN!"
fi

4. nc 和 telnet 的优缺点总结

nc 优点:

  • 使用广泛,可用于创建任何TCP/UDP的连接,作为简单文件传输或作为侦听者制作服务器;
  • 相对于telnet,更少会因为服务器端漏洞被黑客攻击。

nc 缺点:

  • 可能繁琐和麻烦,需要编写很多命令行参数;
  • 需要手动输入命令,可读性较差。

telnet 优点:

  • 可用于在命令行中进行网络交互和调试,适合用于文本界面的远程登录协议;
  • 简单直接,容易上手。

telnet 缺点:

  • 认证数据以明文传送,安全性差;
  • 现在很多系统已经不再使用该协议进行远程登录,而采用SSH协议。

综上所述,nc 和 telnet 都是常用的网络工具,它们有着各自的特点和优缺点。在使用中,需要根据需求进行选择,以获得更好的使用体验。