时间戳选项在做什么
tcpdump 默认只打印时分秒与微秒,且不带日期。需要更细致的时间语义时用这一组选项:-t 完全不打印时间;-tt 打印 Unix 时间戳(整数秒加小数);-ttt 打印相对上一包的间隔;-tttt 带日期;-ttttt 打印相对首包的耗时。排查时延、重传与空闲间隔时,-ttt 的相对间隔最直观;与业务日志对齐时间必须用 -tttt。
基本信息
| -t | 不打印时间戳 |
|---|---|
| -tt | Unix 时间戳,形如 1760000000.123456 |
| -ttt | 相对上一包的间隔,单位秒 |
| -tttt | 带日期的完整时间戳 |
| -ttttt | 相对首包的累计耗时 |
典型使用场景
- 看重传间隔:相对时间能立刻暴露是否接近一个重传超时
- 与业务日志按时间对齐:带日期的时间戳可以直接和日志逐条比对
- 分析响应时延:请求与响应之间的时间差不用手工计算
- 排查空闲断连:看最后一次数据与本端关闭之间的间隔
- 做长时间抓包的时间轴标注:相对首包耗时便于描述事件顺序
- 导出用于报告:固定格式的时间戳能避免跨时区歧义
常用示例
常用示例
tcpdump -i eth0 -nn -ttt -c 20 port 443 # 每包间隔,判断重传与响应快慢
tcpdump -i eth0 -nn -tttt -c 5 # 完整日期时间
tcpdump -i eth0 -nn -ttttt -c 5 # 相对首包的累计耗时
tcpdump -nn -r a.pcap -tttt -c 10 # 离线读文件同样可用
tcpdump -i eth0 -nn -tt -c 5 port 53 # 统一时间基准,便于与其他工具对齐时间戳格式对照
| 选项 | 输出形态 | 适用判断 |
|---|---|---|
| 无 | 13:20:01.123456 | 快速浏览,缺少日期,不适合长周期排查 |
| -t | 无时间列 | 只关心报文内容与顺序时使用 |
| -tt | 1760000000.123456 | 需要统一时间基准与其他系统对齐 |
| -ttt | 0.002145 | 看间隔与重传超时最直观 |
| -tttt | 2026-10-13 13:20:01.123456 | 与业务日志按时间比对必须用它 |
| -ttttt | 125.432100 | 描述一段时间内的时序变化 |
-ttt 的第一个报文没有参照对象,间隔显示为零,属于正常现象。看大间隔时直接扫这一列,比逐个比时间戳快得多。
虚拟机时钟漂移会让时间戳不成线性,跨机器比对时间之前先核对时间同步状态,否则会把时钟误差当成网络时延。
判读要点
- 握手两个报文的间隔约等于半个往返时延,是判断建连快慢的基线
- 同一序列号出现的时间差接近一个重传超时,说明发生了超时重传
- 最后一条数据与本端关闭之间的间隔反映应用处理耗时,不是网络问题
- 长时间空闲后突然出现间隔很大的报文,要考虑连接保活或会话老化
- 跨机器之间的时间差只能作参考,没有统一时钟时不要用它计算时延