如何掌握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如何安装配置SFTP服务器?

    在Linux系统中,SFTP(SSH File Transfer Protocol)是一种基于SSH的安全文件传输协议,通过加密传输数据保障文件传输的安全性,广泛应用于服务器文件管理、数据备份等场景,本文将以主流Linux发行版(Ubuntu/Debian、CentOS/RHEL)为例,详细讲解SFTP服务器的……

    2025年10月6日
    18800
  • Linux没有IP文件夹?正确操作指南

    访问本地网络配置文件目录Linux的网络配置通常存储在以下目录中,需使用终端命令操作:打开终端Ctrl+Alt+T(Ubuntu)或右键选择“打开终端”,进入网络配置目录通用路径(大部分系统): cd /etc/network/关键文件:interfaces(Debian/Ubuntu旧版)Red Hat/Ce……

    2025年6月26日
    16400
  • Linux如何放行端口?防火墙规则配置步骤有哪些?

    在Linux系统中,放行端口是确保网络服务(如Web服务、数据库、SSH等)能够正常访问的关键操作,由于不同Linux发行版默认使用的防火墙工具不同(如CentOS/RHEL常用firewalld,Ubuntu/Debian常用iptables或ufw),且云服务器(如AWS、阿里云)还需额外配置安全组,因此需……

    2025年10月7日
    22600
  • linux如何ping攻

    Linux中,使用ping命令进行网络连通性测试,格式为ping [目标地址],如`ping www.example.

    2025年8月19日
    14200
  • 如何做Linux开发?新手需掌握的核心步骤与技能是什么?

    Linux开发是一个涉及系统底层、应用层工具链及多领域实践的综合性工程,从环境搭建到核心技能掌握,再到项目实践,需要系统性的学习和持续的积累,以下是详细的Linux开发实践指南,基础环境搭建Linux开发的首要任务是搭建稳定高效的开发环境,对于新手,推荐选择Ubuntu 22.04 LTS或CentOS Str……

    2025年10月1日
    16600

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信