网络工具 #

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

小结 #

通过本节学习,你应该掌握:

  1. curl:数据传输、HTTP 请求、下载
  2. wget:文件下载、递归下载
  3. netstat:网络连接统计
  4. ss:socket 统计
  5. tcpdump:网络抓包
  6. nc:网络诊断和测试

下一步,我们将学习远程连接命令。

最后更新:2026-04-11