基础网络测试工具
ping
(ICMP报文)
- 用途:测试主机连通性,发送ICMP Echo请求。
- 命令示例:
ping -c 4 192.168.1.1 # 发送4个ICMP包到指定IP ping6 fe80::1 # IPv6测试
- 参数说明:
-c [次数]
:指定发送次数。-s [字节]
:设置数据包大小(如-s 1500
)。
traceroute
(路径追踪)
- 用途:跟踪报文路径,识别网络瓶颈。
- 命令示例:
traceroute -n google.com # 禁用DNS解析(-n)
发送自定义数据包
hping3
(高级报文生成)
- 安装:
sudo apt install hping3
(Debian/Ubuntu) - 功能:支持TCP/UDP/ICMP自定义报文,常用于压力测试。
- 示例:
hping3 -S -p 80 -c 5 192.168.1.1 # 发送5个SYN包到80端口(半连接) hping3 --udp -s 53 -d 100 -p 53 8.8.8.8 # 发送100字节UDP包到DNS端口
- 关键参数:
-S
:SYN标志(TCP)。--udp
:UDP模式。-d [字节]
:数据长度。
nc
(Netcat)
- 用途:TCP/UDP数据传输与端口测试。
- 示例:
echo "Hello" | nc -u 192.168.1.1 1234 # UDP发送文本到1234端口 nc -zv 192.168.1.1 22 # 测试TCP端口22是否开放
HTTP/HTTPS报文发送
curl
(HTTP请求工具)
- 发送GET/POST请求:
curl -X POST -H "Content-Type: application/json" -d '{"key":"value"}' https://api.example.com
- 参数说明:
-X [方法]
:指定HTTP方法(GET/POST等)。-H "头字段"
:添加请求头。-d @file.json
:从文件加载数据。
wget
(下载与请求)
- 示例:
wget --post-data="user=admin&pass=123" http://example.com/login
原始报文构造(高级)
scapy
(Python库)
- 安装:
pip install scapy
- 功能:构造任意协议层报文(如ARP、DNS、自定义TCP标志)。
- 示例:
from scapy.all import * # 发送ICMP报文 send(IP(dst="192.168.1.1")/ICMP()/"Payload Data") # 构造TCP SYN包 send(IP(dst="example.com")/TCP(dport=80, flags="S"))
raw socket
(C语言)
- 底层开发示例:
#include <sys/socket.h> #include <netinet/ip.h> int sock = socket(AF_INET, SOCK_RAW, IPPROTO_RAW); // 创建原始套接字 struct sockaddr_in dest; dest.sin_port = htons(80); sendto(sock, buffer, sizeof(buffer), 0, (struct sockaddr*)&dest, sizeof(dest));
- 权限要求:需
root
权限(sudo
)。
安全与合规性
- 法律风险:
- 未经授权扫描或发包可能违反《网络安全法》及当地法规。
- 仅限测试自有设备或获得书面授权的环境。
- 防护建议:
- 使用防火墙限制外发包:
iptables -A OUTPUT -d 目标IP -j DROP
- 避免DDoS工具(如
hping3
的洪水模式)在公共网络使用。
- 使用防火墙限制外发包:
方法选择指南
场景 | 推荐工具 |
---|---|
基础连通性测试 | ping , traceroute |
HTTP接口调试 | curl , wget |
自定义TCP/UDP数据 | nc , hping3 |
协议栈测试/安全研究 | scapy , 原始套接字 |
引用说明基于Linux手册页(
man ping
/man hping3
)、Scapy官方文档及RFC 792(ICMP协议),实践操作需结合网络原理与系统权限管理。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/6565.html