tcpdump

本文主要探讨tcpdump抓包相关 知识。

常用参数

复制代码
-a 地址转成域名
-c 指定抓包数量
-e 显示mac地址、以太网类型
-i 监听指定网卡
-n 不解析域名
-N 不显示域名后缀
-p 禁止混杂模式
-q 快速输出,较少协议信息
-r 读取数据包文件
-s 抓包长度(0 代表抓取整个包)
-S 显示绝对的流序号
-t 禁止显示时间戳
-tt 显示未格式化时间戳
-v/vv/vvv 逐级详细输出信息
-w 写入保存数据包
-x 以16进制显示报文
-A 直接现实ASCII文本(适合HTTP)

过滤规则语法

复制代码
host | dst/src host    	        抓取指定IP
port | dst/src port    	        抓取指定端口
len <=  /   >= length       	按报文长度过滤
udp/tcp/arp/ip/ip6   	        指定协议类型
&&  ||  !   		 	        逻辑运算

ARP/RARP抓包

复制代码
#tcpdump arp

arp who-has csam tell rtsg
arp reply csam is-at CSAM

#tcpdump arp -n

arp who-has 128.3.254.6 tell 128.3.254.68
arp reply 128.3.254.6 is-at 02:07:01:00:01:c4
 
#tcpdump arp -e

RTSG Broadcast 0806 64: arp who-has csam tell rtsg
CSAM RTSG 0806 64: arp reply csam is-at CSAM
 
rtsg 发出arp报文询问csam以太网地址
csam 回复自身以太网地址

TCP抓包

复制代码
通用格式
time src > dst: flags seq ack window urgent options length

字段含义

复制代码
time:时间戳
Src/dst:源/目的IP地址和端口

Flags 标志位
	A:ACK 确认收到报文
	S:SYN 发起连接
	F:FIN 关闭连接
	P:PUSH 推送数据
	R:RST 强制断开
	.:普通确认
 
seq:TCP序列号
无数据:seq 起始序号
有数据:seq 起始:结束(差值为数据字节数)
 
ack:确认序号
ack 1234 代表已收到1235前所有字节,期望下一个序号为1234
 
win:滑动窗口大小
urgent:紧急数据
options:扩展选项
nop:空占位符,用于4字节对齐
mss:单次最大载荷数据
wscale:窗口缩放,真实窗口 = win * 2^wscale
TS val/eor:本地/对端时间戳
sack:支持重传缺失报文片段
 
length:有效载荷数据长度

TCP交互示例

复制代码
rtsg.1023 > csam.login: S 768512:768512(0) win 4096 <mss 1024>
csam.login > rtsg.1023: S. 947648:947648(0) ack 768513 win 4096 <mss 1024>
rtsg.1023 > csam.login: . ack 1 win 4096
 
rtsg.1023 > csam.login: P 1:2(1) ack 1 win 4096
csam.login > rtsg.1023: . ack 2 win 4096
rtsg.1023 > csam.login: P 2:21(19) ack 1 win 4096
csam.login > rtsg.1023: P 1:2(1) ack 21 win 4077
rtsg.1023 > csam.login: P 3:4(1) ack 21 win 4077 urg 1
csam.login > rtsg.1023: P 3:4(1) ack 21 win 4077 urg 1
 
交互说明:
rtsg.1023 向 csam.login 发送SYN报文发起连接
csam.login 向 rtsg.1023 发送SYN+ACK报文应答连接
rtsg.1023 发送ACK完成三次握手
握手完成后开始正常数据收发与确认

构造抓包

复制代码
启动http服务
python3 -m http.server

启动抓包
tcpdump -i any 'tcp and port 8000'

浏览器访问
192.168.200.100:8000   

http启动示例(抓包端口由启动的端口决定)

浏览访问图例(包端口由启动的端口决定,ip为启动http的服务器地址)

抓包示例

