tcpdump 抓包

本文记录一下通过 tcpdump 工具,抓取 https 的报文。

以站点 http://nghttp2.org 为例,输入一下脚本:

# 监听 80 端口,并将抓包文件存储为 h2c.pcap
tcpdump port 80 and host nghttp2.org -w h2c.pcap

# 通过 curl 发送 https 请求
curl http://nghttp2.org --http2 -v

生成 h2c.pcap 文件,可以通过 wireshark 抓包工具进行导入分析。

附录1:tcpdump 指令

基本指令

  • -D 列举所有的网卡设备
  • -i 选择网卡设备
  • -c 抓取多少条报文
  • –time-stamp-precision 指定捕获时的时间精度,默认毫秒 micro,可选纳秒 nano
  • -s 指定每条报文的最大字节数,默认 262144 字节

文件操作

  • -w 输出结果至文件
  • -C 限制输入文本的大小
  • -W 指定输出文字的最大数量,到达后重新覆写第一个文件
  • -G 指定每隔 N 秒就重新输出新文件
  • -r 读取一个抓包文件
  • -V 将待读取的多个文件写入一个文件中,通过读取该文件同时读取多个文件

分析信息详情

  • -e 显示数据链路层头部
  • -q 不显示传输层信息
  • -v 显示网络层头部更多信息,如 TTL、id等
  • -n 显示 IP 地址、数字端口代替 hostname 等
  • -S TCP信息以绝对序列号代替相对序列号
  • -A 以 ASCII 方式显示报文内容,使用 HTTP 分析
  • -x 以 16 进制方式显示报文内容,不显示数据链路层
  • -xx 以 16 进制方式显示报文内容,显示数据链路层
  • -X 同时以 16 进制及 ASCII 方式显示报文内容,不显示数据链路层
  • -XX 同时以 16 进制及 ASCII 方式显示报文内容,显示数据链路层

示例:
tcpdump -i lo -c 5 -X // 输入如下抓包指令
curl localhost // 通过 curl 工具发送请求

附录2:tcpdump 分析http 三次握手
# 1. 输入指令 (网卡设备可以通过 -D 查看)
tcpdump -i lo0 port 8888 -c 3 -S

# 2. 本地启动 8888 服务(略)

# 3. 使用 curl 发起请求
curl localhost:8888

可以查看到如下报文:

➜  ~ tcpdump -i lo0 port 8888 -c 3 -S
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on lo0, link-type NULL (BSD loopback), capture size 262144 bytes
12:09:33.396424 IP6 localhost.49791 > localhost.ddi-tcp-1: Flags [S], seq 997481431, win 65535, options [mss 16324,nop,wscale 6,nop,nop,TS val 4021779536 ecr 0,sackOK,eol], length 0
12:09:33.396441 IP6 localhost.ddi-tcp-1 > localhost.49791: Flags [R.], seq 0, ack 997481432, win 0, length 0
12:09:33.396521 IP localhost.49792 > localhost.ddi-tcp-1: Flags [S], seq 20003803, win 65535, options [mss 16344,nop,wscale 6,nop,nop,TS val 3510103281 ecr 0,sackOK,eol], length 0
3 packets captured
216 packets received by filter
0 packets dropped by kernel

至此,结束。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值