网络工具 #
curl - 数据传输工具 #
基本用法 #
bash
# 获取网页内容
$ curl https://example.com
# 下载文件
$ curl -O https://example.com/file.zip
$ curl -o myfile.zip https://example.com/file.zip
# 显示 HTTP 头
$ curl -I https://example.com
# 显示响应头和内容
$ curl -i https://example.com
# 跟随重定向
$ curl -L https://example.com
HTTP 请求 #
bash
# 指定请求方法
$ curl -X POST https://example.com/api
$ curl -X PUT https://example.com/api
$ curl -X DELETE https://example.com/api
# 发送表单数据
$ curl -d "name=John&age=30" https://example.com/api
# 发送 JSON 数据
$ curl -H "Content-Type: application/json" \
-d '{"name":"John","age":30}' \
https://example.com/api
# 从文件读取数据
$ curl -d @data.json https://example.com/api
# 添加请求头
$ curl -H "Authorization: Bearer token" https://example.com/api
$ curl -H "User-Agent: MyApp/1.0" https://example.com/api
# 发送 Cookie
$ curl -b "session=abc123" https://example.com
$ curl -b cookies.txt https://example.com
# 保存 Cookie
$ curl -c cookies.txt https://example.com
认证 #
bash
# 基本认证
$ curl -u username:password https://example.com
# Bearer Token
$ curl -H "Authorization: Bearer token" https://example.com
# OAuth
$ curl -H "Authorization: OAuth token" https://example.com
下载选项 #
bash
# 断点续传
$ curl -C - -O https://example.com/large_file.zip
# 限速下载
$ curl --limit-rate 1M -O https://example.com/file.zip
# 批量下载
$ curl -O https://example.com/file[1-10].zip
# 下载并显示进度
$ curl -# -O https://example.com/file.zip
# 并行下载
$ curl -Z -O https://example.com/file1.zip -O https://example.com/file2.zip
调试选项 #
bash
# 显示详细信息
$ curl -v https://example.com
# 只显示请求头
$ curl -v --head https://example.com
# 显示时间统计
$ curl -w "DNS: %{time_namelookup}s\nConnect: %{time_connect}s\nTTFB: %{time_starttransfer}s\nTotal: %{time_total}s\n" https://example.com
# 输出到文件
$ curl -v https://example.com 2>&1 | tee output.txt
# 静默模式
$ curl -s https://example.com
# 显示错误信息
$ curl -S -s https://example.com
# 测试连接
$ curl -v telnet://example.com:80
wget - 下载工具 #
基本用法 #
bash
# 下载文件
$ wget https://example.com/file.zip
# 指定文件名
$ wget -O myfile.zip https://example.com/file.zip
# 断点续传
$ wget -c https://example.com/large_file.zip
# 后台下载
$ wget -b https://example.com/file.zip
# 限速下载
$ wget --limit-rate=1M https://example.com/file.zip
递归下载 #
bash
# 递归下载网站
$ wget -r https://example.com
# 指定递归深度
$ wget -r -l 2 https://example.com
# 下载特定文件类型
$ wget -r -A "*.pdf" https://example.com
# 排除特定文件
$ wget -r -R "*.jpg,*.png" https://example.com
# 转换链接为本地
$ wget -r -k https://example.com
# 下载整个网站
$ wget --mirror https://example.com
认证 #
bash
# HTTP 认证
$ wget --user=username --password=password https://example.com
# FTP 认证
$ wget --ftp-user=username --ftp-password=password ftp://example.com
# 使用 Cookie
$ wget --load-cookies cookies.txt https://example.com
其他选项 #
bash
# 忽略证书错误
$ wget --no-check-certificate https://example.com
# 设置超时
$ wget --timeout=30 https://example.com
# 重试次数
$ wget --tries=5 https://example.com
# 等待间隔
$ wget --wait=5 -r https://example.com
# 从文件读取 URL
$ wget -i urls.txt
# 显示进度
$ wget --progress=bar https://example.com
# 静默模式
$ wget -q https://example.com
netstat - 网络统计 #
基本用法 #
bash
# 显示所有连接
$ netstat -a
# 显示 TCP 连接
$ netstat -t
# 显示 UDP 连接
$ netstat -u
# 显示监听端口
$ netstat -l
# 显示数字地址
$ netstat -n
# 显示进程信息
$ netstat -p
常用组合 #
bash
# 显示所有监听端口
$ netstat -lntp
# 显示所有 TCP 连接
$ netstat -antp
# 显示所有 UDP 连接
$ netstat -anup
# 显示路由表
$ netstat -r
# 显示网络统计
$ netstat -i
# 显示协议统计
$ netstat -s
# 持续显示
$ netstat -c
# 查看特定端口
$ netstat -tlnp | grep :80
ss - socket 统计 #
基本用法 #
bash
# 显示所有 socket
$ ss -a
# 显示 TCP socket
$ ss -t
# 显示 UDP socket
$ ss -u
# 显示监听 socket
$ ss -l
# 显示数字地址
$ ss -n
# 显示进程信息
$ ss -p
常用组合 #
bash
# 显示所有监听端口
$ ss -lntp
# 显示所有 TCP 连接
$ ss -antp
# 显示所有 UDP 连接
$ ss -anup
# 显示连接状态统计
$ ss -s
# 查看特定端口
$ ss -tlnp | grep :80
# 按状态过滤
$ ss -t state established
$ ss -t state time-wait
# 按端口过滤
$ ss -t dport = :80
$ ss -t sport = :80
ss vs netstat #
text
┌─────────────────────────────────────────────────────────────┐
│ ss vs netstat │
├─────────────────────────────────────────────────────────────┤
│ │
│ ss │
│ ├── 速度更快 │
│ ├── 显示更多信息 │
│ ├── 支持过滤 │
│ └── 推荐使用 │
│ │
│ netstat │
│ ├── 传统工具 │
│ ├── 兼容性好 │
│ └── 功能全面 │
│ │
└─────────────────────────────────────────────────────────────┘
tcpdump - 网络抓包 #
基本用法 #
bash
# 抓取所有包
$ sudo tcpdump
# 抓取指定接口
$ sudo tcpdump -i eth0
# 抓取指定数量
$ sudo tcpdump -c 100
# 保存到文件
$ sudo tcpdump -w capture.pcap
# 从文件读取
$ sudo tcpdump -r capture.pcap
# 显示详细
$ sudo tcpdump -v
# 显示更详细
$ sudo tcpdump -vv
# 显示十六进制
$ sudo tcpdump -X
过滤表达式 #
bash
# 按主机过滤
$ sudo tcpdump host 192.168.1.100
# 按源地址过滤
$ sudo tcpdump src host 192.168.1.100
# 按目标地址过滤
$ sudo tcpdump dst host 192.168.1.100
# 按端口过滤
$ sudo tcpdump port 80
$ sudo tcpdump port 443
# 按协议过滤
$ sudo tcpdump tcp
$ sudo tcpdump udp
$ sudo tcpdump icmp
# 组合过滤
$ sudo tcpdump host 192.168.1.100 and port 80
$ sudo tcpdump src host 192.168.1.100 and dst port 80
# 按网络过滤
$ sudo tcpdump net 192.168.1.0/24
实用示例 #
bash
# 抓取 HTTP 流量
$ sudo tcpdump -i eth0 port 80
# 抓取 DNS 查询
$ sudo tcpdump -i eth0 port 53
# 抓取 ICMP 流量
$ sudo tcpdump -i eth0 icmp
# 抓取 SSH 流量
$ sudo tcpdump -i eth0 port 22
# 抓取特定主机的流量
$ sudo tcpdump -i eth0 host 192.168.1.100
# 抓取 TCP SYN 包
$ sudo tcpdump -i eth0 'tcp[tcpflags] & tcp-syn != 0'
# 抓取 TCP RST 包
$ sudo tcpdump -i eth0 'tcp[tcpflags] & tcp-rst != 0'
# 显示 ASCII
$ sudo tcpdump -A -i eth0 port 80
nc - 网络工具 #
基本用法 #
bash
# 测试端口连通性
$ nc -zv example.com 80
# 扫描端口范围
$ nc -zv example.com 20-100
# 发送数据
$ echo "Hello" | nc example.com 80
# 接收数据
$ nc -l 8080
# 文件传输
# 接收端
$ nc -l 8080 > received_file
# 发送端
$ nc receiver_ip 8080 < file_to_send
# 聊天服务器
# 服务端
$ nc -l 8080
# 客户端
$ nc server_ip 8080
端口扫描 #
bash
# 扫描单个端口
$ nc -zv example.com 80
# 扫描端口范围
$ nc -zv example.com 1-1000
# 扫描多个端口
$ nc -zv example.com 80 443 8080
# 快速扫描
$ nc -zvn example.com 1-1000
小结 #
通过本节学习,你应该掌握:
- curl:数据传输、HTTP 请求、下载
- wget:文件下载、递归下载
- netstat:网络连接统计
- ss:socket 统计
- tcpdump:网络抓包
- nc:网络诊断和测试
下一步,我们将学习远程连接命令。
最后更新:2026-04-11