如何掌握Linux发送报文的高级技巧?

基础网络测试工具

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)。

安全与合规性

  1. 法律风险
    • 未经授权扫描或发包可能违反《网络安全法》及当地法规。
    • 仅限测试自有设备或获得书面授权的环境。
  2. 防护建议
    • 使用防火墙限制外发包: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

(0)
酷番叔酷番叔
上一篇 2025年7月7日 12:00
下一篇 2025年7月7日 12:13

相关推荐

  • 如何快速精通Linux指令?

    基础操作环境打开终端图形界面:按 Ctrl+Alt+T(Ubuntu等)或从应用菜单搜索”Terminal”,纯文本模式:直接登录后进入命令行界面,远程连接:使用 ssh 用户名@IP地址(如 ssh user@192.168.1.10),指令结构命令格式:命令 [选项] [参数]示例:ls -l /homel……

    2025年7月20日
    12700
  • Linux如何设置用户账户的有效期限?

    在Linux系统中,设置账户期限是重要的安全管理措施,尤其适用于临时用户、项目成员或需要定期审查访问权限的场景,通过限制账户的有效期,可以避免长期闲置账户带来的安全风险,如未及时撤销的权限被滥用,本文将详细介绍Linux系统中设置账户期限的常用方法、命令参数及注意事项,使用usermod命令设置账户过期时间us……

    2025年9月9日
    1.1K00
  • Linux系统如何升级Java版本升级包?

    在Linux系统中升级Java版本是常见运维任务,涉及版本确认、下载安装、环境变量配置等步骤,不同发行版(如Ubuntu、CentOS)和安装方式(手动安装、包管理器)操作略有差异,需结合实际场景选择合适方法,以下是详细操作流程及注意事项,升级前的准备工作确认当前Java版本执行java -version查看系……

    2025年9月10日
    11500
  • linux命令端如何上一页

    Linux 命令端,可使用 Ctrl + U 或 `Page

    2025年8月14日
    11000
  • Linux中如何快速回到终端命令行界面?

    在Linux系统中,终端命令行是用户与系统直接交互的核心方式,无论是系统管理、软件开发还是日常操作,熟练掌握“回到终端命令行”的方法都非常重要,根据不同的使用场景和当前系统状态,“回到终端”的具体操作也有所差异,下面将详细说明各种常见情况下的操作方法,从图形桌面环境切换到纯文本终端(TTY)当你在Linux图形……

    2025年10月4日
    12700

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信