复制代码
08:19:53.620075 ens33 In  IP bogon.55203 > bogon.8000: Flags [S], seq 3574316881, win 64240, options [mss 1460,nop,wscale 8,nop,nop,sackOK], length 0
08:19:53.620109 ens33 Out IP bogon.8000 > bogon.55203: Flags [S.], seq 702696800, ack 3574316882, win 64240, options [mss 1460,nop,nop,sackOK,nop,wscale 9], length 0
08:19:53.620361 ens33 In  IP bogon.55204 > bogon.8000: Flags [S], seq 4033216645, win 64240, options [mss 1460,nop,wscale 8,nop,nop,sackOK], length 0
08:19:53.620361 ens33 In  IP bogon.55203 > bogon.8000: Flags [.], ack 1, win 4106, length 0
08:19:53.620373 ens33 Out IP bogon.8000 > bogon.55204: Flags [S.], seq 1391373289, ack 4033216646, win 64240, options [mss 1460,nop,nop,sackOK,nop,wscale 9], length 0
08:19:53.620666 ens33 In  IP bogon.55204 > bogon.8000: Flags [.], ack 1, win 4106, length 0
08:19:53.621269 ens33 In  IP bogon.55203 > bogon.8000: Flags [P.], seq 1:483, ack 1, win 4106, length 482
08:19:53.621284 ens33 Out IP bogon.8000 > bogon.55203: Flags [.], ack 483, win 126, length 0
08:19:53.625022 ens33 Out IP bogon.8000 > bogon.55203: Flags [P.], seq 1:156, ack 483, win 126, length 155
08:19:53.625126 ens33 Out IP bogon.8000 > bogon.55203: Flags [FP.], seq 156:960, ack 483, win 126, length 804
08:19:53.625287 ens33 In  IP bogon.55203 > bogon.8000: Flags [.], ack 961, win 4102, length 0
08:19:53.627360 ens33 In  IP bogon.55203 > bogon.8000: Flags [F.], seq 483, ack 961, win 4102, length 0
08:19:53.627499 ens33 Out IP bogon.8000 > bogon.55203: Flags [.], ack 484, win 126, length 0
08:19:53.786086 ens33 In  IP bogon.55204 > bogon.8000: Flags [P.], seq 1:432, ack 1, win 4106, length 431
08:19:53.786125 ens33 Out IP bogon.8000 > bogon.55204: Flags [.], ack 432, win 126, length 0
08:19:53.800467 ens33 Out IP bogon.8000 > bogon.55204: Flags [P.], seq 1:186, ack 432, win 126, length 185
08:19:53.801092 ens33 Out IP bogon.8000 > bogon.55204: Flags [FP.], seq 186:521, ack 432, win 126, length 335
08:19:53.801272 ens33 In  IP bogon.55204 > bogon.8000: Flags [.], ack 522, win 4104, length 0
08:19:53.803479 ens33 In  IP bogon.55204 > bogon.8000: Flags [F.], seq 432, ack 522, win 4104, length 0
08:19:53.803500 ens33 Out IP bogon.8000 > bogon.55204: Flags [.], ack 433, win 126, length 0

TCP三次握手

复制代码
08:19:53.620075 ens33 In  IP bogon.55203 > bogon.8000: Flags [S], seq 3574316881, win 64240, options [mss 1460,nop,wscale 8,nop,nop,sackOK], length 0
08:19:53.620109 ens33 Out IP bogon.8000 > bogon.55203: Flags [S.], seq 702696800, ack 3574316882, win 64240, options [mss 1460,nop,nop,sackOK,nop,wscale 9], length 0
08:19:53.620361 ens33 In  IP bogon.55203 > bogon.8000: Flags [.], ack 1, win 4106, length 0

TCP四次挥手

复制代码
08:19:53.625126 ens33 Out IP bogon.8000 > bogon.55203: Flags [FP.], seq 156:960, ack 483, win 126, length 804
08:19:53.625287 ens33 In  IP bogon.55203 > bogon.8000: Flags [.], ack 961, win 4102, length 0
08:19:53.627360 ens33 In  IP bogon.55203 > bogon.8000: Flags [F.], seq 483, ack 961, win 4102, length 0
08:19:53.627499 ens33 Out IP bogon.8000 > bogon.55203: Flags [.], ack 484, win 126, length 0

UDP抓包

复制代码
通用格式
time src > dst: flags udp length

抓包示例
08:28:03.262132 ens33 B   IP bogon.netbios-dgm > 192.168.200.255.netbios-dgm: UDP, length 201
相关推荐
xhbh6661 小时前
海康威视端口映射完全教程:NVR/摄像头远程访问配置与排
网络·智能路由器·端口转发·端口映射·流量端口转发·ssh端口转发·端口转发工具
lularible1 小时前
PTP协议精讲(4.5):编译运行与测试
网络·网络协议·开源·嵌入式·ptp
zzzsde1 小时前
【Linux】线程概念与控制(3):线程ID&&C++封装线程
linux·运维·服务器·开发语言·算法
消失的旧时光-19431 小时前
C 语言如何实现“面向对象”?—— 从 struct + 函数指针,到 Linux 内核设计思想
linux·c语言·开发语言
littlebigbar1 小时前
亲身体验AI智能体在实际项目中展现的核心能力
人工智能·selenium·测试工具
不做无法实现的梦~1 小时前
Linux 新手到日常运维操作指南
linux·运维·服务器
xingfujie1 小时前
第3章 安装 kubeadm/kubelet/kubectl
linux·云原生·容器·kubernetes·kubelet
Simon523141 小时前
HTTP、Cookie、Session知识小计
网络·网络协议·http
XS0301061 小时前
HTTP协议
网络·网络协议·http